116 lines
3.1 KiB
C#
116 lines
3.1 KiB
C#
using System;
|
|
using NUnit.Framework;
|
|
|
|
namespace ln.threading.tests
|
|
{
|
|
public class PromiseTests
|
|
{
|
|
[Test]
|
|
public void Test_A_Promises()
|
|
{
|
|
Promise<int> p = new Promise<int>((resolve,reject)=>{
|
|
resolve(1234);
|
|
});
|
|
|
|
Assert.AreEqual(1234, p.Value);
|
|
|
|
Assert.AreEqual(
|
|
33,
|
|
new Promise<string>((resolve,reject)=>{
|
|
resolve("resolved");
|
|
})
|
|
.Then((value)=>{
|
|
return 4;
|
|
})
|
|
.Then<int>((value)=>{
|
|
throw new Exception("TestException");
|
|
})
|
|
.Then((value)=>{
|
|
return value + 16;
|
|
})
|
|
.Catch((e)=>{
|
|
return 32;
|
|
})
|
|
.Then((value)=>{
|
|
return value + 1;
|
|
})
|
|
.Then((value)=>{
|
|
value ++;
|
|
})
|
|
.Value
|
|
);
|
|
|
|
Assert.AreEqual(
|
|
23,
|
|
new Promise<string>((resolve,reject)=>{
|
|
resolve("resolved");
|
|
})
|
|
.Then((value)=>{
|
|
return 4;
|
|
})
|
|
.Then<int>((value)=>{
|
|
return value + 2;
|
|
})
|
|
.Then((value)=>{
|
|
return value + 16;
|
|
})
|
|
.Catch((e)=>{
|
|
return 32;
|
|
})
|
|
.Then((value)=>{
|
|
return value + 1;
|
|
})
|
|
.Then((value)=>{
|
|
value ++;
|
|
})
|
|
.Value
|
|
);
|
|
}
|
|
|
|
[Test]
|
|
public void Test_B_Promises()
|
|
{
|
|
Assert.AreEqual(
|
|
"The magic result is 129",
|
|
createTestPromise(1).Value
|
|
);
|
|
Assert.AreEqual(
|
|
"The magic result is 130",
|
|
createTestPromise(2).Value
|
|
);
|
|
Assert.AreEqual(
|
|
"The magic result is 131",
|
|
createTestPromise(3).Value
|
|
);
|
|
Assert.AreEqual(
|
|
"The magic result is 132",
|
|
createTestPromise(4).Value
|
|
);
|
|
Assert.AreEqual(
|
|
"sorry, I have no result for you",
|
|
createTestPromise(11).Value
|
|
);
|
|
}
|
|
|
|
public Promise<string> createTestPromise(int i)
|
|
{
|
|
return new Promise<int>((resolve, reject)=>{
|
|
resolve(i);
|
|
})
|
|
.Then((n)=>{
|
|
if (n== 11)
|
|
throw new Exception("I don't like 11");
|
|
return n + 128;
|
|
})
|
|
.Then(
|
|
(n)=>{
|
|
return string.Format("The magic result is {0}", n);
|
|
},
|
|
(e)=>{
|
|
return "sorry, I have no result for you";
|
|
})
|
|
;
|
|
}
|
|
|
|
}
|
|
} |