public void StaticCompositeSubscription_Dispose()
        {
            var s1 = new MySub();
            var s2 = new MySub();
            var s3 = new MySub();
            var cs = new StaticCompositeSubscription(s1, s2, s3);

            Assert.AreEqual(0, s1.DisposedCount);
            Assert.AreEqual(0, s2.DisposedCount);
            Assert.AreEqual(0, s3.DisposedCount);
            Assert.AreEqual(3, cs.Count);

            Assert.IsTrue(new[] { s1, s2, s3 }.SequenceEqual(cs));
            Assert.IsTrue(new[] { s1, s2, s3 }.SequenceEqual(((IEnumerable)cs).CastNotSmart <ISubscription>()));

            cs.Dispose();

            Assert.AreEqual(1, s1.DisposedCount);
            Assert.AreEqual(1, s2.DisposedCount);
            Assert.AreEqual(1, s3.DisposedCount);
            Assert.AreEqual(3, cs.Count);

            Assert.IsTrue(new[] { s1, s2, s3 }.SequenceEqual(cs));
            Assert.IsTrue(new[] { s1, s2, s3 }.SequenceEqual(((IEnumerable)cs).CastNotSmart <ISubscription>()));

            // Dispose is idempotent
            cs.Dispose();
            Assert.AreEqual(1, s1.DisposedCount);
            Assert.AreEqual(1, s2.DisposedCount);
            Assert.AreEqual(1, s3.DisposedCount);
            Assert.AreEqual(3, cs.Count);
        }
        public void CompositeSubscription_Dispose()
        {
            var cs = new CompositeSubscription();

            var s1 = new MySub();

            cs.Add(s1);

            var s2 = new MySub();

            cs.Add(s2);

            var s3 = new MySub();

            cs.Add(s3);

            Assert.AreEqual(0, s1.DisposedCount);
            Assert.AreEqual(0, s2.DisposedCount);
            Assert.AreEqual(0, s3.DisposedCount);
            Assert.AreEqual(3, cs.Count);

            Assert.IsTrue(new[] { s1, s2, s3 }.SequenceEqual(cs));
            Assert.IsTrue(new[] { s1, s2, s3 }.SequenceEqual(((IEnumerable)cs).CastNotSmart <ISubscription>()));

            cs.Dispose();

            Assert.AreEqual(1, s1.DisposedCount);
            Assert.AreEqual(1, s2.DisposedCount);
            Assert.AreEqual(1, s3.DisposedCount);
            Assert.AreEqual(0, cs.Count);

            Assert.IsTrue(Enumerable.Empty <ISubscription>().SequenceEqual(cs));
            Assert.IsTrue(Enumerable.Empty <ISubscription>().SequenceEqual(((IEnumerable)cs).CastNotSmart <ISubscription>()));

            var s4 = new MySub();

            cs.Add(s4);

            Assert.AreEqual(1, s4.DisposedCount);
            Assert.AreEqual(0, cs.Count);

            Assert.IsTrue(Enumerable.Empty <ISubscription>().SequenceEqual(cs));
            Assert.IsTrue(Enumerable.Empty <ISubscription>().SequenceEqual(((IEnumerable)cs).CastNotSmart <ISubscription>()));

            cs.Dispose();

            Assert.AreEqual(1, s1.DisposedCount);
            Assert.AreEqual(1, s2.DisposedCount);
            Assert.AreEqual(1, s3.DisposedCount);
            Assert.AreEqual(1, s4.DisposedCount);
            Assert.AreEqual(0, cs.Count);

            Assert.IsTrue(Enumerable.Empty <ISubscription>().SequenceEqual(cs));
            Assert.IsTrue(Enumerable.Empty <ISubscription>().SequenceEqual(((IEnumerable)cs).CastNotSmart <ISubscription>()));
        }
 internal void TopDeals()
 {
     User.Click();
     MySub.Click();
     Exper.Click();
     Bottle.Click();
     Booknow.Click();
     Promotion.Click();
     Save.Click();
     ValidateMysub();
 }
        public void StaticCompositeSubscription_AddRemove_Throws()
        {
            var cs = new StaticCompositeSubscription();

            var s1 = new MySub();

            Assert.ThrowsException <InvalidOperationException>(() => cs.Add(s1));

            var cs2 = new StaticCompositeSubscription(s1);

            Assert.ThrowsException <InvalidOperationException>(() => cs.Remove(s1));
        }
예제 #5
0
        public void StableCompositeSubscription_AddRange()
        {
            var cs = new StableCompositeSubscription();

            var s1 = new MySub();

            cs.AddRange(new ISubscription[] { s1 });
            Start(cs);
            Assert.AreEqual(1, s1.StartCount);
            Assert.AreEqual(1, cs.Count);

            var s2 = new MySub();

            cs.AddRange(new ISubscription[] { s2 });
            Start(cs);
            Assert.AreEqual(2, s1.StartCount);
            Assert.AreEqual(1, s2.StartCount);
            Assert.AreEqual(2, cs.Count);

            cs.Remove(s1);
            Assert.AreEqual(1, s1.DisposedCount);
            Assert.AreEqual(1, cs.Count);

            Start(cs);
            Assert.AreEqual(2, s1.StartCount);
            Assert.AreEqual(2, s2.StartCount);

            cs.Remove(s2);
            Assert.AreEqual(1, s1.DisposedCount);
            Assert.AreEqual(1, s2.DisposedCount);
            Assert.AreEqual(0, cs.Count);

            Start(cs);
            Assert.AreEqual(2, s1.StartCount);
            Assert.AreEqual(2, s2.StartCount);

            var s3 = new MySub();

            cs.AddRange(new ISubscription[] { s3 });
            Start(cs);
            Assert.AreEqual(2, s1.StartCount);
            Assert.AreEqual(2, s2.StartCount);
            Assert.AreEqual(1, s3.StartCount);
            Assert.AreEqual(1, cs.Count);

            cs.AddRange(Array.Empty <ISubscription>());
            Start(cs);
            Assert.AreEqual(2, s1.StartCount);
            Assert.AreEqual(2, s2.StartCount);
            Assert.AreEqual(2, s3.StartCount);
            Assert.AreEqual(1, cs.Count);
        }
        public void StaticCompositeSubscription_Start()
        {
            var s1 = new MySub();
            var s2 = new MySub();
            var s3 = new MySub();
            var cs = new StaticCompositeSubscription(s1, s2, s3);

            Assert.AreEqual(0, s1.StartCount);
            Assert.AreEqual(0, s2.StartCount);
            Assert.AreEqual(0, s3.StartCount);
            Start(cs);
            Assert.AreEqual(1, s1.StartCount);
            Assert.AreEqual(1, s2.StartCount);
            Assert.AreEqual(1, s3.StartCount);
        }
예제 #7
0
        static void Main(string[] args)
        {
            Console.BackgroundColor = ConsoleColor.White;
            Console.ForegroundColor = ConsoleColor.Red;
            class1 c1 = new class1();
            Mydel  d1 = new Mydel(c1.display);

            d1();
            MyAdd d2 = new MyAdd(c1.sum);

            d2(10, 20);
            MySub d3  = new MySub(c1.sub);
            int   sub = d3(10, 2);

            Console.WriteLine("Subtraction = " + sub);
            Console.ReadLine();
        }
        public void CompositeSubscription_AddRemove()
        {
            var cs = new CompositeSubscription();

            var s1 = new MySub();

            cs.Add(s1);
            Start(cs);
            Assert.AreEqual(1, s1.StartCount);
            Assert.AreEqual(1, cs.Count);

            var s2 = new MySub();

            cs.Add(s2);
            Start(cs);
            Assert.AreEqual(2, s1.StartCount);
            Assert.AreEqual(1, s2.StartCount);
            Assert.AreEqual(2, cs.Count);

            cs.Remove(s1);
            Assert.AreEqual(1, s1.DisposedCount);
            Assert.AreEqual(1, cs.Count);

            Start(cs);
            Assert.AreEqual(2, s1.StartCount);
            Assert.AreEqual(2, s2.StartCount);

            cs.Remove(s2);
            Assert.AreEqual(1, s1.DisposedCount);
            Assert.AreEqual(1, s2.DisposedCount);
            Assert.AreEqual(0, cs.Count);

            Start(cs);
            Assert.AreEqual(2, s1.StartCount);
            Assert.AreEqual(2, s2.StartCount);

            var s3 = new MySub();

            cs.Add(s3);
            Start(cs);
            Assert.AreEqual(2, s1.StartCount);
            Assert.AreEqual(2, s2.StartCount);
            Assert.AreEqual(1, s3.StartCount);
            Assert.AreEqual(1, cs.Count);
        }