コード例 #1
0
        public void ReflectedHierarchyNodeFactory_creates_root_from_array_type()
        {
            // ACT

            var hierarchyNode = ReflectedHierarchyFactory.Create(new int[0]);

            // ASSERT

            Assert.IsType <ReflectedHierarchyEnumerableRootNode>(hierarchyNode);
        }
コード例 #2
0
        public void ReflectedHierarchyNodeFactory_creates_root_from_scalar_ref_type()

        {
            // ACT

            var hierarchyNode = ReflectedHierarchyFactory.Create(new { });

            // ASSERT

            Assert.IsType <ReflectedHierarchyObjectRootNode>(hierarchyNode);
        }
コード例 #3
0
        public void RootObjectNode_returns_false_on_invalid_value_type()
        {
            // ARRANGE

            var value = DateTime.Now;
            var node  = ReflectedHierarchyFactory.Create(value);

            // ACT

            var(result, _) = node.TryGetValue <int>();

            // ASSERT

            Assert.False(result);
        }
コード例 #4
0
        public void PropertyNode_returns_false_on_invalid_value_type()
        {
            // ARRANGE

            var value = new { data = DateTime.Now };

            var(_, node) = ReflectedHierarchyFactory.Create(value).TryGetChildNode(nameof(value.data));

            // ACT

            var(result, _) = node.TryGetValue <int>();

            // ASSERT

            Assert.False(result);
        }
コード例 #5
0
        public void ObjectNode_ValueType_provides_properties_raw_type()
        {
            // ARRANGE

            var node = ReflectedHierarchyFactory.Create(1);

            // ACT

            var result = node.ValueType;

            // ASSERT

            Assert.IsType <ReflectedHierarchyObjectRootNode>(node);
            Assert.IsAssignableFrom <ReflectedHierarchyObjectNodeBase>(node);
            Assert.Equal(typeof(int), result);
        }
コード例 #6
0
        public void PropertyNode_returns_childNode()
        {
            // ARRANGE

            var value = new { data = new { child = DateTime.Now } };

            var(_, node) = ReflectedHierarchyFactory.Create(value).TryGetChildNode(nameof(value.data));

            // ACT

            var(result, child) = node.TryGetChildNode("child");

            // ASSERT

            Assert.True(result);
            Assert.Equal("child", child.Id);
        }
コード例 #7
0
        public void PropertyNode_ValueType_provides_properties_raw_type()
        {
            // ARRANGE

            var node = ReflectedHierarchyFactory
                       .Create(new { a = 1 })
                       .DescendantAt(HierarchyPath.Create("a"));

            // ACT

            var result = node.ValueType;

            // ASSERT

            Assert.IsType <ReflectedHierarchyPropertyNode>(node);
            Assert.Equal(typeof(int), result);
        }
コード例 #8
0
        public void PropertyNode_returns_false_on_invalid_property_type()
        {
            // ARRANGE
            // witout a value the static property type has to decide

            var value = new { data = (DateTime?)null };

            var(_, node) = ReflectedHierarchyFactory.Create(value).TryGetChildNode(nameof(value.data));

            // ACT

            var(result, _) = node.TryGetValue <int>();

            // ASSERT

            Assert.False(result);
        }
コード例 #9
0
        public void ObjectNode_returns_false_on_invalid_value_type()
        {
            // ARRANGE

            var value = new[] { DateTime.Now };

            var(_, node) = ReflectedHierarchyFactory.Create(value).TryGetChildNode("0");

            // ACT

            var(result, _) = node.TryGetValue <int>();

            // ASSERT

            Assert.IsType <ReflectedHierarchyObjectNode>(node);
            Assert.False(result);
        }
コード例 #10
0
        public void EnumerableRootNode_returns_false_on_invalid_value_type()
        {
            // ARRANGE

            var value = new List <int> {
                1
            };
            var node = ReflectedHierarchyFactory.Create(value);

            // ACT

            var(result, _) = node.TryGetValue <int[]>();

            // ASSERT

            Assert.False(result);
        }
コード例 #11
0
        public void EnumerableRootNode_returns_false_on_index_out_of_range()
        {
            // ARRANGE

            var value = new List <int> {
                1
            };
            var node = ReflectedHierarchyFactory.Create(value);

            // ACT

            var(result, _) = node.TryGetChildNode("1");

            // ASSERT

            Assert.False(result);
        }
コード例 #12
0
        public void EnumerableNode_returns_false_on_invalid_value_type()
        {
            // ARRANGE

            var value = new { data = new List <int> {
                                  1
                              } };

            var(_, node) = ReflectedHierarchyFactory.Create(value).TryGetChildNode(nameof(value.data));

            // ACT

            var(result, _) = node.TryGetValue <int[]>();

            // ASSERT

            Assert.False(result);
        }
コード例 #13
0
        public void PropertyNode_returns_scalar_type_as_value()
        {
            // ARRANGE

            var value = new { data = DateTime.Now };

            // ACT

            var(_, node) = ReflectedHierarchyFactory.Create(value).TryGetChildNode(nameof(value.data));

            // ASSERT

            Assert.IsType <ReflectedHierarchyPropertyNode>(node);
            Assert.Equal(nameof(value.data), node.Id);
            Assert.False(node.HasChildNodes);
            Assert.Equal(value.data, node.TryGetValue <DateTime>().Item2);
            Assert.Empty(node.ChildNodes);
        }
コード例 #14
0
        public void ObjectNode_returns_ref_type_as_value()
        {
            // ARRANGE

            var value = new[] { "str" };

            // ACT

            var(_, node) = ReflectedHierarchyFactory.Create(value).TryGetChildNode("0");

            // ASSERT

            Assert.IsType <ReflectedHierarchyObjectNode>(node);
            Assert.Equal("0", node.Id);
            Assert.False(node.HasChildNodes);
            Assert.Equal("str", node.TryGetValue <string>().Item2);
            Assert.Empty(node.ChildNodes);
        }
コード例 #15
0
        public void RootObjectNode_returns_ref_type_as_value()
        {
            // ARRANGE

            var value = new { };

            // ACT

            var node = ReflectedHierarchyFactory.Create(value);

            // ASSERT

            Assert.IsType <ReflectedHierarchyObjectRootNode>(node);
            Assert.Empty(node.Id);
            Assert.False(node.HasChildNodes);
            Assert.Equal(value, node.TryGetValue <object>().Item2);
            Assert.Empty(node.ChildNodes);
        }
コード例 #16
0
        public void EnumerableNode_returns_array_as_value()
        {
            // ARRANGE

            var value = new { data = new[] { 1 } };

            // ACT

            var(_, node) = ReflectedHierarchyFactory.Create(value).TryGetChildNode(nameof(value.data));

            // ASSERT

            Assert.IsType <ReflectedHierarchyEnumerableNode>(node);
            Assert.Equal(nameof(value.data), node.Id);
            Assert.True(node.HasChildNodes);
            Assert.Equal(value.data, node.TryGetValue <int[]>().Item2);
            Assert.Single(node.ChildNodes);
            Assert.Equal(1, node.ChildNodes.Single().TryGetValue <int>().Item2);
            Assert.Equal(1, node.TryGetChildNode("0").Item2.TryGetValue <int>().Item2);
        }
コード例 #17
0
        public void EnumerableRootNode_returns_list_as_value()
        {
            // ARRANGE

            var value = new List <int> {
                1
            };

            // ACT

            var node = ReflectedHierarchyFactory.Create(value);

            // ASSERT

            Assert.IsType <ReflectedHierarchyEnumerableRootNode>(node);
            Assert.Empty(node.Id);
            Assert.True(node.HasChildNodes);
            Assert.Equal(value, node.TryGetValue <List <int> >().Item2);
            Assert.Single(node.ChildNodes);
            Assert.Equal(1, node.ChildNodes.Single().TryGetValue <int>().Item2);
            Assert.Equal(1, node.TryGetChildNode("0").Item2.TryGetValue <int>().Item2);
        }