Ejemplo n.º 1
0
        public void TestClassifications()
        {
            UnitType ut;

            UnitOfMeasure one  = sys.GetOne();
            UnitOfMeasure s    = sys.GetSecond();
            UnitOfMeasure m    = sys.GetUOM(Unit.METRE);
            UnitOfMeasure kg   = sys.GetUOM(Unit.KILOGRAM);
            UnitOfMeasure degC = sys.GetUOM(Unit.CELSIUS);
            UnitOfMeasure amp  = sys.GetUOM(Unit.AMPERE);
            UnitOfMeasure mol  = sys.GetUOM(Unit.MOLE);
            UnitOfMeasure cd   = sys.GetUOM(Unit.CANDELA);


            // base types
            Assert.IsTrue(one.Classify().UOMType.Equals(UnitType.UNITY));
            Assert.IsTrue(s.Classify().UOMType.Equals(UnitType.TIME));
            Assert.IsTrue(m.Classify().UOMType.Equals(UnitType.LENGTH));
            Assert.IsTrue(kg.Classify().UOMType.Equals(UnitType.MASS));
            Assert.IsTrue(degC.Classify().UOMType.Equals(UnitType.TEMPERATURE));
            Assert.IsTrue(amp.Classify().UOMType.Equals(UnitType.ELECTRIC_CURRENT));
            Assert.IsTrue(mol.Classify().UOMType.Equals(UnitType.SUBSTANCE_AMOUNT));
            Assert.IsTrue(cd.Classify().UOMType.Equals(UnitType.LUMINOSITY));
            Assert.IsTrue(sys.GetUOM(Unit.US_DOLLAR).Classify().UOMType.Equals(UnitType.CURRENCY));
            Assert.IsTrue(sys.GetUOM(Unit.BIT).Classify().UOMType.Equals(UnitType.COMPUTER_SCIENCE));

            // area
            UnitOfMeasure uom = sys.GetUOM(Unit.FOOT).Power(2);

            Assert.IsTrue(uom.Classify().UOMType.Equals(UnitType.AREA));

            // volume
            Assert.IsTrue(m.Multiply(m).Multiply(m).Classify().UOMType.Equals(UnitType.VOLUME));

            // density
            Assert.IsTrue(kg.Divide(m.Power(3)).Classify().UOMType.Equals(UnitType.DENSITY));

            // speed
            Assert.IsTrue(m.Divide(s).Classify().UOMType.Equals(UnitType.VELOCITY));

            // volumetric flow
            Assert.IsTrue(m.Power(3).Divide(s).Classify().UOMType.Equals(UnitType.VOLUMETRIC_FLOW));

            // mass flow
            Assert.IsTrue(kg.Divide(s).Classify().UOMType.Equals(UnitType.MASS_FLOW));

            // frequency
            Assert.IsTrue(one.Divide(s).Classify().UOMType.Equals(UnitType.FREQUENCY));

            // acceleration
            Assert.IsTrue(m.Divide(s.Power(2)).Classify().UOMType.Equals(UnitType.ACCELERATION));

            // force
            Assert.IsTrue(m.Multiply(kg).Divide(s.Power(2)).Classify().UOMType.Equals(UnitType.FORCE));

            // pressure
            Assert.IsTrue(kg.Divide(m).Divide(s.Power(2)).Classify().UOMType.Equals(UnitType.PRESSURE));

            // energy
            Assert.IsTrue(kg.Multiply(m).Multiply(m).Divide(s.Power(2)).Classify().UOMType.Equals(UnitType.ENERGY));

            // Power
            Assert.IsTrue(kg.Multiply(m).Multiply(m).Divide(s.Power(3)).Classify().UOMType.Equals(UnitType.POWER));

            // electric charge
            Assert.IsTrue(s.Multiply(amp).Classify().UOMType.Equals(UnitType.ELECTRIC_CHARGE));

            // electromotive force
            Assert.IsTrue(kg.Multiply(m.Power(2)).Divide(amp).Divide(s.Power(3)).Classify().UOMType.Equals(UnitType.ELECTROMOTIVE_FORCE));

            // electric resistance
            Assert.IsTrue(kg.Multiply(m.Power(-3)).Multiply(amp.Power(2)).Multiply(s.Power(4)).Classify().UOMType.Equals(UnitType.ELECTRIC_RESISTANCE));

            // electric capacitance
            Assert.IsTrue(s.Power(-3).Multiply(amp.Power(-2)).Multiply(m.Power(2)).Divide(kg).Classify().UOMType.Equals(UnitType.ELECTRIC_CAPACITANCE));

            // electric permittivity
            Assert.IsTrue(s.Power(4).Multiply(amp.Power(2)).Multiply(m.Power(-3)).Divide(kg).Classify().UOMType.Equals(UnitType.ELECTRIC_PERMITTIVITY));

            // electric field strength
            Assert.IsTrue(amp.Divide(m).Classify().UOMType.Equals(UnitType.ELECTRIC_FIELD_STRENGTH));

            // magnetic flux
            Assert.IsTrue(kg.Divide(amp).Divide(s.Power(2)).Multiply(m.Power(2)).Classify().UOMType.Equals(UnitType.MAGNETIC_FLUX));

            // magnetic flux density
            Assert.IsTrue(kg.Divide(amp).Divide(s.Power(2)).Classify().UOMType.Equals(UnitType.MAGNETIC_FLUX_DENSITY));

            // inductance
            Assert.IsTrue(kg.Multiply(amp.Power(-2)).Divide(s.Power(2)).Multiply(m.Power(2)).Classify().UOMType.Equals(UnitType.ELECTRIC_INDUCTANCE));

            // conductance
            Assert.IsTrue(kg.Power(-1).Multiply(amp.Power(2)).Multiply(s.Power(3)).Multiply(m.Power(-2)).Classify().UOMType.Equals(UnitType.ELECTRIC_CONDUCTANCE));

            // luminous flux
            ut = cd.Multiply(one).Classify().UOMType;
            Assert.IsTrue(ut.Equals(UnitType.LUMINOUS_FLUX) || ut.Equals(UnitType.LUMINOSITY));

            // illuminance
            Assert.IsTrue(cd.Divide(m.Power(2)).Classify().UOMType.Equals(UnitType.ILLUMINANCE));

            // radiation dose absorbed and effective
            ut = m.Power(2).Divide(s.Power(2)).Classify().UOMType;
            Assert.IsTrue(ut.Equals(UnitType.RADIATION_DOSE_ABSORBED) || ut.Equals(UnitType.RADIATION_DOSE_EFFECTIVE));

            // radiation dose rate
            Assert.IsTrue(m.Power(2).Divide(s.Power(3)).Classify().UOMType.Equals(UnitType.RADIATION_DOSE_RATE));

            // radioactivity
            ut = s.Power(-1).Classify().UOMType;
            Assert.IsTrue(ut.Equals(UnitType.RADIOACTIVITY) || ut.Equals(UnitType.FREQUENCY));

            // catalytic activity
            Assert.IsTrue(mol.Divide(s).Classify().UOMType.Equals(UnitType.CATALYTIC_ACTIVITY));

            // dynamic viscosity
            Assert.IsTrue(kg.Divide(s).Multiply(m).Classify().UOMType.Equals(UnitType.DYNAMIC_VISCOSITY));

            // kinematic viscosity
            Assert.IsTrue(m.Power(2).Divide(s).Classify().UOMType.Equals(UnitType.KINEMATIC_VISCOSITY));

            // reciprocal length
            Assert.IsTrue(one.Divide(m).Classify().UOMType.Equals(UnitType.RECIPROCAL_LENGTH));

            // plane angle
            Assert.IsTrue(sys.GetTypeMap(UnitType.PLANE_ANGLE).IsEmpty);
            Assert.IsTrue(sys.GetUOM(Unit.RADIAN).GetBaseUnitsOfMeasure().Count == 0);

            // solid angle
            Assert.IsTrue(sys.GetTypeMap(UnitType.SOLID_ANGLE).IsEmpty);
            Assert.IsTrue(sys.GetUOM(Unit.STERADIAN).GetBaseUnitsOfMeasure().Count == 0);

            // time squared
            Assert.IsTrue(s.Power(2).Classify().UOMType.Equals(UnitType.TIME_SQUARED));

            // molar concentration
            Assert.IsTrue(mol.Divide(m.Power(3)).Classify().UOMType.Equals(UnitType.MOLAR_CONCENTRATION));

            // irradiance
            Assert.IsTrue(kg.Divide(s.Power(3)).Classify().UOMType.Equals(UnitType.IRRADIANCE));
        }