public void ReflectedHierarchyNodeFactory_creates_root_from_array_type() { // ACT var hierarchyNode = ReflectedHierarchyFactory.Create(new int[0]); // ASSERT Assert.IsType <ReflectedHierarchyEnumerableRootNode>(hierarchyNode); }
public void ReflectedHierarchyNodeFactory_creates_root_from_scalar_ref_type() { // ACT var hierarchyNode = ReflectedHierarchyFactory.Create(new { }); // ASSERT Assert.IsType <ReflectedHierarchyObjectRootNode>(hierarchyNode); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }