コード例 #1
0
    public async Task Test2()
    {
        // ARRANGE
        var dt = new DisposeTester(output);

        // ACT
        DelayedDisposer.SafelyDispose((IDisposable)dt);

        // ASSERT
        dt.CheckNegative();

        await dt.WaitForDisposal();

        dt.Check();
    }
コード例 #2
0
        public void RefreshDisposesExistingObjectFactory_SPRNET479()
        {
            string tmp = typeof(DestroyTester).FullName;

            Console.WriteLine(tmp);

            IApplicationContext ctx =
                new XmlApplicationContext("assembly://Spring.Core.Tests/Spring.Context.Support/objects.xml");

            DestroyTester destroyTester = (DestroyTester)ctx.GetObject("destroyTester");
            DisposeTester disposeTester = (DisposeTester)ctx.GetObject("disposeTester");

            Assert.IsFalse(destroyTester.IsDestroyed);
            Assert.IsFalse(disposeTester.IsDisposed);

            ((IConfigurableApplicationContext)ctx).Refresh();

            Assert.IsTrue(destroyTester.IsDestroyed);
            Assert.IsTrue(disposeTester.IsDisposed);
        }
コード例 #3
0
        public void DisposeRecipient()
        {
            var target = new Messenger();
            var tester = new DisposeTester(target);

            tester.Register();

            int c = target.Publish(Message.Empty);

            Assert.AreEqual(1, c);

            Assert.IsTrue(tester.Received);

            tester.Received = false;
            tester          = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();

            c = target.Publish(Message.Empty);
            Assert.AreEqual(0, c);
        }
コード例 #4
0
    public async Task Test1()
    {
        // ARRANGE
        output.WriteLine("Starting timed test...");
        var dt = new DisposeTester(output);

        // ACT
        output.WriteLine("Adding to safe disposer...");
        DelayedDisposer.SafelyDispose(dt);

        // ASSERT
        output.WriteLine("Checking negative...");
        dt.CheckNegative();

        output.WriteLine("Waiting for disposal...");
        await dt.WaitForDisposal();

        output.WriteLine("Checking positive...");
        dt.Check();
        output.WriteLine("All done. Test should not hang anymore.");
    }
コード例 #5
0
    public async Task Test5()
    {
        // ARRANGE
        var dt  = new DisposeTester(output);
        var dt2 = new DisposeTester(output);
        var dtt = dt;

        // ACT
        DelayedDisposer.AtomicExchange(ref dt, dt2);

        // ASSERT
        dtt.CheckNegative();
        dt2.CheckNegative();
        dt.CheckNegative();

        await dtt.WaitForDisposal();

        dtt.Check();
        dt2.CheckNegative();
        dt.CheckNegative();
        Assert.Equal(dt2, dt);
    }
コード例 #6
0
    public void DisposeRecipient()
    {
      var target = new Messenger();
      var tester = new DisposeTester(target);
      tester.Register();

      int c = target.Publish(Message.Empty);
      Assert.AreEqual(1, c);

      Assert.IsTrue(tester.Received);

      tester.Received = false;
      tester = null;
      GC.Collect();
      GC.WaitForPendingFinalizers();

      c = target.Publish(Message.Empty);
      Assert.AreEqual(0, c);
    }