Exemplo n.º 1
0
                    1026.98355, MolarityUnit.MolesPerCubicMeter)]    // test from JonathanDavies626
        public void MolarityFromMassConcentrationAndMolarMass(
            double massConcValue, MassConcentrationUnit massConcUnit,
            double molarMassValue, MolarMassUnit molarMassUnit,
            double expectedMolarityValue, MolarityUnit expectedMolarityUnit, double tolerance = 1e-5)
        {
            var massConcentration = new MassConcentration(massConcValue, massConcUnit);
            var molarMass         = new MolarMass(molarMassValue, molarMassUnit);

            Molarity molarity = massConcentration.ToMolarity(molarMass);     // molarity / molarMass

            AssertEx.EqualTolerance(expectedMolarityValue, molarity.As(expectedMolarityUnit), tolerance);
        }
Exemplo n.º 2
0
                    6, MassUnit.Kilogram)]  // synthetic data
        public static void ComponentMassFromMassConcentrationAndSolutionVolume(
            double massConcValue, MassConcentrationUnit massConcUnit,
            double volumeValue, VolumeUnit volumeUnit,
            double expectedMassValue, MassUnit expectedMassUnit, double tolerance = 1e-5)
        {
            var massConcentration = new MassConcentration(massConcValue, massConcUnit);
            var volume            = new Volume(volumeValue, volumeUnit);

            Mass massComponent = massConcentration * volume;

            AssertEx.EqualTolerance(expectedMassValue, massComponent.As(expectedMassUnit), tolerance);
        }
Exemplo n.º 3
0
                    0.5, VolumeConcentrationUnit.DecimalFraction)]  // synthetic data
        public void VolumeConcentrationFromMassConcentrationAndDensity(
            double componentDensityValue, DensityUnit componentDensityUnit,
            double massConcValue, MassConcentrationUnit masConcUnit,
            double expectedVolumeConcValue, VolumeConcentrationUnit expectedVolumeConcUnit, double tolerence = 1e-5)
        {
            var density           = new Density(componentDensityValue, componentDensityUnit);
            var massConcentration = new MassConcentration(massConcValue, masConcUnit);

            VolumeConcentration volumeConcentration = massConcentration.ToVolumeConcentration(density); // massConcentration / density;

            AssertEx.EqualTolerance(expectedVolumeConcValue, volumeConcentration.As(expectedVolumeConcUnit), tolerence);
        }
Exemplo n.º 4
0
                    4.16667, MassConcentrationUnit.KilogramPerCubicMeter)]    // HCL solution
        public void ExpectMolarityConvertedToMassConcentrationCorrectly(
            double molarityValue, MolarityUnit molarityUnit,
            double componentMolarMassValue, MolarMassUnit compontMolarMassUnit,
            double expectedMassConcValue, MassConcentrationUnit expectedMassConcUnit, double tolerence = 1e-5)
        {
            var molarity           = new Molarity(molarityValue, molarityUnit);
            var componentMolarMass = new MolarMass(componentMolarMassValue, compontMolarMassUnit);

            MassConcentration concentration = molarity.ToMassConcentration(componentMolarMass);  // molarity * molarMass

            AssertEx.EqualTolerance(expectedMassConcValue, concentration.As(expectedMassConcUnit), tolerence);
        }
                    23.03422, MassConcentrationUnit.GramPerLiter)]  // 29.19419518377693 = VolumeConcentration_0_5M_Ethanol
        public void MassConcentrationFromVolumeConcentrationAndComponentDensity(
            double volumeConcValue, VolumeConcentrationUnit volumeConcUnit,
            double componentDensityValue, DensityUnit componentDensityUnit,
            double expectedMassConcValue, MassConcentrationUnit expectedMassConcUnit,
            double tolerence = 1e-5)
        {
            var volumeConcentration = new VolumeConcentration(volumeConcValue, volumeConcUnit);
            var componentDensity    = new Density(componentDensityValue, componentDensityUnit);

            MassConcentration massConcentration = volumeConcentration.ToMassConcentration(componentDensity); // volumeConcentration * density

            AssertEx.EqualTolerance(expectedMassConcValue, massConcentration.As(expectedMassConcUnit), tolerence);
        }
Exemplo n.º 6
0
        private double GetValueAs(MassConcentrationUnit unit)
        {
            if(Unit == unit)
                return _value;

            var baseUnitValue = GetValueInBaseUnit();

            switch(unit)
            {
                case MassConcentrationUnit.CentigramPerDeciliter: return (baseUnitValue*1e-1) / 1e-2d;
                case MassConcentrationUnit.CentigramPerLiter: return (baseUnitValue) / 1e-2d;
                case MassConcentrationUnit.CentigramPerMicroliter: return (baseUnitValue*1e-6) / 1e-2d;
                case MassConcentrationUnit.CentigramPerMilliliter: return (baseUnitValue*1e-3) / 1e-2d;
                case MassConcentrationUnit.DecigramPerDeciliter: return (baseUnitValue*1e-1) / 1e-1d;
                case MassConcentrationUnit.DecigramPerLiter: return (baseUnitValue) / 1e-1d;
                case MassConcentrationUnit.DecigramPerMicroliter: return (baseUnitValue*1e-6) / 1e-1d;
                case MassConcentrationUnit.DecigramPerMilliliter: return (baseUnitValue*1e-3) / 1e-1d;
                case MassConcentrationUnit.GramPerCubicCentimeter: return baseUnitValue*1e-3;
                case MassConcentrationUnit.GramPerCubicMeter: return baseUnitValue*1e3;
                case MassConcentrationUnit.GramPerCubicMillimeter: return baseUnitValue*1e-6;
                case MassConcentrationUnit.GramPerDeciliter: return baseUnitValue*1e-1;
                case MassConcentrationUnit.GramPerLiter: return baseUnitValue;
                case MassConcentrationUnit.GramPerMicroliter: return baseUnitValue*1e-6;
                case MassConcentrationUnit.GramPerMilliliter: return baseUnitValue*1e-3;
                case MassConcentrationUnit.KilogramPerCubicCentimeter: return (baseUnitValue*1e-3) / 1e3d;
                case MassConcentrationUnit.KilogramPerCubicMeter: return (baseUnitValue*1e3) / 1e3d;
                case MassConcentrationUnit.KilogramPerCubicMillimeter: return (baseUnitValue*1e-6) / 1e3d;
                case MassConcentrationUnit.KilogramPerLiter: return (baseUnitValue) / 1e3d;
                case MassConcentrationUnit.KilopoundPerCubicFoot: return (baseUnitValue*0.062427961) / 1e3d;
                case MassConcentrationUnit.KilopoundPerCubicInch: return (baseUnitValue*3.6127298147753e-5) / 1e3d;
                case MassConcentrationUnit.MicrogramPerCubicMeter: return (baseUnitValue*1e3) / 1e-6d;
                case MassConcentrationUnit.MicrogramPerDeciliter: return (baseUnitValue*1e-1) / 1e-6d;
                case MassConcentrationUnit.MicrogramPerLiter: return (baseUnitValue) / 1e-6d;
                case MassConcentrationUnit.MicrogramPerMicroliter: return (baseUnitValue*1e-6) / 1e-6d;
                case MassConcentrationUnit.MicrogramPerMilliliter: return (baseUnitValue*1e-3) / 1e-6d;
                case MassConcentrationUnit.MilligramPerCubicMeter: return (baseUnitValue*1e3) / 1e-3d;
                case MassConcentrationUnit.MilligramPerDeciliter: return (baseUnitValue*1e-1) / 1e-3d;
                case MassConcentrationUnit.MilligramPerLiter: return (baseUnitValue) / 1e-3d;
                case MassConcentrationUnit.MilligramPerMicroliter: return (baseUnitValue*1e-6) / 1e-3d;
                case MassConcentrationUnit.MilligramPerMilliliter: return (baseUnitValue*1e-3) / 1e-3d;
                case MassConcentrationUnit.NanogramPerDeciliter: return (baseUnitValue*1e-1) / 1e-9d;
                case MassConcentrationUnit.NanogramPerLiter: return (baseUnitValue) / 1e-9d;
                case MassConcentrationUnit.NanogramPerMicroliter: return (baseUnitValue*1e-6) / 1e-9d;
                case MassConcentrationUnit.NanogramPerMilliliter: return (baseUnitValue*1e-3) / 1e-9d;
                case MassConcentrationUnit.OuncePerImperialGallon: return baseUnitValue*0.1603586720609;
                case MassConcentrationUnit.OuncePerUSGallon: return baseUnitValue*0.1335264711843;
                case MassConcentrationUnit.PicogramPerDeciliter: return (baseUnitValue*1e-1) / 1e-12d;
                case MassConcentrationUnit.PicogramPerLiter: return (baseUnitValue) / 1e-12d;
                case MassConcentrationUnit.PicogramPerMicroliter: return (baseUnitValue*1e-6) / 1e-12d;
                case MassConcentrationUnit.PicogramPerMilliliter: return (baseUnitValue*1e-3) / 1e-12d;
                case MassConcentrationUnit.PoundPerCubicFoot: return baseUnitValue*0.062427961;
                case MassConcentrationUnit.PoundPerCubicInch: return baseUnitValue*3.6127298147753e-5;
                case MassConcentrationUnit.PoundPerImperialGallon: return baseUnitValue/9.9776398e1;
                case MassConcentrationUnit.PoundPerUSGallon: return baseUnitValue/1.19826427e2;
                case MassConcentrationUnit.SlugPerCubicFoot: return baseUnitValue*0.00194032033;
                case MassConcentrationUnit.TonnePerCubicCentimeter: return baseUnitValue*1e-9;
                case MassConcentrationUnit.TonnePerCubicMeter: return baseUnitValue*0.001;
                case MassConcentrationUnit.TonnePerCubicMillimeter: return baseUnitValue*1e-12;
                default:
                    throw new NotImplementedException($"Can not convert {Unit} to {unit}.");
            }
        }
Exemplo n.º 7
0
 /// <summary>
 ///     Converts this Duration to another Duration with the unit representation <paramref name="unit" />.
 /// </summary>
 /// <returns>A Duration with the specified unit.</returns>
 public MassConcentration ToUnit(MassConcentrationUnit unit)
 {
         
     var convertedValue = GetValueAs(unit);
     return new MassConcentration(convertedValue, unit);
 }
Exemplo n.º 8
0
 /// <summary>
 ///     Convert to the unit representation <paramref name="unit" />.
 /// </summary>
 /// <returns>Value converted to the specified unit.</returns>
 public double As(MassConcentrationUnit unit) => GetValueAs(unit);        
Exemplo n.º 9
0
 /// <summary>
 ///     Dynamically convert from value and unit enum <see cref="MassConcentrationUnit" /> to <see cref="MassConcentration" />.
 /// </summary>
 /// <param name="value">Value to convert from.</param>
 /// <param name="fromUnit">Unit to convert from.</param>
 /// <returns>MassConcentration unit value.</returns>
 public static MassConcentration From(double value, MassConcentrationUnit fromUnit)
 {
     return new MassConcentration(value, fromUnit);
 }
Exemplo n.º 10
0
 /// <summary>
 ///     Creates the quantity with the given numeric value and unit.
 /// </summary>
 /// <param name="value">The numeric value to construct this quantity with.</param>
 /// <param name="unit">The unit representation to construct this quantity with.</param>
 /// <exception cref="ArgumentException">If value is NaN or Infinity.</exception>
 public MassConcentration(double value, MassConcentrationUnit unit)
 {
     _value = value;
     _unit = unit;
 }
Exemplo n.º 11
0
 public static void HasConversion(this PropertyBuilder <MassConcentration> propertyBuilder, MassConcentrationUnit unit) =>
 propertyBuilder.HasConversion(v => v.As(unit), v => new MassConcentration(v, unit));