Mercurial > pub > ImplabNet
view Implab.Test/AsyncTests.cs @ 4:381095ad0a69
Implab.Fx: implemented animation object
Implab.Fx: implemented transparency animation helper
author | cin |
---|---|
date | Tue, 17 Sep 2013 04:27:30 +0400 |
parents | 279591fb4df3 |
children | aa33d0bb8c0c |
line wrap: on
line source
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 ()); } } }