public void TestBridgeUnits1() { sys.ClearCache(); // SI UnitOfMeasure kg = sys.GetUOM(Unit.KILOGRAM); UnitOfMeasure m = sys.GetUOM(Unit.METRE); UnitOfMeasure km = sys.GetUOM(Prefix.KILO, m); UnitOfMeasure litre = sys.GetUOM(Unit.LITRE); UnitOfMeasure N = sys.GetUOM(Unit.NEWTON); UnitOfMeasure m3 = sys.GetUOM(Unit.CUBIC_METRE); UnitOfMeasure m2 = sys.GetUOM(Unit.SQUARE_METRE); UnitOfMeasure Nm = sys.GetUOM(Unit.NEWTON_METRE); UnitOfMeasure kPa = sys.GetUOM(Prefix.KILO, sys.GetUOM(Unit.PASCAL)); UnitOfMeasure celsius = sys.GetUOM(Unit.CELSIUS); // US UnitOfMeasure lbm = sys.GetUOM(Unit.POUND_MASS); UnitOfMeasure lbf = sys.GetUOM(Unit.POUND_FORCE); UnitOfMeasure mi = sys.GetUOM(Unit.MILE); UnitOfMeasure ft = sys.GetUOM(Unit.FOOT); UnitOfMeasure gal = sys.GetUOM(Unit.US_GALLON); UnitOfMeasure ft2 = sys.GetUOM(Unit.SQUARE_FOOT); UnitOfMeasure ft3 = sys.GetUOM(Unit.CUBIC_FOOT); UnitOfMeasure acre = sys.GetUOM(Unit.ACRE); UnitOfMeasure ftlbf = sys.GetUOM(Unit.FOOT_POUND_FORCE); UnitOfMeasure psi = sys.GetUOM(Unit.PSI); UnitOfMeasure fahrenheit = sys.GetUOM(Unit.FAHRENHEIT); Assert.IsTrue(ft.BridgeOffset == double.MinValue); Quantity q1 = new Quantity(10, ft); Quantity q2 = q1.Convert(m); Assert.IsTrue(IsCloseTo(q2.Amount, 3.048, DELTA6)); Quantity q3 = q2.Convert(q1.UOM); Assert.IsTrue(IsCloseTo(q3.Amount, 10, DELTA6)); q1 = new Quantity(10, kg); q2 = q1.Convert(lbm); Assert.IsTrue(IsCloseTo(q2.Amount, 22.0462, DELTA4)); q3 = q2.Convert(q1.UOM); Assert.IsTrue(IsCloseTo(q3.Amount, 10, DELTA6)); q1 = new Quantity(212, fahrenheit); q2 = q1.Convert(celsius); Assert.IsTrue(IsCloseTo(q2.Amount, 100, DELTA6)); q3 = q2.Convert(q1.UOM); Assert.IsTrue(IsCloseTo(q3.Amount, 212, DELTA6)); UnitOfMeasure mm = sys.CreateProductUOM(UnitType.AREA, "name", "mxm", "", m, m); q1 = new Quantity(10, mm); q2 = q1.Convert(ft2); Assert.IsTrue(IsCloseTo(q2.Amount, 107.639104167, DELTA6)); q2 = q2.Convert(m2); Assert.IsTrue(IsCloseTo(q2.Amount, 10, DELTA6)); UnitOfMeasure mhr = sys.GetUOM("m/hr"); if (mhr == null) { mhr = sys.CreateScalarUOM(UnitType.VELOCITY, "m/hr", "m/hr", ""); mhr.SetConversion((double)1 / (double)3600, sys.GetUOM(Unit.METRE_PER_SEC)); } q1 = new Quantity(10, psi); q2 = q1.Convert(kPa); Assert.IsTrue(IsCloseTo(q2.Amount, 68.94757280343134, DELTA6)); q2 = q2.Convert(psi); Assert.IsTrue(IsCloseTo(q2.Amount, 10, DELTA6)); q1 = new Quantity(10, mhr); q2 = q1.Convert(sys.GetUOM(Unit.FEET_PER_SEC)); Assert.IsTrue(IsCloseTo(q2.Amount, 0.009113444152814231, DELTA6)); q2 = q2.Convert(mhr); Assert.IsTrue(IsCloseTo(q2.Amount, 10, DELTA6)); q1 = new Quantity(10, gal); q2 = q1.Convert(litre); Assert.IsTrue(IsCloseTo(q2.Amount, 37.8541178, DELTA6)); q2 = q2.Convert(gal); Assert.IsTrue(IsCloseTo(q2.Amount, 10, DELTA6)); q1 = new Quantity(10, m3); q2 = q1.Convert(ft3); Assert.IsTrue(IsCloseTo(q2.Amount, 353.1466672398284, DELTA6)); q2 = q2.Convert(m3); Assert.IsTrue(IsCloseTo(q2.Amount, 10, DELTA6)); q1 = new Quantity(10, N); q2 = q1.Convert(lbf); Assert.IsTrue(IsCloseTo(q2.Amount, 2.24809, DELTA6)); q2 = q2.Convert(N); Assert.IsTrue(IsCloseTo(q2.Amount, 10, DELTA6)); q1 = new Quantity(10, ftlbf); q2 = q1.Convert(Nm); Assert.IsTrue(IsCloseTo(q2.Amount, 13.558179483314004, DELTA6)); q2 = q2.Convert(ftlbf); Assert.IsTrue(IsCloseTo(q2.Amount, 10, DELTA6)); q1 = new Quantity(10, lbm); q2 = q1.Convert(kg); Assert.IsTrue(IsCloseTo(q2.Amount, 4.5359237, DELTA6)); q2 = q2.Convert(lbm); Assert.IsTrue(IsCloseTo(q2.Amount, 10, DELTA6)); q1 = new Quantity(10, km); q2 = q1.Convert(mi); Assert.IsTrue(IsCloseTo(q2.Amount, 6.21371192237, DELTA6)); q2 = q2.Convert(km); Assert.IsTrue(IsCloseTo(q2.Amount, 10, DELTA6)); // length q1 = new Quantity(10, sys.GetUOM(Unit.METRE)); q2 = q1.Convert(sys.GetUOM(Unit.INCH)); Assert.IsTrue(IsCloseTo(q2.Amount, 393.7007874015748, DELTA6)); q2 = q2.Convert(sys.GetUOM(Unit.METRE)); Assert.IsTrue(IsCloseTo(q2.Amount, 10, DELTA6)); q2 = q1.Convert(sys.GetUOM(Unit.FOOT)); Assert.IsTrue(IsCloseTo(q2.Amount, 32.80839895013123, DELTA6)); q2 = q2.Convert(sys.GetUOM(Unit.METRE)); Assert.IsTrue(IsCloseTo(q2.Amount, 10, DELTA6)); // area q1 = new Quantity(10, sys.GetUOM(Unit.SQUARE_METRE)); q2 = q1.Convert(sys.GetUOM(Unit.SQUARE_INCH)); Assert.IsTrue(IsCloseTo(q2.Amount, 15500.031000062, DELTA6)); q2 = q2.Convert(sys.GetUOM(Unit.SQUARE_METRE)); Assert.IsTrue(IsCloseTo(q2.Amount, 10, DELTA6)); q2 = q1.Convert(sys.GetUOM(Unit.SQUARE_FOOT)); Assert.IsTrue(IsCloseTo(q2.Amount, 107.6391041670972, DELTA6)); q2 = q2.Convert(sys.GetUOM(Unit.SQUARE_METRE)); Assert.IsTrue(IsCloseTo(q2.Amount, 10, DELTA6)); // volume q1 = new Quantity(10, sys.GetUOM(Unit.LITRE)); q2 = q1.Convert(sys.GetUOM(Unit.US_GALLON)); Assert.IsTrue(IsCloseTo(q2.Amount, 2.641720523581484, DELTA6)); q2 = q2.Convert(sys.GetUOM(Unit.LITRE)); Assert.IsTrue(IsCloseTo(q2.Amount, 10, DELTA6)); q1 = new Quantity(4.0468564224, m); q2 = new Quantity(1000, m); q3 = q1.Multiply(q2); Assert.IsTrue(IsCloseTo(q3.Amount, 4046.8564224, DELTA6)); UnitOfMeasure uom = q3.UOM; UnitOfMeasure powerBase = uom.GetPowerBase(); double sf = uom.ScalingFactor; Assert.IsTrue(uom.AbscissaUnit.Equals(m2)); Assert.IsTrue(powerBase.Equals(m)); Assert.IsTrue(IsCloseTo(sf, 1, DELTA6)); Quantity q4 = q3.Convert(acre); Assert.IsTrue(IsCloseTo(q4.Amount, 1, DELTA6)); Assert.IsTrue(q4.UOM.Equals(acre)); UnitOfMeasure usSec = sys.GetSecond(); UnitOfMeasure v1 = sys.GetUOM("m/hr"); UnitOfMeasure v2 = sys.GetUOM(Unit.METRE_PER_SEC); UnitOfMeasure v3 = sys.CreateQuotientUOM(UnitType.VELOCITY, "", "ft/usec", "", ft, usSec); UnitOfMeasure d1 = sys.GetUOM(Unit.KILOGRAM_PER_CU_METRE); UnitOfMeasure d2 = sys.CreateQuotientUOM(UnitType.DENSITY, "density", "lbm/gal", "", lbm, gal); q1 = new Quantity(10, v1); q2 = q1.Convert(v3); q1 = new Quantity(10, v1); q2 = q1.Convert(v2); q1 = new Quantity(10, d1); q2 = q1.Convert(d2); }