Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions Common/UnitRelations.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"Area.SquareMeter = KinematicViscosity.SquareMeterPerSecond * Duration.Second -- NoInferredDivision",
"Area.SquareMeter = Length.Meter * Length.Meter",
"Area.SquareMeter = Volume.CubicMeter * ReciprocalLength.InverseMeter",
"AreaDensity.KilogramPerSquareMeter = Density.KilogramPerCubicMeter * Length.Meter",
"AreaMomentOfInertia.MeterToTheFourth = Volume.CubicMeter * Length.Meter",
"double = SpecificEnergy.JoulePerKilogram * BrakeSpecificFuelConsumption.KilogramPerJoule",
"DynamicViscosity.NewtonSecondPerMeterSquared = Density.KilogramPerCubicMeter * KinematicViscosity.SquareMeterPerSecond",
Expand All @@ -27,6 +28,8 @@
"Force.Newton = ForcePerLength.NewtonPerMeter * Length.Meter",
"Force.Newton = Mass.Kilogram * Acceleration.MeterPerSecondSquared",
"Force.Newton = Pressure.Pascal * Area.SquareMeter",
"Force.Newton = SpecificWeight.NewtonPerCubicMeter * Volume.CubicMeter",
"ForcePerLength.NewtonPerMeter = Acceleration.MeterPerSecondSquared * LinearDensity.KilogramPerMeter",
"ForcePerLength.NewtonPerMeter = Force.Newton * ReciprocalLength.InverseMeter",
"ForcePerLength.NewtonPerMeter = Pressure.NewtonPerSquareMeter * Length.Meter",
"ForcePerLength.NewtonPerMeter = SpecificWeight.NewtonPerCubicMeter * Area.SquareMeter",
Expand All @@ -35,6 +38,7 @@
"Length.Meter = Speed.MeterPerSecond * Duration.Second",
"Length.Meter = Volume.CubicMeter * ReciprocalArea.InverseSquareMeter",
"LinearDensity.KilogramPerMeter = Area.SquareMeter * Density.KilogramPerCubicMeter",
"LinearDensity.KilogramPerMeter = AreaDensity.KilogramPerSquareMeter * Length.Meter",
"LuminousFlux.Lumen = Illuminance.Lux * Area.SquareMeter",
"LuminousIntensity.Candela = Luminance.CandelaPerSquareMeter * Area.SquareMeter",
"Mass.Kilogram = AmountOfSubstance.Mole * MolarMass.KilogramPerMole",
Expand All @@ -61,6 +65,7 @@
"Power.Watt = Torque.NewtonMeter * RotationalSpeed.RadianPerSecond",
"Pressure.NewtonPerSquareMeter = Force.Newton * ReciprocalArea.InverseSquareMeter",
"Pressure.NewtonPerSquareMeter = ForcePerLength.NewtonPerMeter * ReciprocalLength.InverseMeter",
"Pressure.Pascal = Acceleration.MeterPerSecondSquared * AreaDensity.KilogramPerSquareMeter",
"Pressure.Pascal = PressureChangeRate.PascalPerSecond * Duration.Second",
"Pressure.Pascal = SpecificWeight.NewtonPerCubicMeter * Length.Meter",
"RadiationEquivalentDose.Sievert = RadiationEquivalentDoseRate.SievertPerHour * Duration.Hour",
Expand Down
14 changes: 14 additions & 0 deletions UnitsNet.Tests/CustomCode/AccelerationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@ public class AccelerationTests : AccelerationTestsBase

protected override double MillistandardGravityInOneMeterPerSecondSquared => 101.9716212977928;

[Fact]
public void AccelerationTimesAreaDensityEqualsPressure()
{
Pressure pressure = Acceleration.FromMetersPerSecondSquared(10) * AreaDensity.FromKilogramsPerSquareMeter(2);
Assert.Equal(Pressure.FromPascals(20), pressure);
}

[Fact]
public void AccelerationTimesDensityEqualsSpecificWeight()
{
Expand All @@ -48,5 +55,12 @@ public void AccelerationTimesDuration()
Speed speed = Acceleration.FromMetersPerSecondSquared(10) * Duration.FromSeconds(10);
Assert.Equal(Speed.FromMetersPerSecond(100), speed);
}

[Fact]
public void AccelerationTimesLinearDensityEqualsForcePerLength()
{
ForcePerLength forcePerLength = Acceleration.FromMetersPerSecondSquared(10) * LinearDensity.FromKilogramsPerMeter(2);
Assert.Equal(ForcePerLength.FromNewtonsPerMeter(20), forcePerLength);
}
}
}
28 changes: 28 additions & 0 deletions UnitsNet.Tests/CustomCode/AreaDensityTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,39 @@ public class AreaDensityTests : AreaDensityTestsBase

protected override double MilligramsPerSquareMeterInOneKilogramPerSquareMeter => 1000000;

[Fact]
public void AreaDensityDividedByDensityEqualsLength()
{
Length length = AreaDensity.FromKilogramsPerSquareMeter(20) / Density.FromKilogramsPerCubicMeter(2);
Assert.Equal(Length.FromMeters(10), length);
}

[Fact]
public void AreaDensityDividedByLengthEqualsDensity()
{
Density density = AreaDensity.FromKilogramsPerSquareMeter(20) / Length.FromMeters(2);
Assert.Equal(Density.FromKilogramsPerCubicMeter(10), density);
}

[Fact]
public void AreaDensityTimesAccelerationEqualsPressure()
{
Pressure pressure = AreaDensity.FromKilogramsPerSquareMeter(10) * Acceleration.FromMetersPerSecondSquared(2);
Assert.Equal(Pressure.FromPascals(20), pressure);
}

[Fact]
public void AreaDensityTimesAreaEqualsMass()
{
Mass massOfOneA4Paper = AreaDensity.FromGramsPerSquareMeter(120) * Area.FromSquareCentimeters(625);
Assert.Equal(7.5, massOfOneA4Paper.Grams);
}

[Fact]
public void AreaDensityTimesLengthEqualsLinearDensity()
{
LinearDensity linearDensity = AreaDensity.FromKilogramsPerSquareMeter(10) * Length.FromMeters(2);
Assert.Equal(LinearDensity.FromKilogramsPerMeter(20), linearDensity);
}
}
}
7 changes: 7 additions & 0 deletions UnitsNet.Tests/CustomCode/DensityTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,13 @@ public void DensityTimesAreaEqualsLinearDensity()
Assert.Equal(20, linearDensity.GramsPerCentimeter);
}

[Fact]
public void DensityTimesLengthEqualsAreaDensity()
{
AreaDensity areaDensity = Density.FromKilogramsPerCubicMeter(10) * Length.FromMeters(2);
Assert.Equal(AreaDensity.FromKilogramsPerSquareMeter(20), areaDensity);
}

[Fact]
public static void DensityTimesVolumeConcentrationEqualsMassConcentration()
{
Expand Down
14 changes: 14 additions & 0 deletions UnitsNet.Tests/CustomCode/ForcePerLengthTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -89,5 +89,19 @@ public void ForcePerLengthTimesAreaEqualTorque()
Torque torque = ForcePerLength.FromNewtonsPerMeter(10) * Area.FromSquareMeters(9);
Assert.Equal(torque, Torque.FromNewtonMeters(90));
}

[Fact]
public void ForcePerLengthDividedByAccelerationEqualsLinearDensity()
{
LinearDensity linearDensity = ForcePerLength.FromNewtonsPerMeter(20) / Acceleration.FromMetersPerSecondSquared(2);
Assert.Equal(LinearDensity.FromKilogramsPerMeter(10), linearDensity);
}

[Fact]
public void ForcePerLengthDividedByLinearDensityEqualsAcceleration()
{
Acceleration acceleration = ForcePerLength.FromNewtonsPerMeter(20) / LinearDensity.FromKilogramsPerMeter(2);
Assert.Equal(Acceleration.FromMetersPerSecondSquared(10), acceleration);
}
}
}
14 changes: 14 additions & 0 deletions UnitsNet.Tests/CustomCode/ForceTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,20 @@ public void ForceDividedByLengthEqualsForcePerLength()
Assert.Equal(forcePerLength, ForcePerLength.FromNewtonsPerMeter(4));
}

[Fact]
public void ForceDividedBySpecificWeightEqualsVolume()
{
Volume volume = Force.FromNewtons(200) / SpecificWeight.FromNewtonsPerCubicMeter(50);
Assert.Equal(Volume.FromCubicMeters(4), volume);
}

[Fact]
public void ForceDividedByVolumeEqualsSpecificWeight()
{
SpecificWeight specificWeight = Force.FromNewtons(200) / Volume.FromCubicMeters(50);
Assert.Equal(SpecificWeight.FromNewtonsPerCubicMeter(4), specificWeight);
}

[Fact]
public void MassByAccelerationEqualsForce()
{
Expand Down
14 changes: 14 additions & 0 deletions UnitsNet.Tests/CustomCode/LengthTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,27 @@ public void ForceTimesLengthEqualsTorque()
Assert.Equal(torque, Torque.FromNewtonMeters(3));
}

[Fact]
public void LengthTimesAreaDensityEqualsLinearDensity()
{
LinearDensity linearDensity = Length.FromMeters(2) * AreaDensity.FromKilogramsPerSquareMeter(10);
Assert.Equal(LinearDensity.FromKilogramsPerMeter(20), linearDensity);
}

[Fact]
public void LengthTimesAreaEqualsVolume()
{
Volume volume = Length.FromMeters(3) * Area.FromSquareMeters(9);
Assert.Equal(volume, Volume.FromCubicMeters(27));
}

[Fact]
public void LengthTimesDensityEqualsAreaDensity()
{
AreaDensity areaDensity = Length.FromMeters(2) * Density.FromKilogramsPerCubicMeter(10);
Assert.Equal(AreaDensity.FromKilogramsPerSquareMeter(20), areaDensity);
}

[Fact]
public void LengthTimesForceEqualsTorque()
{
Expand Down
21 changes: 21 additions & 0 deletions UnitsNet.Tests/CustomCode/LinearDensityTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,34 @@ public void LinearDensityDividedByAreaEqualsDensity()
Assert.Equal(5, density.GramsPerCubicCentimeter);
}

[Fact]
public void LinearDensityDividedByAreaDensityEqualsLength()
{
Length length = LinearDensity.FromKilogramsPerMeter(20) / AreaDensity.FromKilogramsPerSquareMeter(2);
Assert.Equal(Length.FromMeters(10), length);
}

[Fact]
public void LinearDensityDividedByDensityEqualsArea()
{
Area area = LinearDensity.FromGramsPerCentimeter(10) / Density.FromGramsPerCubicCentimeter(2);
Assert.Equal(5, area.SquareCentimeters);
}

[Fact]
public void LinearDensityDividedByLengthEqualsAreaDensity()
{
AreaDensity areaDensity = LinearDensity.FromKilogramsPerMeter(20) / Length.FromMeters(2);
Assert.Equal(AreaDensity.FromKilogramsPerSquareMeter(10), areaDensity);
}

[Fact]
public void LinearDensityTimesAccelerationEqualsForcePerLength()
{
ForcePerLength forcePerLength = LinearDensity.FromKilogramsPerMeter(10) * Acceleration.FromMetersPerSecondSquared(2);
Assert.Equal(ForcePerLength.FromNewtonsPerMeter(20), forcePerLength);
}

[Fact]
public void LinearDensityTimesLengthEqualsMass()
{
Expand Down
14 changes: 14 additions & 0 deletions UnitsNet.Tests/CustomCode/PressureTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,20 @@ public void Gauge_WithVacuumPressureReference_ThrowsArgumentOutOfRangeException(
Assert.Throws<ArgumentOutOfRangeException>(() => refPressure.Gauge.Atmospheres);
}

[Fact]
public void PressureDividedByAccelerationEqualsAreaDensity()
{
var areaDensity = Pressure.FromPascals(20) / Acceleration.FromMetersPerSecondSquared(2);
Assert.Equal(AreaDensity.FromKilogramsPerSquareMeter(10), areaDensity);
}

[Fact]
public void PressureDividedByAreaDensityEqualsAcceleration()
{
var acceleration = Pressure.FromPascals(20) / AreaDensity.FromKilogramsPerSquareMeter(2);
Assert.Equal(Acceleration.FromMetersPerSecondSquared(10), acceleration);
}

[Fact]
public void PressureDividedByLengthEqualsSpecificWeight()
{
Expand Down
7 changes: 7 additions & 0 deletions UnitsNet.Tests/CustomCode/SpecificWeightTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,13 @@ public void SpecificWeightTimesLengthEqualsPressure()
Assert.Equal(Pressure.FromPascals(20), pressure);
}

[Fact]
public void SpecificWeightTimesVolumeEqualsForce()
{
Force force = SpecificWeight.FromNewtonsPerCubicMeter(10) * Volume.FromCubicMeters(2);
Assert.Equal(Force.FromNewtons(20), force);
}

[Fact]
public void SpecificWeightDividedByDensityEqualsAcceleration()
{
Expand Down
7 changes: 7 additions & 0 deletions UnitsNet.Tests/CustomCode/VolumeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,13 @@ public void VolumeTimesDensityEqualsMass()
Assert.Equal(mass, Mass.FromKilograms(6));
}

[Fact]
public void VolumeTimesSpecificWeightEqualsForce()
{
Force force = Volume.FromCubicMeters(2) * SpecificWeight.FromNewtonsPerCubicMeter(3);
Assert.Equal(force, Force.FromNewtons(6));
}

[Theory]
[InlineData(20, 2, 10)]
[InlineData(20, 80, 0.25)]
Expand Down
14 changes: 14 additions & 0 deletions UnitsNet/GeneratedCode/Quantities/Acceleration.g.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 28 additions & 0 deletions UnitsNet/GeneratedCode/Quantities/AreaDensity.g.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions UnitsNet/GeneratedCode/Quantities/Density.g.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading