public void FindParent_IfNotTypeGenerationContextNode_ReturnNull()
        {
            IdSameAsParentDataSource<TestModel, System.Guid> source =
                new IdSameAsParentDataSource<TestModel, System.Guid>(a => a.Id);

            DummyGenerationContextNode node = new DummyGenerationContextNode();

            Assert.IsNull(source.FindParent(node), @"
            FindParent should return null if the given node is not a TypeGenerationContextNode and it's Parent is null.
            ");
        }
        public void FindParent_NestedTest()
        {
            TestModel target = new TestModel();
            IdSameAsParentDataSource<TestModel, System.Guid> source =
                new IdSameAsParentDataSource<TestModel, System.Guid>(a => a.Id);

            DummyGenerationContextNode root = new DummyGenerationContextNode();
            TypeGenerationContextNode targetNode = new TypeGenerationContextNode(root, target);
            DummyGenerationContextNode leafNode = new DummyGenerationContextNode(GenerationTargetTypes.Object, targetNode);

            Assert.AreEqual(target, source.FindParent(leafNode), @"
            Target should have been returned.  A TypeGenerationContextNode with a Target of type TestModel was the parent of the node passed to FindParent.
            ");
        }
        public void Next_NullParent_ReturnDefault()
        {
            IdSameAsParentDataSource<TestModel, System.Guid> source =
                new IdSameAsParentDataSource<TestModel, System.Guid>(a => a.Id);

            DummyGenerationContextNode node = new DummyGenerationContextNode();
            Mock<IGenerationContext> contextMock = new Mock<IGenerationContext>();
            contextMock.Setup(a => a.Node).Returns(node);

            Assert.AreEqual(default(System.Guid), source.Next(contextMock.Object), @"
            The result of Next should be {0} because the parent was not found.
            ", default(System.Guid));
        }