public void TestDeferredMultiLayer() { var first = new TestThing(); var second = new TestThing(first); var third = new TestThing(second); var firstOwnedThing = new OwnedThing(); first.TestProp = firstOwnedThing; Assert.AreEqual(firstOwnedThing, third.TestProp, "Third's thing can't be retrieved"); Assert.AreEqual(third, first.TestProp.LastUser, "Third not registered as last user"); first.NotInterited = new MergableThing(); Assert.IsNull(third.NotInterited, "Third should not inherit First's AnotherProp value"); }
public void TestDeferred() { var first = new TestThing(); var second = new TestThing(first); var firstOwnedThing = new OwnedThing(); first.TestProp = firstOwnedThing; Assert.AreEqual(firstOwnedThing, first.TestProp, "First's thing can't be retrieved"); Assert.AreEqual(firstOwnedThing, second.TestProp, "Second doesn't inherit property from first"); Assert.AreEqual(first, firstOwnedThing.Owner, "First doesn't own its own thing"); Assert.AreEqual(first, second.TestProp.Owner, "First doesn't own second's thing"); var secondOwnedThing = new OwnedThing(); first.TestProp = secondOwnedThing; Assert.AreEqual(secondOwnedThing, first.TestProp, "First's thing hasn't been replaced"); Assert.AreEqual(1, first.Deferred.Collisions.Count(), "Replacing the thing wasn't logged"); second.AnotherProp = firstOwnedThing; Assert.AreEqual(firstOwnedThing, second.AnotherProp, "Second's thing can't be retrieved"); Assert.AreEqual(second, firstOwnedThing.Owner, "Owner of thing wasn't updated to second"); first.NotInterited = new MergableThing(); first.NotInterited = new MergableThing(); Assert.IsTrue(first.NotInterited.Merged, "First's merge prop not marked as merged"); }