public void ConstructorThrowsArgumentExceptionWithUndefinedUnits(LengthUnit length, MassUnit mass, DurationUnit time, ElectricCurrentUnit current, TemperatureUnit temperature, AmountOfSubstanceUnit amount, LuminousIntensityUnit luminousIntensity) { var baseUnits = new BaseUnits(length, mass, time, current, temperature, amount, luminousIntensity); Assert.Throws <ArgumentException>(() => new UnitSystem(baseUnits)); }
public void ToStringGivesExpectedResult() { var siBaseUnits = new BaseUnits(LengthUnit.Meter, MassUnit.Kilogram, DurationUnit.Second, ElectricCurrentUnit.Ampere, TemperatureUnit.Kelvin, AmountOfSubstanceUnit.Mole, LuminousIntensityUnit.Candela); Assert.Equal("[Length]: m, [Mass]: kg, [Time]: s, [Current]: A, [Temperature]: K, [Amount]: mol, [LuminousIntensity]: cd", siBaseUnits.ToString()); }
public void GetUnitInfosFor_GivenBaseUnitsWithNoMatch_ReturnsEmpty() { var baseUnitsWithNoMatch = new BaseUnits(mass: MassUnit.Kilogram); var result = Length.Info.GetUnitInfosFor(baseUnitsWithNoMatch); Assert.Empty(result); }
public void GetUnitInfosFor_GivenBaseUnitsWithOneMatch_ReturnsOneMatch() { var baseUnitsWithOneMatch = new BaseUnits(LengthUnit.Foot); var result = Length.Info.GetUnitInfosFor(baseUnitsWithOneMatch); Assert.Collection(result, element1 => Assert.Equal(LengthUnit.Foot, element1.Value)); }
protected Enumeration(PreFix SI, BaseUnits baseunit) { LocalC = PrefixSISize(SI); GlobalC = 1; Symbol = PrefixSISymbol(SI) + BaseUnitSISymbol(baseunit); B = 0; ActualC = 1; }
/// <summary> /// Construct a BaseUnitSystem with default BaseUnits and a lazy-loaded set of unit configurations (for each quantity) /// </summary> /// <param name="baseUnits">The base units for this unit system</param> /// <param name="systemInfos">The units configuration for this unit system (lazy-loaded)</param> protected BaseUnitSystem(BaseUnits baseUnits, Lazy <UnitSystemInfo?[]> systemInfos) : base(systemInfos) { if (!baseUnits.IsFullyDefined) // TODO should we required that baseUnits are FullyDefined? { throw new ArgumentException("A unit system must have all base units defined.", nameof(baseUnits)); } BaseUnits = baseUnits; }
public void ConstructorImplementedProperly() { var baseUnits = new BaseUnits(LengthUnit.Meter, MassUnit.Kilogram, DurationUnit.Second, ElectricCurrentUnit.Ampere, TemperatureUnit.Kelvin, AmountOfSubstanceUnit.Mole, LuminousIntensityUnit.Candela); var unitSystem = new UnitSystem(baseUnits); Assert.Equal(unitSystem.BaseUnits, baseUnits); }
static readonly double[] cutoverPoint = { 90.0, 90.0, 24.0, 365.25 }; // Number of smaller units accumulated before cutting over to next larger unit public static string FormatElapsedTime(double elapsedTime, BaseUnits baseUnits) { int unitsIndex = (int)baseUnits; while ((unitsIndex < lastUnitsIndex) && (elapsedTime > cutoverPoint[unitsIndex])) { elapsedTime /= unitsPerUnit[unitsIndex++]; } return(String.Format("{0:" + formatSpecifiers[unitsIndex] + "} {1}", elapsedTime, unitAbbreviations[unitsIndex])); }
public string CreateProject(string name, BaseUnits units) { Guid guid = Guid.NewGuid(); model = InitializeModel(units); string path = GetFolderPath(guid.ToString()) + guid + ".ifc"; model.SaveAs(path, StorageType.Ifc); model.Close(); return(guid.ToString()); }
public void ExistsInWorksCorrectly() { Assert.False(BaseUnits.Undefined.IsSubsetOf(siBaseUnits)); Assert.False(siBaseUnits.IsSubsetOf(BaseUnits.Undefined)); var meterBaseUnits = new BaseUnits(LengthUnit.Meter); Assert.True(meterBaseUnits.IsSubsetOf(siBaseUnits)); // Not all units in siBaseUnits will exist in meterBaseUnits Assert.False(siBaseUnits.IsSubsetOf(meterBaseUnits)); }
public void ConstructorSetsUnitsProperly() { var baseUnits = new BaseUnits(LengthUnit.Meter, MassUnit.Kilogram, DurationUnit.Second, ElectricCurrentUnit.Ampere, TemperatureUnit.Kelvin, AmountOfSubstanceUnit.Mole, LuminousIntensityUnit.Candela); Assert.Equal(LengthUnit.Meter, baseUnits.Length); Assert.Equal(MassUnit.Kilogram, baseUnits.Mass); Assert.Equal(DurationUnit.Second, baseUnits.Time); Assert.Equal(ElectricCurrentUnit.Ampere, baseUnits.Current); Assert.Equal(TemperatureUnit.Kelvin, baseUnits.Temperature); Assert.Equal(AmountOfSubstanceUnit.Mole, baseUnits.Amount); Assert.Equal(LuminousIntensityUnit.Candela, baseUnits.LuminousIntensity); }
public void SIUnitSystemHasCorrectBaseUnits() { var siBaseUnits = new BaseUnits(LengthUnit.Meter, MassUnit.Kilogram, DurationUnit.Second, ElectricCurrentUnit.Ampere, TemperatureUnit.Kelvin, AmountOfSubstanceUnit.Mole, LuminousIntensityUnit.Candela); Assert.Equal(LengthUnit.Meter, UnitSystem.SI.BaseUnits.Length); Assert.Equal(MassUnit.Kilogram, UnitSystem.SI.BaseUnits.Mass); Assert.Equal(DurationUnit.Second, UnitSystem.SI.BaseUnits.Time); Assert.Equal(ElectricCurrentUnit.Ampere, UnitSystem.SI.BaseUnits.Current); Assert.Equal(TemperatureUnit.Kelvin, UnitSystem.SI.BaseUnits.Temperature); Assert.Equal(AmountOfSubstanceUnit.Mole, UnitSystem.SI.BaseUnits.Amount); Assert.Equal(LuminousIntensityUnit.Candela, UnitSystem.SI.BaseUnits.LuminousIntensity); }
/// <summary> /// Make a model containing a project and a building /// </summary> /// <returns></returns> private IfcStore InitializeModel(BaseUnits units = BaseUnits.Meters) { var creds = new XbimEditorCredentials { ApplicationDevelopersName = "Digital Alchemy", ApplicationFullName = "Simergy/Pegasus", ApplicationIdentifier = "hello.exe", ApplicationVersion = "1.0", }; IfcStore model = IfcStore.Create(creds, XbimSchemaVersion.Ifc4, XbimStoreType.InMemoryModel); CreateProject(model, units); return(model); }
public void InequalityOperatorIsImplementedCorrectly() { Assert.False(siBaseUnits != siBaseUnitsCopy); Assert.False(siBaseUnitsCopy != siBaseUnits); Assert.True(siBaseUnits != nonSiBaseUnits); Assert.True(nonSiBaseUnits != siBaseUnits); Assert.True(siBaseUnits != null); Assert.True(null != siBaseUnits); BaseUnits nullBaseUnits1 = null; BaseUnits nullBaseUnits2 = null; Assert.False(nullBaseUnits1 != nullBaseUnits2); }
private void CreateProject(IfcStore model, BaseUnits units = BaseUnits.Meters) { using (var txn = model.BeginTransaction("Initialising...")) { var project = model.Instances.New <IfcProject>(); project.Initialize(ProjectUnits.SIUnitsUK); project.Name = "Pegasus"; // By default the units are mm, m2 and m3 // Change the length unit to meters (metres) // Note xbim doesn't have imperial units so we might have to add a complete set of imperial units here, // check out IfcProjectPartial.cs switch (units) { case BaseUnits.Millimeters: model.Instances.OfType <IfcSIUnit>().Where(u => u.UnitType == IfcUnitEnum.LENGTHUNIT).ToList().ForEach(u => u.Prefix = null); break; case BaseUnits.Meters: break; case BaseUnits.Feet: { IfcUnitAssignment unitAssignment = model.Instances.New <IfcUnitAssignment>(); unitAssignment.SetOrChangeConversionUnit(IfcUnitEnum.LENGTHUNIT, ConversionBasedUnit.Foot); unitAssignment.SetOrChangeConversionUnit(IfcUnitEnum.AREAUNIT, ConversionBasedUnit.SquareFoot); unitAssignment.SetOrChangeConversionUnit(IfcUnitEnum.VOLUMEUNIT, ConversionBasedUnit.CubicFoot); } break; case BaseUnits.Inches: { IfcUnitAssignment unitAssignment = model.Instances.New <IfcUnitAssignment>(); unitAssignment.SetOrChangeConversionUnit(IfcUnitEnum.LENGTHUNIT, ConversionBasedUnit.Inch); unitAssignment.SetOrChangeConversionUnit(IfcUnitEnum.AREAUNIT, ConversionBasedUnit.SquareFoot); unitAssignment.SetOrChangeConversionUnit(IfcUnitEnum.VOLUMEUNIT, ConversionBasedUnit.CubicFoot); } break; } txn.Commit(); } }
public AmountOfSubstanceUnit(PreFix SI, BaseUnits baseunit) : base(SI, baseunit) { SetUnitSystem(); }
public LuminousIntensityUnit(PreFix SI, BaseUnits baseunit) : base(SI, baseunit) { SetUnitSystem(); }
public DurationUnit(PreFix SI, BaseUnits baseunit) : base(SI, baseunit) { SetUnitSystem(); }
public MassUnit(PreFix SI, BaseUnits baseunit) : base(SI, baseunit) { SetUnitSystem(); }
public ElectricCurrentUnit(PreFix SI, BaseUnits baseunit) : base(SI, baseunit) { SetUnitSystem(); }
public TemperatureDeltaUnit(PreFix SI, BaseUnits baseunit) : base(SI, baseunit) { SetUnitSystem(); }
/// <summary> /// Creates an instance of the UnitInfo class. /// </summary> /// <param name="value">The enum value for this class, for example <see cref="LengthUnit.Meter"/>.</param> /// <param name="baseUnits">The <see cref="BaseUnits"/> for this unit.</param> public UnitInfo(Enum value, BaseUnits baseUnits) { Value = value ?? throw new ArgumentNullException(nameof(value)); Name = value.ToString(); BaseUnits = baseUnits ?? throw new ArgumentNullException(nameof(baseUnits)); }
public CombinedUnit(PreFix SI, BaseUnits baseunit) : base(SI, baseunit) { SetUnitSystem(); }