Skip to content

Commit beb0703

Browse files
salido-mangularsen
authored andcommitted
Add density units (#205)
* Convert KilogramPer* units to GramPer* and add Kilo prefix
1 parent 34b2cfc commit beb0703

File tree

7 files changed

+279
-23
lines changed

7 files changed

+279
-23
lines changed

UnitsNet.Tests/CustomCode/DensityTests.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ namespace UnitsNet.Tests.CustomCode
2525
{
2626
public class DensityTests : DensityTestsBase
2727
{
28+
protected override double GramsPerCubicCentimeterInOneKilogramPerCubicMeter => 1e-3;
29+
protected override double GramsPerCubicMeterInOneKilogramPerCubicMeter => 1e3;
30+
protected override double GramsPerCubicMillimeterInOneKilogramPerCubicMeter => 1e-6;
2831
protected override double KilogramsPerCubicCentimeterInOneKilogramPerCubicMeter => 1e-6;
2932

3033
protected override double KilogramsPerCubicMeterInOneKilogramPerCubicMeter => 1;

UnitsNet.Tests/GeneratedCode/DensityTestsBase.g.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ namespace UnitsNet.Tests
5353
// ReSharper disable once PartialTypeWithSinglePart
5454
public abstract partial class DensityTestsBase
5555
{
56+
protected abstract double GramsPerCubicCentimeterInOneKilogramPerCubicMeter { get; }
57+
protected abstract double GramsPerCubicMeterInOneKilogramPerCubicMeter { get; }
58+
protected abstract double GramsPerCubicMillimeterInOneKilogramPerCubicMeter { get; }
5659
protected abstract double KilogramsPerCubicCentimeterInOneKilogramPerCubicMeter { get; }
5760
protected abstract double KilogramsPerCubicMeterInOneKilogramPerCubicMeter { get; }
5861
protected abstract double KilogramsPerCubicMillimeterInOneKilogramPerCubicMeter { get; }
@@ -65,6 +68,9 @@ public abstract partial class DensityTestsBase
6568
protected abstract double TonnesPerCubicMillimeterInOneKilogramPerCubicMeter { get; }
6669

6770
// ReSharper disable VirtualMemberNeverOverriden.Global
71+
protected virtual double GramsPerCubicCentimeterTolerance { get { return 1e-5; } }
72+
protected virtual double GramsPerCubicMeterTolerance { get { return 1e-5; } }
73+
protected virtual double GramsPerCubicMillimeterTolerance { get { return 1e-5; } }
6874
protected virtual double KilogramsPerCubicCentimeterTolerance { get { return 1e-5; } }
6975
protected virtual double KilogramsPerCubicMeterTolerance { get { return 1e-5; } }
7076
protected virtual double KilogramsPerCubicMillimeterTolerance { get { return 1e-5; } }
@@ -81,6 +87,9 @@ public abstract partial class DensityTestsBase
8187
public void KilogramPerCubicMeterToDensityUnits()
8288
{
8389
Density kilogrampercubicmeter = Density.FromKilogramsPerCubicMeter(1);
90+
Assert.AreEqual(GramsPerCubicCentimeterInOneKilogramPerCubicMeter, kilogrampercubicmeter.GramsPerCubicCentimeter, GramsPerCubicCentimeterTolerance);
91+
Assert.AreEqual(GramsPerCubicMeterInOneKilogramPerCubicMeter, kilogrampercubicmeter.GramsPerCubicMeter, GramsPerCubicMeterTolerance);
92+
Assert.AreEqual(GramsPerCubicMillimeterInOneKilogramPerCubicMeter, kilogrampercubicmeter.GramsPerCubicMillimeter, GramsPerCubicMillimeterTolerance);
8493
Assert.AreEqual(KilogramsPerCubicCentimeterInOneKilogramPerCubicMeter, kilogrampercubicmeter.KilogramsPerCubicCentimeter, KilogramsPerCubicCentimeterTolerance);
8594
Assert.AreEqual(KilogramsPerCubicMeterInOneKilogramPerCubicMeter, kilogrampercubicmeter.KilogramsPerCubicMeter, KilogramsPerCubicMeterTolerance);
8695
Assert.AreEqual(KilogramsPerCubicMillimeterInOneKilogramPerCubicMeter, kilogrampercubicmeter.KilogramsPerCubicMillimeter, KilogramsPerCubicMillimeterTolerance);
@@ -96,6 +105,9 @@ public void KilogramPerCubicMeterToDensityUnits()
96105
[Test]
97106
public void FromValueAndUnit()
98107
{
108+
Assert.AreEqual(1, Density.From(1, DensityUnit.GramPerCubicCentimeter).GramsPerCubicCentimeter, GramsPerCubicCentimeterTolerance);
109+
Assert.AreEqual(1, Density.From(1, DensityUnit.GramPerCubicMeter).GramsPerCubicMeter, GramsPerCubicMeterTolerance);
110+
Assert.AreEqual(1, Density.From(1, DensityUnit.GramPerCubicMillimeter).GramsPerCubicMillimeter, GramsPerCubicMillimeterTolerance);
99111
Assert.AreEqual(1, Density.From(1, DensityUnit.KilogramPerCubicCentimeter).KilogramsPerCubicCentimeter, KilogramsPerCubicCentimeterTolerance);
100112
Assert.AreEqual(1, Density.From(1, DensityUnit.KilogramPerCubicMeter).KilogramsPerCubicMeter, KilogramsPerCubicMeterTolerance);
101113
Assert.AreEqual(1, Density.From(1, DensityUnit.KilogramPerCubicMillimeter).KilogramsPerCubicMillimeter, KilogramsPerCubicMillimeterTolerance);
@@ -112,6 +124,9 @@ public void FromValueAndUnit()
112124
public void As()
113125
{
114126
var kilogrampercubicmeter = Density.FromKilogramsPerCubicMeter(1);
127+
Assert.AreEqual(GramsPerCubicCentimeterInOneKilogramPerCubicMeter, kilogrampercubicmeter.As(DensityUnit.GramPerCubicCentimeter), GramsPerCubicCentimeterTolerance);
128+
Assert.AreEqual(GramsPerCubicMeterInOneKilogramPerCubicMeter, kilogrampercubicmeter.As(DensityUnit.GramPerCubicMeter), GramsPerCubicMeterTolerance);
129+
Assert.AreEqual(GramsPerCubicMillimeterInOneKilogramPerCubicMeter, kilogrampercubicmeter.As(DensityUnit.GramPerCubicMillimeter), GramsPerCubicMillimeterTolerance);
115130
Assert.AreEqual(KilogramsPerCubicCentimeterInOneKilogramPerCubicMeter, kilogrampercubicmeter.As(DensityUnit.KilogramPerCubicCentimeter), KilogramsPerCubicCentimeterTolerance);
116131
Assert.AreEqual(KilogramsPerCubicMeterInOneKilogramPerCubicMeter, kilogrampercubicmeter.As(DensityUnit.KilogramPerCubicMeter), KilogramsPerCubicMeterTolerance);
117132
Assert.AreEqual(KilogramsPerCubicMillimeterInOneKilogramPerCubicMeter, kilogrampercubicmeter.As(DensityUnit.KilogramPerCubicMillimeter), KilogramsPerCubicMillimeterTolerance);
@@ -128,6 +143,9 @@ public void As()
128143
public void ConversionRoundTrip()
129144
{
130145
Density kilogrampercubicmeter = Density.FromKilogramsPerCubicMeter(1);
146+
Assert.AreEqual(1, Density.FromGramsPerCubicCentimeter(kilogrampercubicmeter.GramsPerCubicCentimeter).KilogramsPerCubicMeter, GramsPerCubicCentimeterTolerance);
147+
Assert.AreEqual(1, Density.FromGramsPerCubicMeter(kilogrampercubicmeter.GramsPerCubicMeter).KilogramsPerCubicMeter, GramsPerCubicMeterTolerance);
148+
Assert.AreEqual(1, Density.FromGramsPerCubicMillimeter(kilogrampercubicmeter.GramsPerCubicMillimeter).KilogramsPerCubicMeter, GramsPerCubicMillimeterTolerance);
131149
Assert.AreEqual(1, Density.FromKilogramsPerCubicCentimeter(kilogrampercubicmeter.KilogramsPerCubicCentimeter).KilogramsPerCubicMeter, KilogramsPerCubicCentimeterTolerance);
132150
Assert.AreEqual(1, Density.FromKilogramsPerCubicMeter(kilogrampercubicmeter.KilogramsPerCubicMeter).KilogramsPerCubicMeter, KilogramsPerCubicMeterTolerance);
133151
Assert.AreEqual(1, Density.FromKilogramsPerCubicMillimeter(kilogrampercubicmeter.KilogramsPerCubicMillimeter).KilogramsPerCubicMeter, KilogramsPerCubicMillimeterTolerance);

UnitsNet/GeneratedCode/Enums/DensityUnit.g.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ namespace UnitsNet.Units
4242
public enum DensityUnit
4343
{
4444
Undefined = 0,
45+
GramPerCubicCentimeter,
46+
GramPerCubicMeter,
47+
GramPerCubicMillimeter,
4548
KilogramPerCubicCentimeter,
4649
KilogramPerCubicMeter,
4750
KilogramPerCubicMillimeter,

UnitsNet/GeneratedCode/Extensions/Number/NumberToDensityExtensions.g.cs

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,108 @@ namespace UnitsNet.Extensions.NumberToDensity
4444
{
4545
public static class NumberToDensityExtensions
4646
{
47+
#region GramPerCubicCentimeter
48+
49+
/// <inheritdoc cref="Density.FromGramsPerCubicCentimeter(double)"/>
50+
public static Density GramsPerCubicCentimeter(this int value) => Density.FromGramsPerCubicCentimeter(value);
51+
52+
/// <inheritdoc cref="Density.FromGramsPerCubicCentimeter(double?)"/>
53+
public static Density? GramsPerCubicCentimeter(this int? value) => Density.FromGramsPerCubicCentimeter(value);
54+
55+
/// <inheritdoc cref="Density.FromGramsPerCubicCentimeter(double)"/>
56+
public static Density GramsPerCubicCentimeter(this long value) => Density.FromGramsPerCubicCentimeter(value);
57+
58+
/// <inheritdoc cref="Density.FromGramsPerCubicCentimeter(double?)"/>
59+
public static Density? GramsPerCubicCentimeter(this long? value) => Density.FromGramsPerCubicCentimeter(value);
60+
61+
/// <inheritdoc cref="Density.FromGramsPerCubicCentimeter(double)"/>
62+
public static Density GramsPerCubicCentimeter(this double value) => Density.FromGramsPerCubicCentimeter(value);
63+
64+
/// <inheritdoc cref="Density.FromGramsPerCubicCentimeter(double?)"/>
65+
public static Density? GramsPerCubicCentimeter(this double? value) => Density.FromGramsPerCubicCentimeter(value);
66+
67+
/// <inheritdoc cref="Density.FromGramsPerCubicCentimeter(double)"/>
68+
public static Density GramsPerCubicCentimeter(this float value) => Density.FromGramsPerCubicCentimeter(value);
69+
70+
/// <inheritdoc cref="Density.FromGramsPerCubicCentimeter(double?)"/>
71+
public static Density? GramsPerCubicCentimeter(this float? value) => Density.FromGramsPerCubicCentimeter(value);
72+
73+
/// <inheritdoc cref="Density.FromGramsPerCubicCentimeter(double)"/>
74+
public static Density GramsPerCubicCentimeter(this decimal value) => Density.FromGramsPerCubicCentimeter(Convert.ToDouble(value));
75+
76+
/// <inheritdoc cref="Density.FromGramsPerCubicCentimeter(double?)"/>
77+
public static Density? GramsPerCubicCentimeter(this decimal? value) => Density.FromGramsPerCubicCentimeter(value == null ? (double?)null : Convert.ToDouble(value.Value));
78+
79+
#endregion
80+
81+
#region GramPerCubicMeter
82+
83+
/// <inheritdoc cref="Density.FromGramsPerCubicMeter(double)"/>
84+
public static Density GramsPerCubicMeter(this int value) => Density.FromGramsPerCubicMeter(value);
85+
86+
/// <inheritdoc cref="Density.FromGramsPerCubicMeter(double?)"/>
87+
public static Density? GramsPerCubicMeter(this int? value) => Density.FromGramsPerCubicMeter(value);
88+
89+
/// <inheritdoc cref="Density.FromGramsPerCubicMeter(double)"/>
90+
public static Density GramsPerCubicMeter(this long value) => Density.FromGramsPerCubicMeter(value);
91+
92+
/// <inheritdoc cref="Density.FromGramsPerCubicMeter(double?)"/>
93+
public static Density? GramsPerCubicMeter(this long? value) => Density.FromGramsPerCubicMeter(value);
94+
95+
/// <inheritdoc cref="Density.FromGramsPerCubicMeter(double)"/>
96+
public static Density GramsPerCubicMeter(this double value) => Density.FromGramsPerCubicMeter(value);
97+
98+
/// <inheritdoc cref="Density.FromGramsPerCubicMeter(double?)"/>
99+
public static Density? GramsPerCubicMeter(this double? value) => Density.FromGramsPerCubicMeter(value);
100+
101+
/// <inheritdoc cref="Density.FromGramsPerCubicMeter(double)"/>
102+
public static Density GramsPerCubicMeter(this float value) => Density.FromGramsPerCubicMeter(value);
103+
104+
/// <inheritdoc cref="Density.FromGramsPerCubicMeter(double?)"/>
105+
public static Density? GramsPerCubicMeter(this float? value) => Density.FromGramsPerCubicMeter(value);
106+
107+
/// <inheritdoc cref="Density.FromGramsPerCubicMeter(double)"/>
108+
public static Density GramsPerCubicMeter(this decimal value) => Density.FromGramsPerCubicMeter(Convert.ToDouble(value));
109+
110+
/// <inheritdoc cref="Density.FromGramsPerCubicMeter(double?)"/>
111+
public static Density? GramsPerCubicMeter(this decimal? value) => Density.FromGramsPerCubicMeter(value == null ? (double?)null : Convert.ToDouble(value.Value));
112+
113+
#endregion
114+
115+
#region GramPerCubicMillimeter
116+
117+
/// <inheritdoc cref="Density.FromGramsPerCubicMillimeter(double)"/>
118+
public static Density GramsPerCubicMillimeter(this int value) => Density.FromGramsPerCubicMillimeter(value);
119+
120+
/// <inheritdoc cref="Density.FromGramsPerCubicMillimeter(double?)"/>
121+
public static Density? GramsPerCubicMillimeter(this int? value) => Density.FromGramsPerCubicMillimeter(value);
122+
123+
/// <inheritdoc cref="Density.FromGramsPerCubicMillimeter(double)"/>
124+
public static Density GramsPerCubicMillimeter(this long value) => Density.FromGramsPerCubicMillimeter(value);
125+
126+
/// <inheritdoc cref="Density.FromGramsPerCubicMillimeter(double?)"/>
127+
public static Density? GramsPerCubicMillimeter(this long? value) => Density.FromGramsPerCubicMillimeter(value);
128+
129+
/// <inheritdoc cref="Density.FromGramsPerCubicMillimeter(double)"/>
130+
public static Density GramsPerCubicMillimeter(this double value) => Density.FromGramsPerCubicMillimeter(value);
131+
132+
/// <inheritdoc cref="Density.FromGramsPerCubicMillimeter(double?)"/>
133+
public static Density? GramsPerCubicMillimeter(this double? value) => Density.FromGramsPerCubicMillimeter(value);
134+
135+
/// <inheritdoc cref="Density.FromGramsPerCubicMillimeter(double)"/>
136+
public static Density GramsPerCubicMillimeter(this float value) => Density.FromGramsPerCubicMillimeter(value);
137+
138+
/// <inheritdoc cref="Density.FromGramsPerCubicMillimeter(double?)"/>
139+
public static Density? GramsPerCubicMillimeter(this float? value) => Density.FromGramsPerCubicMillimeter(value);
140+
141+
/// <inheritdoc cref="Density.FromGramsPerCubicMillimeter(double)"/>
142+
public static Density GramsPerCubicMillimeter(this decimal value) => Density.FromGramsPerCubicMillimeter(Convert.ToDouble(value));
143+
144+
/// <inheritdoc cref="Density.FromGramsPerCubicMillimeter(double?)"/>
145+
public static Density? GramsPerCubicMillimeter(this decimal? value) => Density.FromGramsPerCubicMillimeter(value == null ? (double?)null : Convert.ToDouble(value.Value));
146+
147+
#endregion
148+
47149
#region KilogramPerCubicCentimeter
48150

49151
/// <inheritdoc cref="Density.FromKilogramsPerCubicCentimeter(double)"/>

0 commit comments

Comments
 (0)