Skip to content

Commit ecec14d

Browse files
author
Erik Ovegard
committed
Added support for Duration
1 parent 65b2397 commit ecec14d

File tree

13 files changed

+151
-6
lines changed

13 files changed

+151
-6
lines changed

UnitsNet.Tests/CustomCode/AngleTests.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,19 @@ namespace UnitsNet.Tests.CustomCode
2727
public class AngleTests : AngleTestsBase
2828
{
2929
[Test]
30-
public void AngleDividedByTimeEqualsRotationalSpeed()
30+
public void AngleDividedByTimeSpanEqualsRotationalSpeed()
3131
{
3232
var rotationalSpeed = Angle.FromRadians(10)/TimeSpan.FromSeconds(5);
3333
Assert.AreEqual(rotationalSpeed, RotationalSpeed.FromRadiansPerSecond(2));
3434
}
3535

36+
[Test]
37+
public void AngleDividedByDurationEqualsRotationalSpeed()
38+
{
39+
var rotationalSpeed = Angle.FromRadians(10) / Duration.FromSeconds(5);
40+
Assert.AreEqual(rotationalSpeed, RotationalSpeed.FromRadiansPerSecond(2));
41+
}
42+
3643
protected override double DegreesInOneDegree
3744
{
3845
get { return 1; }

UnitsNet.Tests/CustomCode/MassFlowTests.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ namespace UnitsNet.Tests.CustomCode
2727
{
2828
public class MassFlowTests : MassFlowTestsBase
2929
{
30-
// strange bug
3130
[Test]
3231
public void MassFlowTimesTimeSpanEqualsMass()
3332
{
@@ -41,7 +40,19 @@ public void TimeSpanTimesMassFlowEqualsMass()
4140
Assert.AreEqual(mass, Mass.FromKilograms(80.0));
4241
}
4342

44-
// TODO Override properties in base class here
43+
[Test]
44+
public void MassFlowTimesDurationEqualsMass()
45+
{
46+
var mass = MassFlow.FromKilogramsPerSecond(20.0) * Duration.FromSeconds(4.0);
47+
Assert.AreEqual(mass, Mass.FromKilograms(80.0));
48+
}
49+
[Test]
50+
public void DurationTimesMassFlowEqualsMass()
51+
{
52+
var mass = Duration.FromSeconds(4.0) * MassFlow.FromKilogramsPerSecond(20.0);
53+
Assert.AreEqual(mass, Mass.FromKilograms(80.0));
54+
}
55+
4556
protected override double KilogramsPerSecondInOneKilogramPerSecond
4657
{
4758
get

UnitsNet.Tests/CustomCode/MassTests.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,19 @@ namespace UnitsNet.Tests.CustomCode
2626
public class MassTests : MassTestsBase
2727
{
2828
[Test]
29-
public void MassDividedByTimeEqualsMassFlow()
29+
public void MassDividedByTimeSpanEqualsMassFlow()
3030
{
3131
var massFlow= Mass.FromKilograms(18.0) / TimeSpan.FromSeconds(6);
3232
Assert.AreEqual(massFlow, MassFlow.FromKilogramsPerSecond(3.0));
3333
}
3434

35+
[Test]
36+
public void MassDividedByDurationEqualsMassFlow()
37+
{
38+
var massFlow = Mass.FromKilograms(18.0) / Duration.FromSeconds(6);
39+
Assert.AreEqual(massFlow, MassFlow.FromKilogramsPerSecond(3.0));
40+
}
41+
3542
[Test]
3643
public void MassDividedByVolumeEqualsDensity()
3744
{

UnitsNet.Tests/CustomCode/PowerTests.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public void PowerDevidedByTorqueEqualsRotationalSpeed()
4444
Assert.AreEqual(rotationalSpeed, RotationalSpeed.FromRadiansPerSecond(5));
4545
}
4646
[Test]
47-
public void PowerTimesTimespanEqualsEnergy()
47+
public void PowerTimesTimeSpanEqualsEnergy()
4848
{
4949
var energy = Power.FromWatts(5.0)*TimeSpan.FromSeconds(8.0);
5050
Assert.AreEqual(energy, Energy.FromJoules(40.0));
@@ -55,6 +55,20 @@ public void TimeSpanTimesPowerEqualsEnergy()
5555
var energy = TimeSpan.FromSeconds(8.0)* Power.FromWatts(5.0);
5656
Assert.AreEqual(energy, Energy.FromJoules(40.0));
5757
}
58+
59+
[Test]
60+
public void PowerTimesDurationEqualsEnergy()
61+
{
62+
var energy = Power.FromWatts(5.0) * Duration.FromSeconds(8.0);
63+
Assert.AreEqual(energy, Energy.FromJoules(40.0));
64+
}
65+
[Test]
66+
public void DurationTimesPowerEqualsEnergy()
67+
{
68+
var energy = Duration.FromSeconds(8.0) * Power.FromWatts(5.0);
69+
Assert.AreEqual(energy, Energy.FromJoules(40.0));
70+
}
71+
5872
protected override double FemtowattsInOneWatt
5973
{
6074
get { return 1e15; }

UnitsNet.Tests/CustomCode/RotationalSpeedTests.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,20 @@ public void TimeSpanTimesRotationalSpeedEqualsAngle()
4141
Assert.AreEqual(angle, Angle.FromRadians(90.0));
4242
}
4343

44+
[Test]
45+
public void RotationalSpeedTimesDurationEqualsAngle()
46+
{
47+
var angle = RotationalSpeed.FromRadiansPerSecond(10.0) * Duration.FromSeconds(9.0);
48+
Assert.AreEqual(angle, Angle.FromRadians(90.0));
49+
}
50+
51+
[Test]
52+
public void DurationTimesRotationalSpeedEqualsAngle()
53+
{
54+
var angle = Duration.FromSeconds(9.0) * RotationalSpeed.FromRadiansPerSecond(10.0);
55+
Assert.AreEqual(angle, Angle.FromRadians(90.0));
56+
}
57+
4458
[Test]
4559
public void RotationalSpeedTimesForceEqualsPower()
4660
{

UnitsNet.Tests/CustomCode/SpeedTests.cs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ namespace UnitsNet.Tests.CustomCode
2727
public class SpeedTests : SpeedTestsBase
2828
{
2929
[Test]
30-
public void SpeedDevidedByTimespanEqualsAcceleration()
30+
public void SpeedDevidedByTimeSpanEqualsAcceleration()
3131
{
3232
var acceleration = Speed.FromMetersPerSecond(20) / TimeSpan.FromSeconds(2);
3333
Assert.AreEqual(acceleration, Acceleration.FromMeterPerSecondSquared(10));
@@ -40,6 +40,20 @@ public void SpeedTimesTimeSpanEqualsLength()
4040
Assert.AreEqual(length, Length.FromMeters(40));
4141
}
4242

43+
[Test]
44+
public void SpeedDevidedByDurationEqualsAcceleration()
45+
{
46+
var acceleration = Speed.FromMetersPerSecond(20) / Duration.FromSeconds(2);
47+
Assert.AreEqual(acceleration, Acceleration.FromMeterPerSecondSquared(10));
48+
}
49+
50+
[Test]
51+
public void SpeedTimesDurationEqualsLength()
52+
{
53+
var length = Speed.FromMetersPerSecond(20) * Duration.FromSeconds(2);
54+
Assert.AreEqual(length, Length.FromMeters(40));
55+
}
56+
4357
[Test]
4458
public void TimeSpanSpeedTimesEqualsLength()
4559
{
@@ -54,6 +68,20 @@ public void LengthDividedByTimeSpanEqualsSpeed()
5468
Assert.AreEqual(speed, Speed.FromMetersPerSecond(10));
5569
}
5670

71+
[Test]
72+
public void DurationSpeedTimesEqualsLength()
73+
{
74+
var length = Duration.FromSeconds(2) * Speed.FromMetersPerSecond(20);
75+
Assert.AreEqual(length, Length.FromMeters(40));
76+
}
77+
78+
[Test]
79+
public void LengthDividedByDurationEqualsSpeed()
80+
{
81+
var speed = Length.FromMeters(20) / Duration.FromSeconds(2);
82+
Assert.AreEqual(speed, Speed.FromMetersPerSecond(10));
83+
}
84+
5785
protected override double FeetPerSecondInOneMeterPerSecond
5886
{
5987
get { return 3.28084; }

UnitsNet/CustomCode/UnitClasses/Angle.extra.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,10 @@ public partial struct Angle
2929
{
3030
return RotationalSpeed.FromRadiansPerSecond(angle.Radians / timeSpan.TotalSeconds);
3131
}
32+
33+
public static RotationalSpeed operator /(Angle angle, Duration duration)
34+
{
35+
return RotationalSpeed.FromRadiansPerSecond(angle.Radians / duration.Seconds);
36+
}
3237
}
3338
}

UnitsNet/CustomCode/UnitClasses/Length.extra.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ public static Length FromFeetInches(double feet, double inches)
4040
{
4141
return Speed.FromMetersPerSecond(length.Meters / timeSpan.TotalSeconds);
4242
}
43+
44+
public static Speed operator /(Length length, Duration duration)
45+
{
46+
return Speed.FromMetersPerSecond(length.Meters / duration.Seconds);
47+
}
48+
4349
public static Area operator*(Length length1, Length length2)
4450
{
4551
return Area.FromSquareMeters(length1.Meters * length2.Meters);

UnitsNet/CustomCode/UnitClasses/Mass.extra.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ public static Mass FromStonePounds(double stone, double pounds)
6767
return MassFlow.FromKilogramsPerSecond(mass.Kilograms / timeSpan.TotalSeconds);
6868
}
6969

70+
public static MassFlow operator /(Mass mass, Duration duration)
71+
{
72+
return MassFlow.FromKilogramsPerSecond(mass.Kilograms / duration.Seconds);
73+
}
74+
7075
public static Density operator /(Mass mass, Volume volume)
7176
{
7277
return Density.FromKilogramsPerCubicMeter(mass.Kilograms / volume.CubicMeters);

UnitsNet/CustomCode/UnitClasses/MassFlow.extra.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,14 @@ public partial struct MassFlow
3434
{
3535
return Mass.FromKilograms(massFlow.KilogramsPerSecond * time.TotalSeconds);
3636
}
37+
38+
public static Mass operator *(MassFlow massFlow, Duration duration)
39+
{
40+
return Mass.FromKilograms(massFlow.KilogramsPerSecond * duration.Seconds);
41+
}
42+
public static Mass operator *(Duration duration, MassFlow massFlow)
43+
{
44+
return Mass.FromKilograms(massFlow.KilogramsPerSecond * duration.Seconds);
45+
}
3746
}
3847
}

0 commit comments

Comments
 (0)