ln.threading/ln.threading.tests/PromiseTests.cs

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";
})
;
}
}
}