Skip to content

Commit 1279b19

Browse files
committed
Merge pull request #131 from neutmute/feature/add-cups
Add metric, us legal and us customary cups to volume
2 parents 004a74f + 4cb5059 commit 1279b19

File tree

6 files changed

+140
-2
lines changed

6 files changed

+140
-2
lines changed

UnitsNet.Tests/CustomCode/VolumeTests.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,15 @@ public class VolumeTests : VolumeTestsBase
6666
protected override double TeaspoonsTolerance => 1E-3;
6767

6868
protected override double UsGallonsInOneCubicMeter => 264.17217;
69-
69+
7070
protected override double UsOuncesInOneCubicMeter => 33814.02270;
7171

72+
protected override double MetricCupsInOneCubicMeter => 4000;
73+
74+
protected override double UsCustomaryCupsInOneCubicMeter => 4226.75283773;
75+
76+
protected override double UsLegalCupsInOneCubicMeter => 4166.666666667;
77+
7278
[Test]
7379
public void VolumeDividedByAreaEqualsLength()
7480
{

UnitsNet.Tests/GeneratedCode/VolumeTestsBase.g.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,13 @@ public abstract partial class VolumeTestsBase
5151
protected abstract double ImperialGallonsInOneCubicMeter { get; }
5252
protected abstract double ImperialOuncesInOneCubicMeter { get; }
5353
protected abstract double LitersInOneCubicMeter { get; }
54+
protected abstract double MetricCupsInOneCubicMeter { get; }
5455
protected abstract double MillilitersInOneCubicMeter { get; }
5556
protected abstract double TablespoonsInOneCubicMeter { get; }
5657
protected abstract double TeaspoonsInOneCubicMeter { get; }
58+
protected abstract double UsCustomaryCupsInOneCubicMeter { get; }
5759
protected abstract double UsGallonsInOneCubicMeter { get; }
60+
protected abstract double UsLegalCupsInOneCubicMeter { get; }
5861
protected abstract double UsOuncesInOneCubicMeter { get; }
5962

6063
// ReSharper disable VirtualMemberNeverOverriden.Global
@@ -73,10 +76,13 @@ public abstract partial class VolumeTestsBase
7376
protected virtual double ImperialGallonsTolerance { get { return 1e-5; } }
7477
protected virtual double ImperialOuncesTolerance { get { return 1e-5; } }
7578
protected virtual double LitersTolerance { get { return 1e-5; } }
79+
protected virtual double MetricCupsTolerance { get { return 1e-5; } }
7680
protected virtual double MillilitersTolerance { get { return 1e-5; } }
7781
protected virtual double TablespoonsTolerance { get { return 1e-5; } }
7882
protected virtual double TeaspoonsTolerance { get { return 1e-5; } }
83+
protected virtual double UsCustomaryCupsTolerance { get { return 1e-5; } }
7984
protected virtual double UsGallonsTolerance { get { return 1e-5; } }
85+
protected virtual double UsLegalCupsTolerance { get { return 1e-5; } }
8086
protected virtual double UsOuncesTolerance { get { return 1e-5; } }
8187
// ReSharper restore VirtualMemberNeverOverriden.Global
8288

@@ -99,10 +105,13 @@ public void CubicMeterToVolumeUnits()
99105
Assert.AreEqual(ImperialGallonsInOneCubicMeter, cubicmeter.ImperialGallons, ImperialGallonsTolerance);
100106
Assert.AreEqual(ImperialOuncesInOneCubicMeter, cubicmeter.ImperialOunces, ImperialOuncesTolerance);
101107
Assert.AreEqual(LitersInOneCubicMeter, cubicmeter.Liters, LitersTolerance);
108+
Assert.AreEqual(MetricCupsInOneCubicMeter, cubicmeter.MetricCups, MetricCupsTolerance);
102109
Assert.AreEqual(MillilitersInOneCubicMeter, cubicmeter.Milliliters, MillilitersTolerance);
103110
Assert.AreEqual(TablespoonsInOneCubicMeter, cubicmeter.Tablespoons, TablespoonsTolerance);
104111
Assert.AreEqual(TeaspoonsInOneCubicMeter, cubicmeter.Teaspoons, TeaspoonsTolerance);
112+
Assert.AreEqual(UsCustomaryCupsInOneCubicMeter, cubicmeter.UsCustomaryCups, UsCustomaryCupsTolerance);
105113
Assert.AreEqual(UsGallonsInOneCubicMeter, cubicmeter.UsGallons, UsGallonsTolerance);
114+
Assert.AreEqual(UsLegalCupsInOneCubicMeter, cubicmeter.UsLegalCups, UsLegalCupsTolerance);
106115
Assert.AreEqual(UsOuncesInOneCubicMeter, cubicmeter.UsOunces, UsOuncesTolerance);
107116
}
108117

@@ -124,10 +133,13 @@ public void FromValueAndUnit()
124133
Assert.AreEqual(1, Volume.From(1, VolumeUnit.ImperialGallon).ImperialGallons, ImperialGallonsTolerance);
125134
Assert.AreEqual(1, Volume.From(1, VolumeUnit.ImperialOunce).ImperialOunces, ImperialOuncesTolerance);
126135
Assert.AreEqual(1, Volume.From(1, VolumeUnit.Liter).Liters, LitersTolerance);
136+
Assert.AreEqual(1, Volume.From(1, VolumeUnit.MetricCup).MetricCups, MetricCupsTolerance);
127137
Assert.AreEqual(1, Volume.From(1, VolumeUnit.Milliliter).Milliliters, MillilitersTolerance);
128138
Assert.AreEqual(1, Volume.From(1, VolumeUnit.Tablespoon).Tablespoons, TablespoonsTolerance);
129139
Assert.AreEqual(1, Volume.From(1, VolumeUnit.Teaspoon).Teaspoons, TeaspoonsTolerance);
140+
Assert.AreEqual(1, Volume.From(1, VolumeUnit.UsCustomaryCup).UsCustomaryCups, UsCustomaryCupsTolerance);
130141
Assert.AreEqual(1, Volume.From(1, VolumeUnit.UsGallon).UsGallons, UsGallonsTolerance);
142+
Assert.AreEqual(1, Volume.From(1, VolumeUnit.UsLegalCup).UsLegalCups, UsLegalCupsTolerance);
131143
Assert.AreEqual(1, Volume.From(1, VolumeUnit.UsOunce).UsOunces, UsOuncesTolerance);
132144
}
133145

@@ -150,10 +162,13 @@ public void As()
150162
Assert.AreEqual(ImperialGallonsInOneCubicMeter, cubicmeter.As(VolumeUnit.ImperialGallon), ImperialGallonsTolerance);
151163
Assert.AreEqual(ImperialOuncesInOneCubicMeter, cubicmeter.As(VolumeUnit.ImperialOunce), ImperialOuncesTolerance);
152164
Assert.AreEqual(LitersInOneCubicMeter, cubicmeter.As(VolumeUnit.Liter), LitersTolerance);
165+
Assert.AreEqual(MetricCupsInOneCubicMeter, cubicmeter.As(VolumeUnit.MetricCup), MetricCupsTolerance);
153166
Assert.AreEqual(MillilitersInOneCubicMeter, cubicmeter.As(VolumeUnit.Milliliter), MillilitersTolerance);
154167
Assert.AreEqual(TablespoonsInOneCubicMeter, cubicmeter.As(VolumeUnit.Tablespoon), TablespoonsTolerance);
155168
Assert.AreEqual(TeaspoonsInOneCubicMeter, cubicmeter.As(VolumeUnit.Teaspoon), TeaspoonsTolerance);
169+
Assert.AreEqual(UsCustomaryCupsInOneCubicMeter, cubicmeter.As(VolumeUnit.UsCustomaryCup), UsCustomaryCupsTolerance);
156170
Assert.AreEqual(UsGallonsInOneCubicMeter, cubicmeter.As(VolumeUnit.UsGallon), UsGallonsTolerance);
171+
Assert.AreEqual(UsLegalCupsInOneCubicMeter, cubicmeter.As(VolumeUnit.UsLegalCup), UsLegalCupsTolerance);
157172
Assert.AreEqual(UsOuncesInOneCubicMeter, cubicmeter.As(VolumeUnit.UsOunce), UsOuncesTolerance);
158173
}
159174

@@ -176,10 +191,13 @@ public void ConversionRoundTrip()
176191
Assert.AreEqual(1, Volume.FromImperialGallons(cubicmeter.ImperialGallons).CubicMeters, ImperialGallonsTolerance);
177192
Assert.AreEqual(1, Volume.FromImperialOunces(cubicmeter.ImperialOunces).CubicMeters, ImperialOuncesTolerance);
178193
Assert.AreEqual(1, Volume.FromLiters(cubicmeter.Liters).CubicMeters, LitersTolerance);
194+
Assert.AreEqual(1, Volume.FromMetricCups(cubicmeter.MetricCups).CubicMeters, MetricCupsTolerance);
179195
Assert.AreEqual(1, Volume.FromMilliliters(cubicmeter.Milliliters).CubicMeters, MillilitersTolerance);
180196
Assert.AreEqual(1, Volume.FromTablespoons(cubicmeter.Tablespoons).CubicMeters, TablespoonsTolerance);
181197
Assert.AreEqual(1, Volume.FromTeaspoons(cubicmeter.Teaspoons).CubicMeters, TeaspoonsTolerance);
198+
Assert.AreEqual(1, Volume.FromUsCustomaryCups(cubicmeter.UsCustomaryCups).CubicMeters, UsCustomaryCupsTolerance);
182199
Assert.AreEqual(1, Volume.FromUsGallons(cubicmeter.UsGallons).CubicMeters, UsGallonsTolerance);
200+
Assert.AreEqual(1, Volume.FromUsLegalCups(cubicmeter.UsLegalCups).CubicMeters, UsLegalCupsTolerance);
183201
Assert.AreEqual(1, Volume.FromUsOunces(cubicmeter.UsOunces).CubicMeters, UsOuncesTolerance);
184202
}
185203

UnitsNet/GeneratedCode/Enums/VolumeUnit.g.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,13 @@ public enum VolumeUnit
4040
ImperialGallon,
4141
ImperialOunce,
4242
Liter,
43+
MetricCup,
4344
Milliliter,
4445
Tablespoon,
4546
Teaspoon,
47+
UsCustomaryCup,
4648
UsGallon,
49+
UsLegalCup,
4750
UsOunce,
4851
}
4952
}

UnitsNet/GeneratedCode/UnitClasses/Volume.g.cs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,14 @@ public double Liters
174174
get { return _cubicMeters*1e3; }
175175
}
176176

177+
/// <summary>
178+
/// Get Volume in MetricCups.
179+
/// </summary>
180+
public double MetricCups
181+
{
182+
get { return _cubicMeters/0.00025; }
183+
}
184+
177185
/// <summary>
178186
/// Get Volume in Milliliters.
179187
/// </summary>
@@ -198,6 +206,14 @@ public double Teaspoons
198206
get { return _cubicMeters/4.92892159e-6; }
199207
}
200208

209+
/// <summary>
210+
/// Get Volume in UsCustomaryCups.
211+
/// </summary>
212+
public double UsCustomaryCups
213+
{
214+
get { return _cubicMeters/0.0002365882365; }
215+
}
216+
201217
/// <summary>
202218
/// Get Volume in UsGallons.
203219
/// </summary>
@@ -206,6 +222,14 @@ public double UsGallons
206222
get { return _cubicMeters/0.00378541; }
207223
}
208224

225+
/// <summary>
226+
/// Get Volume in UsLegalCups.
227+
/// </summary>
228+
public double UsLegalCups
229+
{
230+
get { return _cubicMeters/0.00024; }
231+
}
232+
209233
/// <summary>
210234
/// Get Volume in UsOunces.
211235
/// </summary>
@@ -343,6 +367,14 @@ public static Volume FromLiters(double liters)
343367
return new Volume(liters/1e3);
344368
}
345369

370+
/// <summary>
371+
/// Get Volume from MetricCups.
372+
/// </summary>
373+
public static Volume FromMetricCups(double metriccups)
374+
{
375+
return new Volume(metriccups*0.00025);
376+
}
377+
346378
/// <summary>
347379
/// Get Volume from Milliliters.
348380
/// </summary>
@@ -367,6 +399,14 @@ public static Volume FromTeaspoons(double teaspoons)
367399
return new Volume(teaspoons*4.92892159e-6);
368400
}
369401

402+
/// <summary>
403+
/// Get Volume from UsCustomaryCups.
404+
/// </summary>
405+
public static Volume FromUsCustomaryCups(double uscustomarycups)
406+
{
407+
return new Volume(uscustomarycups*0.0002365882365);
408+
}
409+
370410
/// <summary>
371411
/// Get Volume from UsGallons.
372412
/// </summary>
@@ -375,6 +415,14 @@ public static Volume FromUsGallons(double usgallons)
375415
return new Volume(usgallons*0.00378541);
376416
}
377417

418+
/// <summary>
419+
/// Get Volume from UsLegalCups.
420+
/// </summary>
421+
public static Volume FromUsLegalCups(double uslegalcups)
422+
{
423+
return new Volume(uslegalcups*0.00024);
424+
}
425+
378426
/// <summary>
379427
/// Get Volume from UsOunces.
380428
/// </summary>
@@ -424,14 +472,20 @@ public static Volume From(double value, VolumeUnit fromUnit)
424472
return FromImperialOunces(value);
425473
case VolumeUnit.Liter:
426474
return FromLiters(value);
475+
case VolumeUnit.MetricCup:
476+
return FromMetricCups(value);
427477
case VolumeUnit.Milliliter:
428478
return FromMilliliters(value);
429479
case VolumeUnit.Tablespoon:
430480
return FromTablespoons(value);
431481
case VolumeUnit.Teaspoon:
432482
return FromTeaspoons(value);
483+
case VolumeUnit.UsCustomaryCup:
484+
return FromUsCustomaryCups(value);
433485
case VolumeUnit.UsGallon:
434486
return FromUsGallons(value);
487+
case VolumeUnit.UsLegalCup:
488+
return FromUsLegalCups(value);
435489
case VolumeUnit.UsOunce:
436490
return FromUsOunces(value);
437491

@@ -597,14 +651,20 @@ public double As(VolumeUnit unit)
597651
return ImperialOunces;
598652
case VolumeUnit.Liter:
599653
return Liters;
654+
case VolumeUnit.MetricCup:
655+
return MetricCups;
600656
case VolumeUnit.Milliliter:
601657
return Milliliters;
602658
case VolumeUnit.Tablespoon:
603659
return Tablespoons;
604660
case VolumeUnit.Teaspoon:
605661
return Teaspoons;
662+
case VolumeUnit.UsCustomaryCup:
663+
return UsCustomaryCups;
606664
case VolumeUnit.UsGallon:
607665
return UsGallons;
666+
case VolumeUnit.UsLegalCup:
667+
return UsLegalCups;
608668
case VolumeUnit.UsOunce:
609669
return UsOunces;
610670

UnitsNet/GeneratedCode/UnitSystem.Default.g.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1959,6 +1959,11 @@ private static readonly ReadOnlyCollection<UnitLocalization> DefaultLocalization
19591959
new AbbreviationsForCulture("en-US", "l"),
19601960
new AbbreviationsForCulture("ru-RU", "л"),
19611961
}),
1962+
new CulturesForEnumValue((int) VolumeUnit.MetricCup,
1963+
new[]
1964+
{
1965+
new AbbreviationsForCulture("en-US", ""),
1966+
}),
19621967
new CulturesForEnumValue((int) VolumeUnit.Milliliter,
19631968
new[]
19641969
{
@@ -1979,12 +1984,22 @@ private static readonly ReadOnlyCollection<UnitLocalization> DefaultLocalization
19791984
new AbbreviationsForCulture("ru-RU", "чайная ложка"),
19801985
new AbbreviationsForCulture("nb-NO", "ts", "ts."),
19811986
}),
1987+
new CulturesForEnumValue((int) VolumeUnit.UsCustomaryCup,
1988+
new[]
1989+
{
1990+
new AbbreviationsForCulture("en-US", ""),
1991+
}),
19821992
new CulturesForEnumValue((int) VolumeUnit.UsGallon,
19831993
new[]
19841994
{
19851995
new AbbreviationsForCulture("en-US", "gal (U.S.)"),
19861996
new AbbreviationsForCulture("ru-RU", "Американский галлон"),
19871997
}),
1998+
new CulturesForEnumValue((int) VolumeUnit.UsLegalCup,
1999+
new[]
2000+
{
2001+
new AbbreviationsForCulture("en-US", ""),
2002+
}),
19882003
new CulturesForEnumValue((int) VolumeUnit.UsOunce,
19892004
new[]
19902005
{

UnitsNet/Scripts/UnitDefinitions/Volume.json

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,42 @@
268268
"Abbreviations": ["ts", "ts."]
269269
}
270270
]
271+
},
272+
{
273+
"SingularName": "MetricCup",
274+
"PluralName": "MetricCups",
275+
"FromUnitToBaseFunc": "x*0.00025",
276+
"FromBaseToUnitFunc": "x/0.00025",
277+
"Localization": [
278+
{
279+
"Culture": "en-US",
280+
"Abbreviations": []
281+
}
282+
]
283+
},
284+
{
285+
"SingularName": "UsCustomaryCup",
286+
"PluralName": "UsCustomaryCups",
287+
"FromUnitToBaseFunc": "x*0.0002365882365",
288+
"FromBaseToUnitFunc": "x/0.0002365882365",
289+
"Localization": [
290+
{
291+
"Culture": "en-US",
292+
"Abbreviations": []
293+
}
294+
]
295+
},
296+
{
297+
"SingularName": "UsLegalCup",
298+
"PluralName": "UsLegalCups",
299+
"FromUnitToBaseFunc": "x*0.00024",
300+
"FromBaseToUnitFunc": "x/0.00024",
301+
"Localization": [
302+
{
303+
"Culture": "en-US",
304+
"Abbreviations": []
305+
}
306+
]
271307
}
272308
]
273-
}
309+
}

0 commit comments

Comments
 (0)