public void ShouldReturnValidResult() { // arrange var quantities = Fixture.CreateMany <SomeQuantity>(3); Func <number, SomeUnit, SomeQuantity> factory = SomeQuantityFactory.Create; number expectedResultInWatts = quantities.Sum(e => e.Value * e.Unit.ValueInUnits); var expectedResultUnit = quantities.First().Unit; var expectedResult = new SomeQuantity(expectedResultInWatts / expectedResultUnit.ValueInUnits, expectedResultUnit); // act var result = EnumerableExtensions.Sum <SomeQuantity, SomeUnit>(quantities, factory); // assert result.Unit.Should().Be(expectedResult.Unit); result.Value.Should().Be(expectedResult.Value); }
public void ShouldReturnValidResult() { // arrange var source = Fixture.CreateMany <SomeQuantity>(3); Func <number, SomeUnit, SomeQuantity> factory = SomeQuantityFactory.Create; number expectedResultInWatts = source.Average(e => e.Value * e.Unit.ValueInUnits); var expectedResultUnit = source.First().Unit; var expectedResult = new SomeQuantity(expectedResultInWatts / expectedResultUnit.ValueInUnits, expectedResultUnit); // act var result = EnumerableExtensions.Average <SomeQuantity, SomeUnit>(source, factory); // assert result.Unit.Should().Be(expectedResult.Unit); result.Value.Should().BeApproximately(expectedResult.Value); }
public void ShouldReturnValidResult() { // arrange var objects = Fixture.CreateMany <SomeQuantity>(3).Select(e => new TestObject <SomeQuantity>(e)); Func <number, SomeUnit, SomeQuantity> factory = SomeQuantityFactory.Create; Func <TestObject <SomeQuantity>, SomeQuantity> selector = e => e.Property; number expectedResultInWatts = objects.Sum(e => e.Property.Value * e.Property.Unit.ValueInUnits); var expectedResultUnit = objects.First().Property.Unit; var expectedResult = new SomeQuantity(expectedResultInWatts / expectedResultUnit.ValueInUnits, expectedResultUnit); // act var result = EnumerableExtensions.Sum <TestObject <SomeQuantity>, SomeQuantity, SomeUnit>(objects, factory, selector); // assert result.Value.Should().Be(expectedResult.Value); result.Unit.Should().Be(expectedResult.Unit); }