示例#1
0
        public void Match_AssertSeveralFields_SuccessfulMatch()
        {
            // arrange
            TestChild  testChild  = TestDataBuilder.TestChildJames().Build();
            TestPerson testPerson = TestDataBuilder.TestPersonMarkWalton()
                                    .AddChild(testChild)
                                    .Build();

            testPerson.Id                       = Guid.NewGuid();
            testPerson.CreationDate             = DateTime.UtcNow;
            testPerson.Address.StreetNumber     = -58;
            testPerson.Address.Country          = null;
            testPerson.Relatives[0].Address.Plz = null;

            // act & assert
            Snapshot.Match <TestPerson>(testPerson,
                                        matchOption => matchOption
                                        .Assert(fieldOption =>
                                                Assert.NotEqual(Guid.Empty, fieldOption.Field <Guid>("Id")))
                                        .Assert(fieldOption =>
                                                Assert.NotEqual(DateTime.UtcNow.AddSeconds(5), fieldOption.Field <DateTime>("CreationDate")))
                                        .Assert(fieldOption =>
                                                Assert.Equal(-58, fieldOption.Field <int>("Address.StreetNumber")))
                                        .Assert(fieldOption =>
                                                testChild.Should().BeEquivalentTo(fieldOption.Field <TestChild>("Children[3]")))
                                        .Assert(fieldOption =>
                                                Assert.Null(fieldOption.Field <TestCountry>("Address.Country")))
                                        .Assert(fieldOption =>
                                                Assert.Null(fieldOption.Field <TestCountry>("Relatives[0].Address.Plz"))));
        }
示例#2
0
        public void Match_LargeOverallTest_SuccessfulMatch()
        {
            // arrange
            string snapshotName = nameof(SnapshotTests) + "." +
                                  nameof(Match_LargeOverallTest_SuccessfulMatch);

            TestChild  testChild  = TestDataBuilder.TestChildJames().Build();
            TestPerson testPerson = TestDataBuilder.TestPersonMarkWalton()
                                    .AddChild(testChild)
                                    .Build();

            testPerson.Id                       = Guid.NewGuid();
            testPerson.CreationDate             = DateTime.UtcNow;
            testPerson.Address.StreetNumber     = -58;
            testPerson.Address.Country          = null;
            testPerson.Relatives[0].Address.Plz = null;

            // act & assert
            Snapshot.Match(testPerson, snapshotName,
                           matchOption => matchOption
                           .Assert(option => Assert.NotEqual(Guid.Empty, option.Field <Guid>("Id")))
                           .IgnoreField <DateTime>("CreationDate")
                           .Assert(option => Assert.Equal(-58, option.Field <int>("Address.StreetNumber")))
                           .Assert(option => testChild.Should().BeEquivalentTo(option.Field <TestChild>("Children[3]")))
                           .IgnoreField <TestCountry>("Address.Country")
                           .Assert(option => Assert.Null(option.Field <TestCountry>("Relatives[0].Address.Plz"))));
        }
示例#3
0
        public void TestInherit()
        {
            Serializer ser = new Regulus.Serialization.Dynamic.Serializer();


            TestGrandson test = new TestGrandson();

            test.Data = 100;
            TestChild testChild = test as TestChild;

            testChild.Data = 1;
            TestParent testParent = test as TestParent;

            testParent.Data = 33;

            byte[]       buf       = ser.ObjectToBuffer(test);
            TestGrandson val       = (TestGrandson)ser.BufferToObject(buf);
            TestParent   valParent = val as TestParent;
            TestChild    child     = val as TestChild;


            Assert.AreEqual(100, val.Data);
            Assert.AreEqual(1, child.Data);
            Assert.AreEqual(33, valParent.Data);
        }
 public void TestLifetimeChangeOnCallback()
 {
     AddStep("Add children", () =>
     {
         TestChild a;
         container.AddInternal(a = new TestChild(0, 1));
         container.OnCrossing   += e =>
         {
             var kind      = e.Kind;
             var direction = e.Direction;
             if (kind == LifetimeBoundaryKind.End && direction == LifetimeBoundaryCrossingDirection.Forward)
             {
                 a.LifetimeEnd = 2;
             }
             else if (kind == LifetimeBoundaryKind.Start && direction == LifetimeBoundaryCrossingDirection.Backward)
             {
                 a.LifetimeEnd = 1;
             }
             else if (kind == LifetimeBoundaryKind.Start && direction == LifetimeBoundaryCrossingDirection.Forward)
             {
                 a.LifetimeStart = a.LifetimeStart == 0 ? 1 : 0;
             }
         };
     });
     skipTo(1);
     validate(1);
     skipTo(-1);
     validate(0);
     skipTo(0);
     validate(0);
     skipTo(1);
     validate(1);
 }
        public void SimpleWrapperTest()
        {
            TestHusband husband = new TestHusband();
            TestChild   child1  = new TestChild {
                Id = 1, Husband = husband
            };

            //TestChild child2 = new TestChild { Id = 2, Husband = husband };

            husband.Children.Add(child1);
            //husband.Children.Add(child2);

            TestHusbandWrapper husbandWrapper = new TestHusbandWrapper(husband);
            TestChildWrapper   childWrapper1  = husbandWrapper.Children.First(x => Equals(x.Model, child1));

            Assert.IsFalse(husbandWrapper.IsChanged);


            string oldChildsName = childWrapper1.Name;

            childWrapper1.Name = oldChildsName + "NewName";
            Assert.IsTrue(husbandWrapper.IsChanged);

            childWrapper1.Name = oldChildsName;
            Assert.IsFalse(husbandWrapper.IsChanged);


            husbandWrapper.Children.Remove(childWrapper1);
            Assert.IsTrue(husbandWrapper.IsChanged);
            husbandWrapper.Children.Add(childWrapper1);
            Assert.IsFalse(husbandWrapper.IsChanged);
        }
示例#6
0
        public void Match_IgnoreScalarNullStringField_SuccessfulIgnored()
        {
            // arrange
            TestChild testChild = TestDataBuilder.TestChildNull()
                                  .Build();

            // act & assert
            Snapshot.Match <TestChild>(
                testChild, matchOptions => matchOptions.IgnoreField <string>("Name"));
        }
示例#7
0
        public void Match_ObjectsArraySnapshot_SuccessfulMatch()
        {
            // arrange
            TestPerson markWalton      = TestDataBuilder.TestPersonMarkWalton().Build();
            TestPerson sandraSchneider = TestDataBuilder.TestPersonSandraSchneider().Build();
            TestChild  hanna           = TestDataBuilder.TestChildHanna().Build();

            // act & assert
            Snapshot.Match(new object[] { markWalton, sandraSchneider, hanna });
        }
        public void TestAddLoadedDrawable()
        {
            TestChild child = null;

            AddStep("add child", () => container.AddInternal(child = new TestChild(0, 2)));
            skipTo(1);
            AddStep("remove child", () => container.RemoveInternal(child));
            AddStep("add same child", () => container.AddInternal(child));
            validate(1);
        }
示例#9
0
    // Use this for initialization
    void Start()
    {
        TestChild test = new TestChild();

        test.Kansu();
        Debug.Log(test.sum(5, 6));
        TestChild test2 = new TestChild();

        test2.number = 20;
        test2.Kansu();
    }
示例#10
0
        public void ComplexWrapperAcceptAndReject()
        {
            TestWrappersFactory testWrappersFactory = new TestWrappersFactory();

            TestHusband husband = new TestHusband();
            TestWife    wife1   = new TestWife();
            TestChild   child1  = new TestChild {
                Husband = husband, Wife = wife1
            };
            TestChild child2 = new TestChild {
                Husband = husband, Wife = wife1
            };

            wife1.Husband = husband;
            husband.Wife  = wife1;
            husband.Children.Add(child1);
            husband.Children.Add(child2);

            TestHusbandWrapper husbandWrapper = testWrappersFactory.GetWrapper <TestHusbandWrapper>(husband);

            Assert.IsFalse(husbandWrapper.IsChanged);

            TestChildWrapper childWrapper1 = husbandWrapper.Children.First(x => Equals(x.Model, child1));

            string oldChildsName = childWrapper1.Name;

            childWrapper1.Name = oldChildsName + "NEW";
            husbandWrapper.RejectChanges();
            Assert.AreEqual(childWrapper1.Name, oldChildsName);

            childWrapper1.Name = oldChildsName + "NEW";
            husbandWrapper.AcceptChanges();
            Assert.AreEqual(childWrapper1.Name, oldChildsName + "NEW");
            Assert.AreEqual(childWrapper1.NameOriginalValue, oldChildsName + "NEW");

            TestWifeWrapper wifeWrapper = husbandWrapper.Wife;

            husbandWrapper.Wife = null;
            Assert.AreEqual(husbandWrapper.Wife, null);
            husbandWrapper.RejectChanges();
            Assert.AreEqual(husbandWrapper.Wife, wifeWrapper);

            TestWifeWrapper wifeWrapper2 = testWrappersFactory.GetWrapper <TestWifeWrapper>(new TestWife());

            husbandWrapper.Wife = wifeWrapper2;
            husbandWrapper.AcceptChanges();
            Assert.AreEqual(wifeWrapper2.Model, husbandWrapper.Model.Wife);

            husbandWrapper.Children.Remove(childWrapper1);
            husbandWrapper.RejectChanges();
            Assert.IsTrue(husbandWrapper.Children.Contains(childWrapper1));
            Assert.IsFalse(husbandWrapper.IsChanged);
        }
示例#11
0
        public void Test_TojsonFull()
        {
            var tp = new TestChild();

            tp.num      = 5;
            tp.childNum = 10;
            var json = JsonConverter.ToJson_full(tp);
            var data = JsonConverter.FromJson_full <TestChild>(json);

            Assert.AreEqual(5, data.num);
            Assert.AreEqual(10, (data as TestChild).childNum);
        }
示例#12
0
        public void TestResolveInheritedDependency()
        {
            var container = new GeckoContainer();
            var test      = new Test();

            container.RegisterInstance(test);

            var testChild = new TestChild();

            container.BuildUp(testChild);

            Assert.AreEqual(test, testChild.TestDep);
        }
示例#13
0
        public void Match_IgnoreScalarNullStringField_SuccessfulIgnored()
        {
            // arrange
            string snapshotName = nameof(SnapshotTests) + "." +
                                  nameof(Match_IgnoreScalarNullStringField_SuccessfulIgnored);

            TestChild testChild = TestDataBuilder.TestChildNull()
                                  .Build();

            // act & assert
            Snapshot.Match(testChild, snapshotName,
                           matchOptions => matchOptions.IgnoreField <string>("Name"));
        }
示例#14
0
        public void Match_ObjectsArraySnapshot_SuccessfulMatch()
        {
            // arrange
            string snapshotName = nameof(SnapshotTests) + "." +
                                  nameof(Match_ObjectsArraySnapshot_SuccessfulMatch);

            TestPerson markWalton      = TestDataBuilder.TestPersonMarkWalton().Build();
            TestPerson sandraSchneider = TestDataBuilder.TestPersonSandraSchneider().Build();
            TestChild  hanna           = TestDataBuilder.TestChildHanna().Build();

            // act & assert
            Snapshot.Match(new object[] { markWalton, sandraSchneider, hanna }, snapshotName);
        }
        public void ListTest1()
        {
            var list = new ChildrenCollection <TestChild, ChildrenCollectionTests>(this);

            var item1 = new TestChild();

            Assert.IsNull(item1.LogicalParent);

            list.Add(item1);
            Assert.AreSame(item1.LogicalParent, this);

            list.Remove(item1);
            Assert.IsNull(item1.LogicalParent);
        }
示例#16
0
        public void TestStorageList()
        {
            _ = new DC(null);

            var parent      = new TestParent("Parent", isStoring: false);
            var storageList = new StorageList <TestChild>();

            assert(storageList, "", "");

            var child0 = new TestChild("Child0", parent, isStoring: false);

            storageList.Add(child0);
            assert(storageList,
                   @"",
                   @"Key: noKey, Text: Child0, Parent: noKey, Parent;");

            var child1 = new TestChild("Child1", parent, isStoring: false);

            storageList.Add(child1);
            assert(storageList,
                   @"",
                   @"Key: noKey, Text: Child0, Parent: noKey, Parent;
          Key: noKey, Text: Child1, Parent: noKey, Parent;");

            parent.Store();
            assert(storageList,
                   @"",
                   @"Key: noKey, Text: Child0, Parent: 0, Parent;
          Key: noKey, Text: Child1, Parent: 0, Parent;");

            child0.Store();
            assert(storageList,
                   @"Key: 0, Text: Child0, Parent: 0, Parent;",
                   @"Key: 0, Text: Child0, Parent: 0, Parent;
          Key: noKey, Text: Child1, Parent: 0, Parent;");

            child1.Store();
            assert(storageList,
                   @"Key: 0, Text: Child0, Parent: 0, Parent;
          Key: 1, Text: Child1, Parent: 0, Parent;",
                   @"Key: 0, Text: Child0, Parent: 0, Parent;
          Key: 1, Text: Child1, Parent: 0, Parent;");

            child0.Release();
            assert(storageList,
                   @"Key: 1, Text: Child1, Parent: 0, Parent;",
                   @"Key: noKey, Text: Child0, Parent: 0, Parent;
          Key: 1, Text: Child1, Parent: 0, Parent;");
        }
示例#17
0
        public override void Load(Call call, TabModel model)
        {
            var items = new ItemCollection <TestChild>();

            for (int i = 0; i < 2; i++)
            {
                var item = new TestChild()
                {
                };

                items.Add(item);
            }

            model.Items = items;
        }
示例#18
0
        public void TestChildCollectionList1()
        {
            if (System.Diagnostics.Debugger.IsAttached)
            {
                return;
            }

            var list = new ChildrenCollection <TestChild, ChildrenCollectionTests>(this);

            Assert.Throws <ArgumentNullException>(() => list.Add(null));

            var item1 = new TestChild();

            Assert.IsNull(item1.LogicalParent);
            Assert.AreEqual(-1, item1.LogicalIndex);

            var item2 = new TestChild();

            Assert.IsNull(item2.LogicalParent);
            Assert.AreEqual(-1, item2.LogicalIndex);

            list.Add(item1);
            Assert.AreSame(this, item1.LogicalParent);
            Assert.AreEqual(0, item1.LogicalIndex);

            Assert.Throws <ArgumentException>(() => list.Add(item1));

            list.Remove(item1);
            Assert.IsNull(item1.LogicalParent);
            Assert.AreEqual(-1, item1.LogicalIndex);

            list.Add(item1);
            Assert.AreSame(this, item1.LogicalParent);
            Assert.AreEqual(0, item1.LogicalIndex);

            list.Insert(0, item2);
            Assert.AreSame(this, item2.LogicalParent);
            Assert.AreEqual(0, item2.LogicalIndex);
            Assert.AreSame(this, item1.LogicalParent);
            Assert.AreEqual(1, item1.LogicalIndex);

            list.RemoveAt(0);
            Assert.IsNull(item2.LogicalParent);
            Assert.AreEqual(-1, item2.LogicalIndex);
            Assert.AreSame(this, item1.LogicalParent);
            Assert.AreEqual(0, item1.LogicalIndex);
        }
示例#19
0
        public void TestDCRestore()
        {
            var directoryInfo = new DirectoryInfo("TestCsv");
            var csvConfig     = new CsvConfig(directoryInfo.FullName, reportException: reportException);

            directoryInfo.Refresh();
            if (directoryInfo.Exists)
            {
                directoryInfo.Delete(recursive: true);
                directoryInfo.Refresh();
            }

            directoryInfo.Create();
            directoryInfo.Refresh();

            try {
                var dc          = new DC(csvConfig);
                var testParent0 = new TestParent("TestParent0");
                var testParent1 = new TestParent("TestParent1");
                var testParent2 = new TestParent("TestParent2");
                var testChild0  = new TestChild("TestChild0", testParent0);
                var testChild1  = new TestChild("TestChild1", testParent2);
                var testChild2  = new TestChild("TestChild2", testParent0);
                testChild1.Release();
                testParent2.Release();
                testChild2.Update("TestChild2 updated", testParent1);
                var expectedTestParent0 = testParent0.ToString();
                var expectedTestParent1 = testParent1.ToString();
                var expectedTestChild0  = testChild0.ToString();
                var expectedTestChild2  = testChild2.ToString();
                dc.Dispose();
                File.Delete(directoryInfo.FullName + @"\TestParent.csv");
                File.Move(directoryInfo.FullName + @"\TestParent.bak", directoryInfo.FullName + @"\TestParent.csv");
                File.Delete(directoryInfo.FullName + @"\TestChild.csv");
                File.Move(directoryInfo.FullName + @"\TestChild.bak", directoryInfo.FullName + @"\TestChild.csv");

                dc = new DC(csvConfig);
                Assert.AreEqual(expectedTestParent0, dc.TestParents[0].ToString());
                Assert.AreEqual(expectedTestParent1, dc.TestParents[1].ToString());
                Assert.AreEqual(expectedTestChild0, dc.TestChildren[0].ToString());
                Assert.AreEqual(expectedTestChild2, dc.TestChildren[2].ToString());
            } finally {
                DC.Data?.Dispose();
            }
        }
示例#20
0
        public void TestChildCollectionList1()
        {
            var list = new ChildrenCollection <TestChild, ChildrenCollectionTests>(this);

            Assert.Throws <ArgumentNullException>(() => list.Add(null));

            var item = new TestChild();

            Assert.IsNull(item.LogicalParent);

            list.Add(item);
            Assert.AreSame(item.LogicalParent, this);

            Assert.Throws <ArgumentException>(() => list.Add(item));

            list.Remove(item);
            Assert.IsNull(item.LogicalParent);
        }
        public void ComplexWrapperTest()
        {
            TestHusband husband = new TestHusband();
            TestWife    wife    = new TestWife();
            TestChild   child1  = new TestChild {
                Husband = husband, Wife = wife
            };
            TestChild child2 = new TestChild {
                Husband = husband, Wife = wife
            };

            wife.Husband = husband;
            husband.Wife = wife;
            husband.Children.AddRange(new[] { child1, child2 });

            TestHusbandWrapper husbandWrapper = new TestHusbandWrapper(husband);

            Assert.IsFalse(husbandWrapper.IsChanged);

            string oldWifesName = husbandWrapper.Wife.Name;

            husbandWrapper.Wife.Name = oldWifesName + "New";
            Assert.IsTrue(husbandWrapper.IsChanged);

            husbandWrapper.Wife.Name = oldWifesName;
            Assert.IsFalse(husbandWrapper.IsChanged);

            TestChildWrapper childWrapper1 = husbandWrapper.Children.Single(x => Equals(x.Model, child1));

            string oldChildsName = childWrapper1.Name;

            childWrapper1.Name = oldChildsName + "NEW";
            Assert.AreEqual(childWrapper1.NameOriginalValue, oldChildsName);
            Assert.IsTrue(husbandWrapper.IsChanged);

            childWrapper1.Name = oldChildsName;
            Assert.IsFalse(husbandWrapper.IsChanged);


            husbandWrapper.Children.Remove(childWrapper1);
            Assert.IsTrue(husbandWrapper.IsChanged);
            husbandWrapper.Children.Add(childWrapper1);
            Assert.IsFalse(husbandWrapper.IsChanged);
        }
        public void TestDynamicChange()
        {
            TestChild a = null, b = null, c = null, d = null;

            AddStep("Add children", () =>
            {
                container.AddInternal(a = new TestChild(-1, 0));
                container.AddInternal(b = new TestChild(0, 1));
                container.AddInternal(c = new TestChild(0, 1));
                container.AddInternal(d = new TestChild(1, 2));
            });
            validate(2);
            AddStep("Change lifetime", () =>
            {
                a.LifetimeEnd   = 1;
                b.LifetimeStart = 1;
                c.LifetimeEnd   = 0;
                d.LifetimeStart = 0;
            });
            validate(2);
            AddStep("Change lifetime", () =>
            {
                foreach (var x in new[] { a, b, c, d })
                {
                    x.LifetimeStart += 1;
                    x.LifetimeEnd   += 1;
                }
            });
            validate(1);
            AddStep("Change lifetime", () =>
            {
                foreach (var x in new[] { a, b, c, d })
                {
                    x.LifetimeStart -= 1;
                    x.LifetimeEnd   -= 1;
                }
            });
            validate(2);
        }
示例#23
0
        public void TestArray1()
        {
            TestGrandson test = new TestGrandson();

            test.Data = 100;
            TestChild testChild = test as TestChild;

            testChild.Data = 1;
            TestParent testParent = test as TestParent;

            testParent.Data = 33;

            Serializer serializer =
                new Regulus.Serialization.Dynamic.Serializer(new CustomFinder((name) => Type.GetType(name)));

            byte[]       buf = serializer.ObjectToBuffer(new TestParent[] { test, testChild, testParent });
            TestParent[] val = (TestParent[])serializer.BufferToObject(buf);

            Assert.AreEqual(100, (val[0] as TestGrandson).Data);
            Assert.AreEqual(1, (val[1] as TestChild).Data);
            Assert.AreEqual(33, (val[2] as TestParent).Data);
        }
示例#24
0
        public void TestCallingParentsMethod()
        {
            var c = new TestChild();

            Assert.AreEqual("child", c.Test());
            var m = typeof(TestChild).GetMethod("Test").GetBaseDefinition();

            Assert.AreEqual(typeof(TestBase), m.DeclaringType);
            Assert.AreEqual(typeof(TestBase).GetMethod("Test"), m);
            Assert.AreEqual("child", m.Invoke(c, new object[0]));
            Assert.AreEqual("child", ((TestBase)c).Test());

            var dm = new DynamicMethod(
                "", typeof(string), new Type[] { typeof(TestBase) }, typeof(YamlNodeTest));
            ILGenerator ilgen = dm.GetILGenerator();

            ilgen.Emit(OpCodes.Ldarg_0);
            ilgen.Emit(OpCodes.Call, typeof(TestBase).GetMethod("Test"));
            ilgen.Emit(OpCodes.Ret);
            var callTest = (Call)dm.CreateDelegate(typeof(Call));

            Assert.AreEqual("base", callTest.Invoke(c));
        }
示例#25
0
        public void TestChildCollectionList1()
        {
            if (System.Diagnostics.Debugger.IsAttached)
            {
                return;
            }

            var list = new ChildrenCollection <TestChild, ChildrenCollectionTests>(this);

            Assert.Throws <ArgumentNullException>(() => list.Add(null));

            var item = new TestChild();

            Assert.IsNull(item.LogicalParent);

            list.Add(item);
            Assert.AreSame(item.LogicalParent, this);

            Assert.Throws <ArgumentException>(() => list.Add(item));

            list.Remove(item);
            Assert.IsNull(item.LogicalParent);
        }
        public void ComplexWrapperTest()
        {
            TestHusband husband = new TestHusband();
            TestWife    wife    = new TestWife();
            TestChild   child1  = new TestChild {
                Id = 1, Husband = husband, Wife = wife
            };
            TestChild child2 = new TestChild {
                Id = 2, Husband = husband, Wife = wife
            };

            wife.Husband = husband;
            husband.Wife = wife;
            husband.Children.Add(child1);
            husband.Children.Add(child2);

            TestHusbandWrapper husbandWrapper = new TestHusbandWrapper(husband);

            Assert.IsFalse(husbandWrapper.IsChanged);

            TestChildWrapper childWrapper1 = husbandWrapper.Children.First(x => Equals(x.Model, child1));

            string oldChildsName = childWrapper1.Name;

            childWrapper1.Name = oldChildsName + "NEW";
            Assert.IsTrue(husbandWrapper.IsChanged);

            childWrapper1.Name = oldChildsName;
            Assert.IsFalse(husbandWrapper.IsChanged);


            husbandWrapper.Children.Remove(childWrapper1);
            Assert.IsTrue(husbandWrapper.IsChanged);
            husbandWrapper.Children.Add(childWrapper1);
            Assert.IsFalse(husbandWrapper.IsChanged);
        }
        public void TestBoundaryCrossing()
        {
            TestChild a = null, b = null, c = null;

            AddStep("Add children", () =>
            {
                container.AddInternal(a = new TestChild(-1, 0));
                container.AddInternal(b = new TestChild(0, 1));
                container.AddInternal(c = new TestChild(1, 2));
            });
            skipTo(2);
            AddStep("Check crossings", () =>
            {
                a.CheckCrossings();
                b.CheckCrossings(new LifetimeBoundaryCrossedEvent(b, LifetimeBoundaryKind.End, LifetimeBoundaryCrossingDirection.Forward));
                c.CheckCrossings(
                    new LifetimeBoundaryCrossedEvent(c, LifetimeBoundaryKind.Start, LifetimeBoundaryCrossingDirection.Forward),
                    new LifetimeBoundaryCrossedEvent(c, LifetimeBoundaryKind.End, LifetimeBoundaryCrossingDirection.Forward));
            });
            skipTo(1);
            AddStep("Check crossings", () =>
            {
                a.CheckCrossings();
                b.CheckCrossings();
                c.CheckCrossings(new LifetimeBoundaryCrossedEvent(c, LifetimeBoundaryKind.End, LifetimeBoundaryCrossingDirection.Backward));
            });
            skipTo(-1);
            AddStep("Check crossings", () =>
            {
                a.CheckCrossings(
                    new LifetimeBoundaryCrossedEvent(a, LifetimeBoundaryKind.End, LifetimeBoundaryCrossingDirection.Backward));
                b.CheckCrossings(new LifetimeBoundaryCrossedEvent(b, LifetimeBoundaryKind.End, LifetimeBoundaryCrossingDirection.Backward),
                                 new LifetimeBoundaryCrossedEvent(b, LifetimeBoundaryKind.Start, LifetimeBoundaryCrossingDirection.Backward));
                c.CheckCrossings(new LifetimeBoundaryCrossedEvent(c, LifetimeBoundaryKind.Start, LifetimeBoundaryCrossingDirection.Backward));
            });
        }
示例#28
0
        public void TestCallingParentsMethod()
        {
            var c = new TestChild();
            Assert.AreEqual("child", c.Test());
            var m = typeof(TestChild).GetMethod("Test").GetBaseDefinition();
            Assert.AreEqual(typeof(TestBase), m.DeclaringType);
            Assert.AreEqual(typeof(TestBase).GetMethod("Test"), m);
            Assert.AreEqual("child", m.Invoke(c, new object[0]));
            Assert.AreEqual("child", ( (TestBase)c ).Test());

            var dm = new System.Reflection.Emit.DynamicMethod(
                "", typeof(string), new Type[] { typeof(TestBase) }, typeof(YamlNodeTest));
            System.Reflection.Emit.ILGenerator ilgen = dm.GetILGenerator();

            ilgen.Emit(System.Reflection.Emit.OpCodes.Ldarg_0);
            ilgen.Emit(System.Reflection.Emit.OpCodes.Call, typeof(TestBase).GetMethod("Test"));
            ilgen.Emit(System.Reflection.Emit.OpCodes.Ret);
            var callTest = (Call)dm.CreateDelegate(typeof(Call));

            Assert.AreEqual("base", callTest.Invoke(c));
        }
示例#29
0
    public static void TestWatchWithInheritance()
    {
        TestChild test = new TestChild();

        Debugger.Break();
    }
示例#30
0
文件: Program.cs 项目: dearz/Practice
 //只有子类型赋值过的父类型才能重新强制转化为子类型
 private static void Func1()
 {
     string str;
     Test test = new Test();
     TestChild testChild = new TestChild();
     test = testChild;
     testChild = (TestChild)test;
     if (testChild.X != 0)
     {
         str = testChild.X.ToString();
         Console.WriteLine(str);
     }
     Console.ReadKey();
 }