public void GetValues_WhenDeepGraphWithEnumerables_CanExtractValues()
        {
            var prodNoProperty = StructurePropertyTestFactory.GetPropertyByPath <TestCustomer>("Orders.Lines.ProductNo");
            var pricesProperty = StructurePropertyTestFactory.GetPropertyByPath <TestCustomer>("Orders.Lines.Prices");

            var graph = new TestCustomer
            {
                Orders =
                {
                    new TestOrder
                    {
                        Lines =
                        {
                            new TestOrderLine {
                                ProductNo = "P1", Quantity = 1, Prices = new[]{                                  42, 4242 }
                            },
                            new TestOrderLine {
                                ProductNo = "P2", Quantity = 2, Prices = new[]{                                  43, 4343 }
                            }
                        }
                    }
                }
            };

            var productNos = IndexAccessorTestFactory.CreateFor(prodNoProperty).GetValues(graph);
            var prices     = IndexAccessorTestFactory.CreateFor(pricesProperty).GetValues(graph);

            CollectionAssert.AreEqual(new[] { "P1", "P2" }, productNos.Select(i => i.Value).ToArray());
            CollectionAssert.AreEqual(new[] { 42, 4242, 43, 4343 }, prices.Select(i => i.Value).ToArray());
        }
Esempio n. 2
0
        public void GetValues_WhenSubItemsArrayIsNull_ReturnsNull()
        {
            var item = new Item {
                SubItems = null
            };
            var valueProp     = StructurePropertyTestFactory.GetPropertyByPath <Item>("SubItems.Value");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(valueProp);

            var value = indexAccessor.GetValues(item);

            value.Should().BeNull();
        }
        public void GetValues_WhenSubItemsArrayIsNull_ReturnsNull()
        {
            var item = new Item {
                SubItems = null
            };
            var valueProp     = StructurePropertyTestFactory.GetPropertyByPath <Item>("SubItems.Value");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(valueProp);

            var value = indexAccessor.GetValues(item);

            Assert.AreEqual(new string[] { null }, value);
        }
        public void GetValues_FromAssignedInt_ReturnsAssignedInt()
        {
            const int initialValue = 12345;
            var       item         = new Dummy {
                IntProp = initialValue
            };
            var property      = StructurePropertyTestFactory.GetPropertyByPath <Dummy>("IntProp");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(property);

            var retrievedValues = indexAccessor.GetValues(item);

            CollectionAssert.AreEqual(new[] { initialValue }, retrievedValues.Select(i => i.Value).ToArray());
        }
Esempio n. 5
0
        public void GetValues_FromNullableDecimalWithNullValue_ReturnsNull()
        {
            decimal?initialValue = null;
            var     item         = new Dummy {
                NullableDecimalProp = initialValue
            };
            var property      = StructurePropertyTestFactory.GetPropertyByPath <Dummy>("NullableDecimalProp");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(property);

            var retrievedValues = indexAccessor.GetValues(item);

            Assert.IsNull(retrievedValues);
        }
Esempio n. 6
0
        public void GetValue_FromAssignedDateTime_ReturnsAssignedDateTime()
        {
            var initialValue = new DateTime(2010, 2, 3);
            var item         = new Dummy {
                DateTimeProp = initialValue
            };
            var property      = StructurePropertyTestFactory.GetPropertyByPath <Dummy>("DateTimeProp");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(property);

            var retrievedValues = indexAccessor.GetValues(item);

            CollectionAssert.AreEqual(new[] { initialValue }, retrievedValues);
        }
Esempio n. 7
0
        public void GetValues_FromAssignedNullableDecimal_ReturnsAssignedNullableDecimal()
        {
            decimal?initialValue = 13.34M;
            var     item         = new Dummy {
                NullableDecimalProp = initialValue
            };
            var property      = StructurePropertyTestFactory.GetPropertyByPath <Dummy>("NullableDecimalProp");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(property);

            var retrievedValues = indexAccessor.GetValues(item);

            CollectionAssert.AreEqual(new[] { initialValue.GetValueOrDefault() }, retrievedValues);
        }
Esempio n. 8
0
        public void GetValues_FromNullString_ReturnsNullString()
        {
            const string initialValue = null;
            var          item         = new Dummy {
                StringProp = initialValue
            };
            var property      = StructurePropertyTestFactory.GetPropertyByPath <Dummy>("StringProp");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(property);

            var retrievedValues = indexAccessor.GetValues(item);

            Assert.IsNull(retrievedValues);
        }
Esempio n. 9
0
        public void GetValues_FromAssignedDecimal_ReturnsAssignedDecimal()
        {
            const decimal initialValue = 12.56M;
            var           item         = new Dummy {
                DecimalProp = initialValue
            };
            var property      = StructurePropertyTestFactory.GetPropertyByPath <Dummy>("DecimalProp");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(property);

            var retrievedValues = indexAccessor.GetValues(item);

            CollectionAssert.AreEqual(new[] { initialValue }, retrievedValues);
        }
Esempio n. 10
0
        public void GetValues_FromAssignedString_ReturnsAssignedString()
        {
            const string initialValue = "Hello tester!";
            var          item         = new Dummy {
                StringProp = initialValue
            };
            var property      = StructurePropertyTestFactory.GetPropertyByPath <Dummy>("StringProp");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(property);

            var retrievedValues = indexAccessor.GetValues(item);

            CollectionAssert.AreEqual(new[] { initialValue }, retrievedValues);
        }
        public void SetValue_WhenAssigningStringValueToNullProp_ValueIsAssigned()
        {
            const string newValue = "Test";
            var          item     = new Item {
                StringProp = null
            };
            var property      = StructurePropertyTestFactory.GetPropertyByPath <Item>("StringProp");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(property);

            indexAccessor.SetValue(item, newValue);

            Assert.AreEqual(newValue, item.StringProp);
        }
        public void SetValue_WhenAssigningPrimitiveValueToNonNullNullableProp_ValueIsAssigned()
        {
            const int newValue = 42;
            var       item     = new Item {
                NullableIntProp = 1
            };
            var property      = StructurePropertyTestFactory.GetPropertyByPath <Item>("NullableIntProp");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(property);

            indexAccessor.SetValue(item, newValue);

            Assert.AreEqual(newValue, item.NullableIntProp);
        }
        public void GetValues_WhenSubItemsArrayHasBothNullAndNonNullItems_ReturnsNonNullAndNullItems()
        {
            var subItems = new[] { null, new SubItem {
                                       Value = "A"
                                   } };
            var item = new Item {
                SubItems = subItems
            };
            var valueProp     = StructurePropertyTestFactory.GetPropertyByPath <Item>("SubItems.Value");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(valueProp);

            var value = indexAccessor.GetValues(item);

            Assert.AreEqual(new object[] { null, "A" }, value);
        }
Esempio n. 14
0
        public void GetValues_WhenStringOnSingleSubItem_ReturnsValue()
        {
            var subItem = new SubItem {
                Value = "The value"
            };
            var item = new Item {
                SingleSubItem = subItem
            };
            var valueProp     = StructurePropertyTestFactory.GetPropertyByPath <Item>("SingleSubItem.Value");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(valueProp);

            var value = indexAccessor.GetValues(item);

            value.Select(i => i.Value).Should().BeEquivalentTo(new object[] { "The value" });
        }
Esempio n. 15
0
        public void GetValues_WhenSubItemsArrayHasBothNullAndNonNullItems_ReturnsNonNullItemsOnly()
        {
            var subItems = new[] { null, new SubItem {
                                       Value = "A"
                                   } };
            var item = new Item {
                SubItems = subItems
            };
            var valueProp     = StructurePropertyTestFactory.GetPropertyByPath <Item>("SubItems.Value");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(valueProp);

            var value = indexAccessor.GetValues(item);

            value.Select(i => i.Value).Should().BeEquivalentTo(new object[] { "A" });
        }
        public void GetValues_WhenStringOnSingleSubItem_ReturnsValue()
        {
            var subItem = new SubItem {
                Value = "The value"
            };
            var item = new Item {
                SingleSubItem = subItem
            };
            var valueProp     = StructurePropertyTestFactory.GetPropertyByPath <Item>("SingleSubItem.Value");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(valueProp);

            var value = indexAccessor.GetValues(item);

            Assert.AreEqual(new object[] { "The value" }, value);
        }
Esempio n. 17
0
        public void SetValue_WhenComplexType_CompexTypeIsAssigned()
        {
            const string newValue = "Test";
            var          item     = new Item {
                SingleSubItem = null
            };
            var subItemProp   = StructurePropertyTestFactory.GetRawProperty <Item>("SingleSubItem");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(subItemProp);

            indexAccessor.SetValue(item, new SubItem {
                Value = newValue
            });

            Assert.AreEqual(newValue, item.SingleSubItem.Value);
        }
Esempio n. 18
0
        public void SetValue_WhenStringValueToNestedNonNullProp_ValueIsAssigned()
        {
            const string newValue = "Test";
            var          item     = new Item
            {
                SingleSubItem = new SubItem {
                    Value = "Not" + newValue
                }
            };
            var valueProp     = StructurePropertyTestFactory.GetPropertyByPath <Item>("SingleSubItem.Value");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(valueProp);

            indexAccessor.SetValue(item, newValue);

            Assert.AreEqual(newValue, item.SingleSubItem.Value);
        }
Esempio n. 19
0
        public void GetValues_WhenSubItemsArrayHasElementsWithValues_ReturnsTheValues()
        {
            var subItems = new[] { new SubItem {
                                       Value = "A"
                                   }, new SubItem {
                                       Value = "B"
                                   } };
            var item = new Item {
                SubItems = subItems
            };
            var valueProp     = StructurePropertyTestFactory.GetPropertyByPath <Item>("SubItems.Value");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(valueProp);

            var values = indexAccessor.GetValues(item);

            CollectionAssert.AreEquivalent(new[] { "A", "B" }, values.Select(i => i.Value).ToArray());
        }
Esempio n. 20
0
        public void GetValues_WhenSubItemsArrayHasElementsWithNullValues_DoesNotReturnTheNullValues()
        {
            var subItems = new[] { new SubItem {
                                       Value = null
                                   }, new SubItem {
                                       Value = null
                                   } };
            var item = new Item {
                SubItems = subItems
            };
            var valueProp     = StructurePropertyTestFactory.GetPropertyByPath <Item>("SubItems.Value");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(valueProp);

            var values = indexAccessor.GetValues(item);

            values.Should().BeEmpty();
        }
        public void GetValues_WhenSubItemsArrayHasElementsWithNullValues_ReturnsTheNullValues()
        {
            var subItems = new[] { new SubItem {
                                       Value = null
                                   }, new SubItem {
                                       Value = null
                                   } };
            var item = new Item {
                SubItems = subItems
            };
            var valueProp     = StructurePropertyTestFactory.GetPropertyByPath <Item>("SubItems.Value");
            var indexAccessor = IndexAccessorTestFactory.CreateFor(valueProp);

            var values = indexAccessor.GetValues(item);

            CollectionAssert.AreEquivalent(new string[] { null, null }, values);
        }