public void ConversionRoundTrip()
        {
            VolumeFlowPerArea cubicmeterpersecondpersquaremeter = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1);

            AssertEx.EqualTolerance(1, VolumeFlowPerArea.FromCubicFeetPerMinutePerSquareFoot(cubicmeterpersecondpersquaremeter.CubicFeetPerMinutePerSquareFoot).CubicMetersPerSecondPerSquareMeter, CubicFeetPerMinutePerSquareFootTolerance);
            AssertEx.EqualTolerance(1, VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(cubicmeterpersecondpersquaremeter.CubicMetersPerSecondPerSquareMeter).CubicMetersPerSecondPerSquareMeter, CubicMetersPerSecondPerSquareMeterTolerance);
        }
        public void DefaultCtor_ReturnsQuantityWithZeroValueAndBaseUnit()
        {
            var quantity = new VolumeFlowPerArea();

            Assert.Equal(0, quantity.Value);
            Assert.Equal(VolumeFlowPerAreaUnit.CubicMeterPerSecondPerSquareMeter, quantity.Unit);
        }
        public void As()
        {
            var cubicmeterpersecondpersquaremeter = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1);

            AssertEx.EqualTolerance(CubicFeetPerMinutePerSquareFootInOneCubicMeterPerSecondPerSquareMeter, cubicmeterpersecondpersquaremeter.As(VolumeFlowPerAreaUnit.CubicFootPerMinutePerSquareFoot), CubicFeetPerMinutePerSquareFootTolerance);
            AssertEx.EqualTolerance(CubicMetersPerSecondPerSquareMeterInOneCubicMeterPerSecondPerSquareMeter, cubicmeterpersecondpersquaremeter.As(VolumeFlowPerAreaUnit.CubicMeterPerSecondPerSquareMeter), CubicMetersPerSecondPerSquareMeterTolerance);
        }
        public void Equals_RelativeTolerance_IsImplemented()
        {
            var v = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1);

            Assert.True(v.Equals(VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1), CubicMetersPerSecondPerSquareMeterTolerance, ComparisonType.Relative));
            Assert.False(v.Equals(VolumeFlowPerArea.Zero, CubicMetersPerSecondPerSquareMeterTolerance, ComparisonType.Relative));
        }
        public void Equals_SameType_IsImplemented()
        {
            var a = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1);
            var b = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(2);

            Assert.True(a.Equals(a));
            Assert.False(a.Equals(b));
        }
        public void CompareToIsImplemented()
        {
            VolumeFlowPerArea cubicmeterpersecondpersquaremeter = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1);

            Assert.Equal(0, cubicmeterpersecondpersquaremeter.CompareTo(cubicmeterpersecondpersquaremeter));
            Assert.True(cubicmeterpersecondpersquaremeter.CompareTo(VolumeFlowPerArea.Zero) > 0);
            Assert.True(VolumeFlowPerArea.Zero.CompareTo(cubicmeterpersecondpersquaremeter) < 0);
        }
        public void Equals_QuantityAsObject_IsImplemented()
        {
            object a = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1);
            object b = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(2);

            Assert.True(a.Equals(a));
            Assert.False(a.Equals(b));
            Assert.False(a.Equals((object)null));
        }
        public void From_ValueAndUnit_ReturnsQuantityWithSameValueAndUnit()
        {
            var quantity00 = VolumeFlowPerArea.From(1, VolumeFlowPerAreaUnit.CubicFootPerMinutePerSquareFoot);

            AssertEx.EqualTolerance(1, quantity00.CubicFeetPerMinutePerSquareFoot, CubicFeetPerMinutePerSquareFootTolerance);
            Assert.Equal(VolumeFlowPerAreaUnit.CubicFootPerMinutePerSquareFoot, quantity00.Unit);

            var quantity01 = VolumeFlowPerArea.From(1, VolumeFlowPerAreaUnit.CubicMeterPerSecondPerSquareMeter);

            AssertEx.EqualTolerance(1, quantity01.CubicMetersPerSecondPerSquareMeter, CubicMetersPerSecondPerSquareMeterTolerance);
            Assert.Equal(VolumeFlowPerAreaUnit.CubicMeterPerSecondPerSquareMeter, quantity01.Unit);
        }
        public void ArithmeticOperators()
        {
            VolumeFlowPerArea v = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1);

            AssertEx.EqualTolerance(-1, -v.CubicMetersPerSecondPerSquareMeter, CubicMetersPerSecondPerSquareMeterTolerance);
            AssertEx.EqualTolerance(2, (VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(3) - v).CubicMetersPerSecondPerSquareMeter, CubicMetersPerSecondPerSquareMeterTolerance);
            AssertEx.EqualTolerance(2, (v + v).CubicMetersPerSecondPerSquareMeter, CubicMetersPerSecondPerSquareMeterTolerance);
            AssertEx.EqualTolerance(10, (v * 10).CubicMetersPerSecondPerSquareMeter, CubicMetersPerSecondPerSquareMeterTolerance);
            AssertEx.EqualTolerance(10, (10 * v).CubicMetersPerSecondPerSquareMeter, CubicMetersPerSecondPerSquareMeterTolerance);
            AssertEx.EqualTolerance(2, (VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(10) / 5).CubicMetersPerSecondPerSquareMeter, CubicMetersPerSecondPerSquareMeterTolerance);
            AssertEx.EqualTolerance(2, VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(10) / VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(5), CubicMetersPerSecondPerSquareMeterTolerance);
        }
        public void ToUnit()
        {
            var cubicmeterpersecondpersquaremeter = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1);

            var cubicfootperminutepersquarefootQuantity = cubicmeterpersecondpersquaremeter.ToUnit(VolumeFlowPerAreaUnit.CubicFootPerMinutePerSquareFoot);

            AssertEx.EqualTolerance(CubicFeetPerMinutePerSquareFootInOneCubicMeterPerSecondPerSquareMeter, (double)cubicfootperminutepersquarefootQuantity.Value, CubicFeetPerMinutePerSquareFootTolerance);
            Assert.Equal(VolumeFlowPerAreaUnit.CubicFootPerMinutePerSquareFoot, cubicfootperminutepersquarefootQuantity.Unit);

            var cubicmeterpersecondpersquaremeterQuantity = cubicmeterpersecondpersquaremeter.ToUnit(VolumeFlowPerAreaUnit.CubicMeterPerSecondPerSquareMeter);

            AssertEx.EqualTolerance(CubicMetersPerSecondPerSquareMeterInOneCubicMeterPerSecondPerSquareMeter, (double)cubicmeterpersecondpersquaremeterQuantity.Value, CubicMetersPerSecondPerSquareMeterTolerance);
            Assert.Equal(VolumeFlowPerAreaUnit.CubicMeterPerSecondPerSquareMeter, cubicmeterpersecondpersquaremeterQuantity.Unit);
        }
        public void ComparisonOperators()
        {
            VolumeFlowPerArea oneCubicMeterPerSecondPerSquareMeter  = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1);
            VolumeFlowPerArea twoCubicMetersPerSecondPerSquareMeter = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(2);

            Assert.True(oneCubicMeterPerSecondPerSquareMeter < twoCubicMetersPerSecondPerSquareMeter);
            Assert.True(oneCubicMeterPerSecondPerSquareMeter <= twoCubicMetersPerSecondPerSquareMeter);
            Assert.True(twoCubicMetersPerSecondPerSquareMeter > oneCubicMeterPerSecondPerSquareMeter);
            Assert.True(twoCubicMetersPerSecondPerSquareMeter >= oneCubicMeterPerSecondPerSquareMeter);

            Assert.False(oneCubicMeterPerSecondPerSquareMeter > twoCubicMetersPerSecondPerSquareMeter);
            Assert.False(oneCubicMeterPerSecondPerSquareMeter >= twoCubicMetersPerSecondPerSquareMeter);
            Assert.False(twoCubicMetersPerSecondPerSquareMeter < oneCubicMeterPerSecondPerSquareMeter);
            Assert.False(twoCubicMetersPerSecondPerSquareMeter <= oneCubicMeterPerSecondPerSquareMeter);
        }
        public void As_SIUnitSystem_ThrowsArgumentExceptionIfNotSupported()
        {
            var           quantity           = new VolumeFlowPerArea(value: 1, unit: VolumeFlowPerArea.BaseUnit);
            Func <object> AsWithSIUnitSystem = () => quantity.As(UnitSystem.SI);

            if (SupportsSIUnitSystem)
            {
                var value = (double)AsWithSIUnitSystem();
                Assert.Equal(1, value);
            }
            else
            {
                Assert.Throws <ArgumentException>(AsWithSIUnitSystem);
            }
        }
        public void VolumeFlowPerArea_QuantityInfo_ReturnsQuantityInfoDescribingQuantity()
        {
            var quantity = new VolumeFlowPerArea(1, VolumeFlowPerAreaUnit.CubicMeterPerSecondPerSquareMeter);

            QuantityInfo <VolumeFlowPerAreaUnit> quantityInfo = quantity.QuantityInfo;

            Assert.Equal(VolumeFlowPerArea.Zero, quantityInfo.Zero);
            Assert.Equal("VolumeFlowPerArea", quantityInfo.Name);
            Assert.Equal(QuantityType.VolumeFlowPerArea, quantityInfo.QuantityType);

            var units     = EnumUtils.GetEnumValues <VolumeFlowPerAreaUnit>().Except(new[] { VolumeFlowPerAreaUnit.Undefined }).ToArray();
            var unitNames = units.Select(x => x.ToString());

            // Obsolete members
            Assert.Equal(units, quantityInfo.Units);
            Assert.Equal(unitNames, quantityInfo.UnitNames);
        }
        public void EqualityOperators()
        {
            var a = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1);
            var b = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(2);

#pragma warning disable CS8073
// ReSharper disable EqualExpressionComparison

            Assert.True(a == a);
            Assert.False(a != a);

            Assert.True(a != b);
            Assert.False(a == b);

            Assert.False(a == null);
            Assert.False(null == a);

// ReSharper restore EqualExpressionComparison
#pragma warning restore CS8073
        }
        public void Convert_ChangeType_BaseDimensions_EqualsBaseDimensions()
        {
            var quantity = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1.0);

            Assert.Equal(VolumeFlowPerArea.BaseDimensions, Convert.ChangeType(quantity, typeof(BaseDimensions)));
        }
        public void Convert_ChangeType_QuantityInfo_EqualsQuantityInfo()
        {
            var quantity = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1.0);

            Assert.Equal(VolumeFlowPerArea.Info, Convert.ChangeType(quantity, typeof(QuantityInfo)));
        }
        public void Convert_ChangeType_UnitType_EqualsUnit()
        {
            var quantity = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1.0);

            Assert.Equal(quantity.Unit, Convert.ChangeType(quantity, typeof(VolumeFlowPerAreaUnit)));
        }
        public void Convert_ToUInt64_EqualsValueAsSameType()
        {
            var quantity = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1.0);

            Assert.Equal((ulong)quantity.Value, Convert.ToUInt64(quantity));
        }
        public void Convert_ToString_EqualsToString()
        {
            var quantity = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1.0);

            Assert.Equal(quantity.ToString(), Convert.ToString(quantity));
        }
        public void Convert_ToSingle_EqualsValueAsSameType()
        {
            var quantity = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1.0);

            Assert.Equal((float)quantity.Value, Convert.ToSingle(quantity));
        }
        public void Convert_ToDateTime_ThrowsInvalidCastException()
        {
            var quantity = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1.0);

            Assert.Throws <InvalidCastException>(() => Convert.ToDateTime(quantity));
        }
        public void ToString_NullProvider_EqualsCurrentUICulture()
        {
            var quantity = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1.0);

            Assert.Equal(quantity.ToString(CultureInfo.CurrentUICulture, "g"), quantity.ToString(null, "g"));
        }
        public void ToString_NullArgs_ThrowsArgumentNullException()
        {
            var quantity = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1.0);

            Assert.Throws <ArgumentNullException>(() => quantity.ToString(null, "g", null));
        }
        public void EqualsReturnsFalseOnNull()
        {
            VolumeFlowPerArea cubicmeterpersecondpersquaremeter = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1);

            Assert.False(cubicmeterpersecondpersquaremeter.Equals(null));
        }
        public void CompareToThrowsOnNull()
        {
            VolumeFlowPerArea cubicmeterpersecondpersquaremeter = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1);

            Assert.Throws <ArgumentNullException>(() => cubicmeterpersecondpersquaremeter.CompareTo(null));
        }
        public void GetHashCode_Equals()
        {
            var quantity = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1.0);

            Assert.Equal(new { VolumeFlowPerArea.Info.Name, quantity.Value, quantity.Unit }.GetHashCode(), quantity.GetHashCode());
        }
        public void Convert_ChangeType_InvalidType_ThrowsInvalidCastException()
        {
            var quantity = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1.0);

            Assert.Throws <InvalidCastException>(() => Convert.ChangeType(quantity, typeof(QuantityFormatter)));
        }
        public void Equals_NegativeRelativeTolerance_ThrowsArgumentOutOfRangeException()
        {
            var v = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1);

            Assert.Throws <ArgumentOutOfRangeException>(() => v.Equals(VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1), -1, ComparisonType.Relative));
        }
        public void NegationOperator_ReturnsQuantity_WithNegatedValue(double value)
        {
            var quantity = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(value);

            Assert.Equal(VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(-value), -quantity);
        }
        public void EqualsReturnsFalseOnTypeMismatch()
        {
            VolumeFlowPerArea cubicmeterpersecondpersquaremeter = VolumeFlowPerArea.FromCubicMetersPerSecondPerSquareMeter(1);

            Assert.False(cubicmeterpersecondpersquaremeter.Equals(new object()));
        }