Ejemplo n.º 1
0
        public async Task When_Binding_xLoad_Nested_With_ElementStub_LoadCount()
        {
            //
            // This test is the same as When_Binding_xLoad_Nested, but with explicit querying
            // of ElementStub instances. This prevents the GC from collecting instances, but allows
            // for counting Load/Unload counts properly.
            //

            var SUT = new Binding_xLoad_Nested();

            Assert.IsNull(SUT.tb01);
            Assert.IsNull(SUT.tb02);
            Assert.IsNull(SUT.tb03);
            Assert.IsNull(SUT.tb04);
            Assert.IsNull(SUT.tb05);
            Assert.IsNull(SUT.tb06);

            Assert.AreEqual(0, SUT.TopLevelVisiblity1GetCount);
            Assert.AreEqual(0, SUT.TopLevelVisiblity1SetCount);
            Assert.AreEqual(0, SUT.TopLevelVisiblity2GetCount);
            Assert.AreEqual(0, SUT.TopLevelVisiblity2SetCount);
            Assert.AreEqual(0, SUT.TopLevelVisiblity3GetCount);
            Assert.AreEqual(0, SUT.TopLevelVisiblity3SetCount);

            var grid = new Grid();

            TestServices.WindowHelper.WindowContent = grid;
            grid.Children.Add(SUT);

            Assert.IsNull(SUT.tb01);
            Assert.IsNull(SUT.tb02);
            Assert.IsNull(SUT.tb03);
            Assert.IsNull(SUT.tb04);
            Assert.IsNull(SUT.tb05);
            Assert.IsNull(SUT.tb06);

            Assert.AreEqual(2, SUT.TopLevelVisiblity1GetCount);
            Assert.AreEqual(0, SUT.TopLevelVisiblity1SetCount);

            var tb01Stub    = SUT.FindFirstChild <ElementStub>(e => e.Name == "tb01") !;
            var tb02Stub    = SUT.FindFirstChild <ElementStub>(e => e.Name == "tb02") !;
            var panel01Stub = SUT.FindFirstChild <ElementStub>(e => e.Name == "panel01") !;
            var panel03Stub = SUT.FindFirstChild <ElementStub>(e => e.Name == "panel03") !;

            var tb01StubChangedCount = 0;

            tb01Stub.MaterializationChanged += _ => tb01StubChangedCount++;

            var tb02StubChangedCount = 0;

            tb02Stub.MaterializationChanged += _ => tb02StubChangedCount++;

            var panel01StubChangedCount = 0;

            panel01Stub.MaterializationChanged += _ => panel01StubChangedCount++;

            var panel03StubChangedCount = 0;

            panel03Stub.MaterializationChanged += _ => panel03StubChangedCount++;

            SUT.TopLevelVisiblity1 = true;

            await Task.Yield();

            Assert.IsNotNull(SUT.tb01);
            Assert.IsNotNull(SUT.tb02);
            Assert.IsNull(SUT.tb03);
            Assert.IsNull(SUT.tb04);
            Assert.IsNull(SUT.tb05);
            Assert.IsNull(SUT.tb06);
            Assert.IsFalse(panel03Stub.Load);
            Assert.AreEqual(1, tb01StubChangedCount);
            Assert.AreEqual(1, tb02StubChangedCount);
            Assert.AreEqual(0, panel01StubChangedCount);

            SUT.TopLevelVisiblity2 = true;

            await Task.Yield();

            Assert.IsNotNull(SUT.tb01);
            Assert.IsNotNull(SUT.tb02);
            Assert.IsNotNull(SUT.tb03);
            Assert.IsNull(SUT.tb04);
            Assert.IsNotNull(SUT.tb05);
            Assert.IsNull(SUT.tb06);
            Assert.IsTrue(panel03Stub.Load);
            Assert.AreEqual(1, tb01StubChangedCount);
            Assert.AreEqual(1, tb02StubChangedCount);
            Assert.AreEqual(1, panel01StubChangedCount);

            var panel02Stub = SUT.FindFirstChild <ElementStub>(e => e.Name == "panel02") !;

            var panel02StubChangedCount = 0;

            panel02Stub.MaterializationChanged += _ => panel02StubChangedCount++;

            SUT.TopLevelVisiblity3 = true;

            await Task.Yield();

            Assert.IsNotNull(SUT.tb01);
            Assert.IsNotNull(SUT.tb02);
            Assert.IsNotNull(SUT.tb03);
            Assert.IsNotNull(SUT.panel02);
            Assert.IsNotNull(SUT.tb04);
            Assert.IsNotNull(SUT.tb05);
            Assert.IsNotNull(SUT.tb06);
            Assert.IsTrue(panel03Stub.Load);
            Assert.AreEqual(1, tb01StubChangedCount);
            Assert.AreEqual(1, tb02StubChangedCount);
            Assert.AreEqual(1, panel01StubChangedCount);
            Assert.AreEqual(1, panel02StubChangedCount);

            SUT.TopLevelVisiblity3 = false;

            await Task.Yield();

            Assert.IsNotNull(SUT.tb01);
            Assert.IsNotNull(SUT.tb02);
            Assert.IsNotNull(SUT.tb03);
            Assert.IsNotNull(SUT.panel01);
            await AssertIsNullAsync(() => SUT.panel02);
            await AssertIsNullAsync(() => SUT.tb04);

            Assert.IsNotNull(SUT.tb05);
            await AssertIsNullAsync(() => SUT.tb06);

            Assert.IsTrue(panel03Stub.Load);
            Assert.AreEqual(1, tb01StubChangedCount);
            Assert.AreEqual(1, tb02StubChangedCount);
            Assert.AreEqual(1, panel01StubChangedCount);
            Assert.AreEqual(2, panel02StubChangedCount);

            SUT.TopLevelVisiblity2 = false;

            await Task.Yield();

            Assert.IsNotNull(SUT.tb01);
            Assert.IsNotNull(SUT.tb02);
            await AssertIsNullAsync(() => SUT.panel01);
            await AssertIsNullAsync(() => SUT.tb03);
            await AssertIsNullAsync(() => SUT.panel02);
            await AssertIsNullAsync(() => SUT.tb04);
            await AssertIsNullAsync(() => SUT.tb06);

            Assert.IsFalse(panel03Stub.Load);
            await AssertIsNullAsync(() => SUT.panel03);
            await AssertIsNullAsync(() => SUT.tb05);

            Assert.AreEqual(1, tb01StubChangedCount);
            Assert.AreEqual(1, tb02StubChangedCount);
            Assert.AreEqual(2, panel01StubChangedCount);
            Assert.AreEqual(2, panel02StubChangedCount);

            SUT.TopLevelVisiblity1 = false;

            await Task.Yield();

            await AssertIsNullAsync(() => SUT.tb01);
            await AssertIsNullAsync(() => SUT.tb02);
            await AssertIsNullAsync(() => SUT.panel01);
            await AssertIsNullAsync(() => SUT.tb03);
            await AssertIsNullAsync(() => SUT.panel02);
            await AssertIsNullAsync(() => SUT.tb04);

            Assert.IsFalse(panel03Stub.Load);
            await AssertIsNullAsync(() => SUT.panel03);
            await AssertIsNullAsync(() => SUT.tb05);
            await AssertIsNullAsync(() => SUT.tb06);

            Assert.AreEqual(2, tb01StubChangedCount);
            Assert.AreEqual(2, tb02StubChangedCount);
            Assert.AreEqual(2, panel01StubChangedCount);
            Assert.AreEqual(2, panel02StubChangedCount);
        }
Ejemplo n.º 2
0
        public async Task When_Binding_xLoad_Nested()
        {
            var SUT = new Binding_xLoad_Nested();

            Assert.IsNull(SUT.tb01);
            Assert.IsNull(SUT.tb02);
            Assert.IsNull(SUT.tb03);
            Assert.IsNull(SUT.tb04);
            Assert.IsNull(SUT.tb05);
            Assert.IsNull(SUT.tb06);

            Assert.AreEqual(0, SUT.TopLevelVisiblity1GetCount);
            Assert.AreEqual(0, SUT.TopLevelVisiblity1SetCount);
            Assert.AreEqual(0, SUT.TopLevelVisiblity2GetCount);
            Assert.AreEqual(0, SUT.TopLevelVisiblity2SetCount);
            Assert.AreEqual(0, SUT.TopLevelVisiblity3GetCount);
            Assert.AreEqual(0, SUT.TopLevelVisiblity3SetCount);

            var grid = new Grid();

            TestServices.WindowHelper.WindowContent = grid;
            grid.Children.Add(SUT);

            Assert.IsNull(SUT.tb01);
            Assert.IsNull(SUT.tb02);
            Assert.IsNull(SUT.tb03);
            Assert.IsNull(SUT.tb04);
            Assert.IsNull(SUT.tb05);
            Assert.IsNull(SUT.tb06);
            Assert.AreEqual(2, SUT.TopLevelVisiblity1GetCount);
            Assert.AreEqual(0, SUT.TopLevelVisiblity1SetCount);

            SUT.TopLevelVisiblity1 = true;

            await Task.Yield();

            Assert.IsNotNull(SUT.tb01);
            Assert.IsNotNull(SUT.tb02);
            Assert.IsNull(SUT.tb03);
            Assert.IsNull(SUT.tb04);
            Assert.IsNull(SUT.tb05);
            Assert.IsNull(SUT.tb06);

            SUT.TopLevelVisiblity2 = true;

            await Task.Yield();

            Assert.IsNotNull(SUT.tb01);
            Assert.IsNotNull(SUT.tb02);
            Assert.IsNotNull(SUT.tb03);
            Assert.IsNull(SUT.tb04);
            Assert.IsNotNull(SUT.tb05);
            Assert.IsNull(SUT.tb06);

            SUT.TopLevelVisiblity3 = true;

            Assert.IsNotNull(SUT.tb01);
            Assert.IsNotNull(SUT.tb02);
            Assert.IsNotNull(SUT.tb03);
            Assert.IsNotNull(SUT.panel02);
            Assert.IsNotNull(SUT.tb04);
            Assert.IsNotNull(SUT.tb05);
            Assert.IsNotNull(SUT.tb06);

            SUT.TopLevelVisiblity3 = false;

            await Task.Yield();

            Assert.IsNotNull(SUT.tb01);
            Assert.IsNotNull(SUT.tb02);
            Assert.IsNotNull(SUT.tb03);
            Assert.IsNotNull(SUT.panel01);
            await AssertIsNullAsync(() => SUT.panel02);
            await AssertIsNullAsync(() => SUT.tb04);

            Assert.IsNotNull(SUT.tb05);
            await AssertIsNullAsync(() => SUT.tb06);

            SUT.TopLevelVisiblity2 = false;

            await Task.Yield();

            Assert.IsNotNull(SUT.tb01);
            Assert.IsNotNull(SUT.tb02);
            await AssertIsNullAsync(() => SUT.panel01);
            await AssertIsNullAsync(() => SUT.tb03);
            await AssertIsNullAsync(() => SUT.panel02);
            await AssertIsNullAsync(() => SUT.tb04);
            await AssertIsNullAsync(() => SUT.tb06);
            await AssertIsNullAsync(() => SUT.panel03);
            await AssertIsNullAsync(() => SUT.tb05);

            SUT.TopLevelVisiblity1 = false;

            await AssertIsNullAsync(() => SUT.tb01);
            await AssertIsNullAsync(() => SUT.tb02);
            await AssertIsNullAsync(() => SUT.panel01);
            await AssertIsNullAsync(() => SUT.tb03);
            await AssertIsNullAsync(() => SUT.panel02);
            await AssertIsNullAsync(() => SUT.tb04);
            await AssertIsNullAsync(() => SUT.panel03);
            await AssertIsNullAsync(() => SUT.tb05);
            await AssertIsNullAsync(() => SUT.tb06);
        }