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()); }
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()); }
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); }
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); }
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); }
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); }
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); }
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); }
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" }); }
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); }
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); }
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); }
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()); }
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); }