##// END OF EJS Templates
Added utility class for safe disposing methods....
Added utility class for safe disposing methods. Added event fireing while promise is cancelled (needs some more work)

File last commit:

r0:279591fb4df3 default
r1:6fb3b01ee971 default
Show More
AsyncTests.cs
101 lines | 1.9 KiB | text/x-csharp | CSharpLexer
user@factory.site.local
initial commit...
r0 using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Implab;
using System.Reflection;
using System.Threading;
namespace Implab.Tests
{
[TestClass]
public class AsyncTests
{
[TestMethod]
public void ResolveTest ()
{
int res = -1;
var p = new Promise<int> ();
p.Then (x => res = x);
p.Resolve (100);
Assert.AreEqual (res, 100);
}
[TestMethod]
public void RejectTest ()
{
int res = -1;
Exception err = null;
var p = new Promise<int> ();
p.Then (x => res = x, e => err = e);
p.Reject (new ApplicationException ("error"));
Assert.AreEqual (res, -1);
Assert.AreEqual (err.Message, "error");
}
[TestMethod]
public void JoinSuccessTest ()
{
var p = new Promise<int> ();
p.Resolve (100);
Assert.AreEqual (p.Join (), 100);
}
[TestMethod]
public void JoinFailTest ()
{
var p = new Promise<int> ();
p.Reject (new ApplicationException ("failed"));
try {
p.Join ();
throw new ApplicationException ("WRONG!");
} catch (TargetInvocationException err) {
Assert.AreEqual (err.InnerException.Message, "failed");
} catch {
Assert.Fail ("Got wrong excaption");
}
}
[TestMethod]
public void MapTest ()
{
var p = new Promise<int> ();
var p2 = p.Map (x => x.ToString ());
p.Resolve (100);
Assert.AreEqual (p2.Join (), "100");
}
[TestMethod]
public void ChainTest ()
{
var p1 = new Promise<int> ();
var p3 = p1.Chain (x => {
var p2 = new Promise<string> ();
p2.Resolve (x.ToString ());
return p2;
});
p1.Resolve (100);
Assert.AreEqual (p3.Join (), "100");
}
[TestMethod]
public void PoolTest ()
{
var pid = Thread.CurrentThread.ManagedThreadId;
var p = AsyncPool.Invoke (() => {
return Thread.CurrentThread.ManagedThreadId;
});
Assert.AreNotEqual (pid, p.Join ());
}
}
}