Ejemplo n.º 1
0
        public void Clone_NonEmptyContainer_ReturnsContainerWithSameUnits()
        {
            // Arrange
            var        mockDelegate = CreateMockDelegate();
            IDimension mass         = CreateStubDimension("M");
            IUnit      g            = CreateStubUnit("g", mass);
            IUnit      kg           = CreateStubUnit("kg", mass);
            IUnit      lbs          = CreateStubUnit("lbs", mass);

            DimensionContainer original = new DimensionContainer(mass, mockDelegate.Object.Create);

            original.SetBaseUnit(g);
            original.AddUnit(g, kg);
            original.AddUnit(g, lbs);

            // Act
            DimensionContainer cloned = (DimensionContainer)original.Clone();

            // Assert
            Assert.AreSame(original.BaseUnit, cloned.BaseUnit);
            CollectionAssert.AreEquivalent(original.Units, cloned.Units);
            Assert.True(cloned.CanConvert(g, kg));
            Assert.True(cloned.CanConvert(g, lbs));
            Assert.True(cloned.CanConvert(kg, lbs));
        }
Ejemplo n.º 2
0
        public void AddUnit_DimensionMismatch_ThrowsArgumentException()
        {
            // Arrange
            var                mockDelegate = new Mock <ICreateAdjacentValueConverterDelegateFunctor>();
            IDimension         mass         = CreateStubDimension("M");
            IDimension         length       = CreateStubDimension("L");
            IUnit              kg           = CreateStubUnit("kg", mass);
            IUnit              m            = CreateStubUnit("m", length);
            DimensionContainer container    = new DimensionContainer(mass, mockDelegate.Object.Create);

            container.SetBaseUnit(kg);

            // Act/Assert
            Assert.Throws <ArgumentException>(() => container.AddUnit(kg, m));
        }
Ejemplo n.º 3
0
        public void CreateConverter_BaseUnitToDirectAnchestor_CallsCreateConverterOnce()
        {
            // Arrange
            var        mockDelegate = CreateMockDelegate();
            IDimension mass         = CreateStubDimension("M");
            IUnit      kg           = CreateStubUnit("kg", mass);
            IUnit      lbs          = CreateStubUnit("lbs", mass);

            DimensionContainer container = new DimensionContainer(mass, mockDelegate.Object.Create);

            container.SetBaseUnit(kg);
            container.AddUnit(kg, lbs);

            // Act
            IValueConverter converter = container.CreateConverter(kg, lbs);

            // Assert
            mockDelegate.Verify(x => x.Create(kg, lbs), Times.Once());
            Assert.NotNull(converter);
        }
Ejemplo n.º 4
0
        public void CreateConverter_UnitToAnchestor_CallsCreateConverterTwice()
        {
            // Arrange
            var        mockDelegate = CreateMockDelegate();
            IDimension mass         = CreateStubDimension("M");
            IUnit      g            = CreateStubUnit("g", mass);
            IUnit      kg           = CreateStubUnit("kg", mass);
            IUnit      lbs          = CreateStubUnit("lbs", mass);

            DimensionContainer container = new DimensionContainer(mass, mockDelegate.Object.Create);

            container.SetBaseUnit(g);
            container.AddUnit(g, kg);
            container.AddUnit(kg, lbs);

            // Act
            IValueConverter converter = container.CreateConverter(kg, lbs);

            // Assert
            mockDelegate.Verify(x => x.Create(It.IsAny <IUnit>(), It.IsAny <IUnit>()), Times.Exactly(1));
            Assert.NotNull(converter);
        }