Skip to content

Commit cff3f04

Browse files
Add operator for TemperatureChangeRate * Duration/TimeSpan (#1102)
Co-authored-by: Sören Schäffersmann <[email protected]> Add multiplication operators to TemperatureChangeRate to multiply with TimeSpan and Duration to get TemperatureDelta.
1 parent 2f947d5 commit cff3f04

File tree

2 files changed

+61
-1
lines changed

2 files changed

+61
-1
lines changed

UnitsNet.Tests/CustomCode/TemperatureChangeRateTests.cs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
// Licensed under MIT No Attribution, see LICENSE file at the root.
22
// Copyright 2013 Andreas Gullberg Larsen ([email protected]). Maintained at https://github.com/angularsen/UnitsNet.
33

4+
using System;
5+
using Xunit;
6+
47
namespace UnitsNet.Tests.CustomCode
58
{
69
public class TemperatureChangeRateTests : TemperatureChangeRateTestsBase
@@ -24,6 +27,34 @@ public class TemperatureChangeRateTests : TemperatureChangeRateTestsBase
2427

2528
protected override double NanodegreesCelsiusPerSecondInOneDegreeCelsiusPerSecond => 1E9;
2629

27-
protected override double DegreesCelsiusPerMinuteInOneDegreeCelsiusPerSecond => 60;
30+
protected override double DegreesCelsiusPerMinuteInOneDegreeCelsiusPerSecond => 60;
31+
32+
[Fact]
33+
public void TemperatureChangeRateMultipliedWithTimeSpanEqualsTemperatureDelta()
34+
{
35+
TemperatureDelta d = TemperatureChangeRate.FromDegreesCelsiusPerSecond(2) * new TimeSpan(0, 0, 10);
36+
Assert.Equal(TemperatureDelta.FromDegreesCelsius(20), d);
37+
}
38+
39+
[Fact]
40+
public void TimeSpanMultipliedWithTemperatureChangeRateEqualsTemperatureDelta()
41+
{
42+
TemperatureDelta d = new TimeSpan(0, 0, -10) * TemperatureChangeRate.FromDegreesCelsiusPerSecond(2);
43+
Assert.Equal(TemperatureDelta.FromDegreesCelsius(-20), d);
44+
}
45+
46+
[Fact]
47+
public void TemperatureChangeRateMultipliedWithDurationEqualsTemperatureDelta()
48+
{
49+
TemperatureDelta d = TemperatureChangeRate.FromDegreesCelsiusPerSecond(2) * Duration.FromSeconds(10);
50+
Assert.Equal(TemperatureDelta.FromDegreesCelsius(20), d);
51+
}
52+
53+
[Fact]
54+
public void DurationMultipliedWithTemperatureChangeRateEqualsTemperatureDelta()
55+
{
56+
TemperatureDelta d = Duration.FromSeconds(-10) * TemperatureChangeRate.FromDegreesCelsiusPerSecond(2);
57+
Assert.Equal(TemperatureDelta.FromDegreesCelsius(-20), d);
58+
}
2859
}
2960
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Licensed under MIT No Attribution, see LICENSE file at the root.
2+
// Copyright 2013 Andreas Gullberg Larsen ([email protected]). Maintained at https://github.com/angularsen/UnitsNet.
3+
4+
using System;
5+
6+
namespace UnitsNet
7+
{
8+
public partial struct TemperatureChangeRate
9+
{
10+
/// <summary>Get <see cref="TemperatureDelta"/> from <see cref="Duration"/> times <see cref="TemperatureChangeRate"/>.</summary>
11+
public static TemperatureDelta operator *(Duration left, TemperatureChangeRate right) => right * left;
12+
13+
/// <summary>Get <see cref="TemperatureDelta"/> from <see cref="TemperatureChangeRate"/> times <see cref="Duration"/>.</summary>
14+
public static TemperatureDelta operator *(TemperatureChangeRate left, Duration right)
15+
{
16+
return TemperatureDelta.FromDegreesCelsius(left.DegreesCelsiusPerSecond * right.Seconds);
17+
}
18+
19+
20+
/// <summary>Get <see cref="TemperatureDelta"/> from <see cref="TimeSpan"/> times <see cref="TemperatureChangeRate"/>.</summary>
21+
public static TemperatureDelta operator *(TimeSpan left, TemperatureChangeRate right) => right * left;
22+
23+
/// <summary>Get <see cref="TemperatureDelta"/> from <see cref="TemperatureChangeRate"/> times <see cref="TimeSpan"/>.</summary>
24+
public static TemperatureDelta operator *(TemperatureChangeRate left, TimeSpan right)
25+
{
26+
return TemperatureDelta.FromDegreesCelsius(left.DegreesCelsiusPerSecond * right.TotalSeconds);
27+
}
28+
}
29+
}

0 commit comments

Comments
 (0)