Skip to content

Commit 064a531

Browse files
trb5016Travis Bement
andauthored
Add combinations of Density, Area, and LinearDensity operators (#772)
* Add quantity LinearPowerDensity * Add combinations of Area, Density, and LinearDensity operators * Changed operator overloads for Area, Density, and LinearDensity to SI base units Co-authored-by: Travis Bement <[email protected]>
1 parent 7346799 commit 064a531

File tree

6 files changed

+62
-1
lines changed

6 files changed

+62
-1
lines changed

UnitsNet.Tests/CustomCode/AreaTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@ public void AreaTimesMassFluxEqualsMassFlow()
5151
Assert.Equal(massFlow, MassFlow.FromKilogramsPerSecond(40));
5252
}
5353

54+
[Fact]
55+
public void AreaTimesDensityEqualsLinearDensity()
56+
{
57+
LinearDensity linearDensity = Area.FromSquareCentimeters(2) * Density.FromGramsPerCubicCentimeter(10);
58+
Assert.Equal(LinearDensity.FromGramsPerCentimeter(20), linearDensity);
59+
}
60+
5461
[Theory]
5562
[InlineData(0, 0)]
5663
[InlineData(0.5, 0.19634954084936208)]

UnitsNet.Tests/CustomCode/DensityTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,5 +121,12 @@ public void DensityTimesAccelerationEqualsSpecificWeight()
121121
SpecificWeight specificWeight = Density.FromKilogramsPerCubicMeter(10) * Acceleration.FromMetersPerSecondSquared(2);
122122
Assert.Equal(SpecificWeight.FromNewtonsPerCubicMeter(20), specificWeight);
123123
}
124+
125+
[Fact]
126+
public void DensityTimesAreaEqualsLinearDensity()
127+
{
128+
LinearDensity linearDensity = Density.FromGramsPerCubicCentimeter(10) * Area.FromSquareCentimeters(2);
129+
Assert.Equal(LinearDensity.FromGramsPerCentimeter(20), linearDensity);
130+
}
124131
}
125132
}

UnitsNet.Tests/CustomCode/LinearDensityTests.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323

2424
using System;
25+
using Xunit;
2526

2627
namespace UnitsNet.Tests.CustomCode
2728
{
@@ -47,6 +48,19 @@ public class LinearDensityTests : LinearDensityTestsBase
4748
protected override double PoundsPerInchInOneKilogramPerMeter => 5.599741459E-02;
4849

4950
protected override double PoundsPerFootInOneKilogramPerMeter => 6.71968975e-1;
50-
51+
52+
[Fact]
53+
public void LinearDensityDividedByAreaEqualsDensity()
54+
{
55+
Density density = LinearDensity.FromGramsPerCentimeter(10) / Area.FromSquareCentimeters(2);
56+
Assert.Equal(Density.FromGramsPerCubicCentimeter(5), density);
57+
}
58+
59+
[Fact]
60+
public void LinearDensityDividedByDensityEqualsArea()
61+
{
62+
Area area = LinearDensity.FromGramsPerCentimeter(10) / Density.FromGramsPerCubicCentimeter(2);
63+
Assert.Equal(Area.FromSquareCentimeters(5), area);
64+
}
5165
}
5266
}

UnitsNet/CustomCode/Quantities/Area.extra.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,11 @@ public static Area FromCircleRadius(Length radius)
4141
{
4242
return VolumeFlow.FromCubicMetersPerSecond(area.SquareMeters * speed.MetersPerSecond);
4343
}
44+
45+
/// <summary>Get <see cref="LinearDensity"/> from <see cref="Area"/> times <see cref="Density"/>.</summary>
46+
public static LinearDensity operator *(Area area, Density density)
47+
{
48+
return LinearDensity.FromKilogramsPerMeter(area.SquareMeters * density.KilogramsPerCubicMeter);
49+
}
4450
}
4551
}

UnitsNet/CustomCode/Quantities/Density.extra.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,5 +70,11 @@ public static Density FromMolarity(Molarity molarity, Mass molecularWeight)
7070
{
7171
return new Molarity(density.KilogramsPerCubicMeter / molecularWeight.Kilograms, MolarityUnit.MolesPerCubicMeter);
7272
}
73+
74+
/// <summary>Get <see cref="LinearDensity"/> from <see cref="Density"/> times <see cref="Area"/>.</summary>
75+
public static LinearDensity operator *(Density density, Area area)
76+
{
77+
return LinearDensity.FromKilogramsPerMeter(density.KilogramsPerCubicMeter * area.SquareMeters);
78+
}
7379
}
7480
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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+
namespace UnitsNet
5+
{
6+
public partial struct LinearDensity
7+
{
8+
9+
/// <summary>Get <see cref="Density"/> from <see cref="LinearDensity"/> times <see cref="Area"/>.</summary>
10+
public static Density operator /(LinearDensity linearDensity, Area area)
11+
{
12+
return Density.FromKilogramsPerCubicMeter(linearDensity.KilogramsPerMeter / area.SquareMeters);
13+
}
14+
15+
/// <summary>Get <see cref="Area"/> from <see cref="LinearDensity"/> times <see cref="Density"/>.</summary>
16+
public static Area operator /(LinearDensity linearDensity, Density density)
17+
{
18+
return Area.FromSquareMeters(linearDensity.KilogramsPerMeter / density.KilogramsPerCubicMeter);
19+
}
20+
}
21+
}

0 commit comments

Comments
 (0)