123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reactive.Concurrency;
- using System.Reactive.Linq;
- using System.Reflection;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using PortableLibraryProfile78_NuGet;
- namespace ConsoleApp45_NuGet
- {
- static class Program
- {
- static void Main(string[] args)
- {
- var tests = typeof(Program).GetMethods(BindingFlags.Static | BindingFlags.NonPublic).Where(m => m.IsDefined(typeof(TestAttribute), false));
- foreach (var t in tests)
- {
- Console.WriteLine(t.Name);
- var e = new ManualResetEvent(false);
- var res = false;
- var done = new Action<bool>(b =>
- {
- res = b;
- e.Set();
- });
- t.Invoke(null, new[] { done });
- e.WaitOne();
- Console.WriteLine(res ? "Succeeded!" : "Failed!");
- Console.WriteLine();
- }
- }
- [Test]
- static void Clock(Action<bool> done)
- {
- var clock = Observable.Interval(TimeSpan.FromSeconds(1)).Select(_ => DateTime.Now);
- var res = clock.Take(5);
- res.Subscribe(now => { Console.WriteLine(now); }, () => done(true));
- }
- [Test]
- static void Portable(Action<bool> done)
- {
- var clock = MyExtensions.GetClock();
- var res = clock.Take(5);
- res.Subscribe(now => { Console.WriteLine(now); }, () => done(true));
- }
- [Test]
- static void Providers(Action<bool> done)
- {
- var res = Qbservable.Range(Qbservable.Provider, 0, 10, Scheduler.Default).Zip(Observable.Range(0, 10, Scheduler.Default).AsQbservable().Where(_ => true).AsObservable(), (x, y) => x - y).All(d => d == 0);
- res.Subscribe(done);
- }
- [Test]
- static void Remoting(Action<bool> done)
- {
- var d = AppDomain.CreateDomain("RemotingTest");
- var xs = Observable.Range(0, 10, Scheduler.Default).Remotable();
- var dn = new Done(done);
- d.SetData("xs", xs);
- d.SetData("dn", dn);
- d.DoCallBack(() =>
- {
- var ys = (IObservable<int>)AppDomain.CurrentDomain.GetData("xs");
- var res = ys.ToArray().Wait();
- var b = res.SequenceEqual(Enumerable.Range(0, 10));
- ((Done)AppDomain.CurrentDomain.GetData("dn")).Set(b);
- });
- }
- class Done : MarshalByRefObject
- {
- private readonly Action<bool> _done;
- public Done(Action<bool> done)
- {
- _done = done;
- }
- public void Set(bool result)
- {
- _done(result);
- }
- public override object InitializeLifetimeService()
- {
- return null;
- }
- }
- }
- [AttributeUsage(AttributeTargets.Method)]
- class TestAttribute : Attribute
- {
- }
- }
|