Skip to content

Commit 9513df2

Browse files
committed
Merge pull request #133 from eriove/feature/changeable-default-unit-in-tostring
Add ability to change default unit for ToString()
2 parents 91884ea + 0273b30 commit 9513df2

38 files changed

+233
-36
lines changed

UnitsNet.Tests/CustomCode/LengthTests.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
// THE SOFTWARE.
2121

2222
using NUnit.Framework;
23+
using UnitsNet.Units;
2324

2425
namespace UnitsNet.Tests.CustomCode
2526
{
@@ -88,5 +89,25 @@ public void LengthTimesLengthEqualsArea()
8889
Area area = Length.FromMeters(10)*Length.FromMeters(2);
8990
Assert.AreEqual(area, Area.FromSquareMeters(20));
9091
}
92+
93+
[Test]
94+
public void ToStringReturnsCorrectNumberAndUnitWithDefaultUnitWhichIsMeter()
95+
{
96+
Length.ToStringDefaultUnit = LengthUnit.Meter;
97+
Length meter = Length.FromMeters(5);
98+
string meterString = meter.ToString();
99+
Assert.AreEqual("5 m", meterString);
100+
}
101+
102+
[Test]
103+
public void ToStringReturnsCorrectNumberAndUnitWithCentimeterAsDefualtUnit()
104+
{
105+
LengthUnit oldUnit = Length.ToStringDefaultUnit;
106+
Length.ToStringDefaultUnit = LengthUnit.Centimeter;
107+
Length value = Length.From(2, LengthUnit.Centimeter);
108+
string valueString = value.ToString();
109+
Length.ToStringDefaultUnit = oldUnit;
110+
Assert.AreEqual("2 cm", valueString);
111+
}
91112
}
92113
}

UnitsNet/CustomCode/UnitClasses/Length.extra.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
// THE SOFTWARE.
2121

2222
using System;
23+
using System.Diagnostics;
2324
using System.Globalization;
2425
using UnitsNet.Units;
2526

UnitsNet/GeneratedCode/UnitClasses/Acceleration.g.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,13 +473,18 @@ public static AccelerationUnit ParseUnit(string str, IFormatProvider formatProvi
473473

474474
#endregion
475475

476+
/// <summary>
477+
/// Set the default unit used by ToString(). Default is MeterPerSecondSquared
478+
/// </summary>
479+
public static AccelerationUnit ToStringDefaultUnit { get; set; } = AccelerationUnit.MeterPerSecondSquared;
480+
476481
/// <summary>
477482
/// Get default string representation of value and unit.
478483
/// </summary>
479484
/// <returns>String representation.</returns>
480485
public override string ToString()
481486
{
482-
return ToString(AccelerationUnit.MeterPerSecondSquared);
487+
return ToString(ToStringDefaultUnit);
483488
}
484489

485490
/// <summary>

UnitsNet/GeneratedCode/UnitClasses/AmplitudeRatio.g.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,13 +401,18 @@ public static AmplitudeRatioUnit ParseUnit(string str, IFormatProvider formatPro
401401

402402
#endregion
403403

404+
/// <summary>
405+
/// Set the default unit used by ToString(). Default is DecibelVolt
406+
/// </summary>
407+
public static AmplitudeRatioUnit ToStringDefaultUnit { get; set; } = AmplitudeRatioUnit.DecibelVolt;
408+
404409
/// <summary>
405410
/// Get default string representation of value and unit.
406411
/// </summary>
407412
/// <returns>String representation.</returns>
408413
public override string ToString()
409414
{
410-
return ToString(AmplitudeRatioUnit.DecibelVolt);
415+
return ToString(ToStringDefaultUnit);
411416
}
412417

413418
/// <summary>

UnitsNet/GeneratedCode/UnitClasses/Angle.g.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -533,13 +533,18 @@ public static AngleUnit ParseUnit(string str, IFormatProvider formatProvider = n
533533

534534
#endregion
535535

536+
/// <summary>
537+
/// Set the default unit used by ToString(). Default is Degree
538+
/// </summary>
539+
public static AngleUnit ToStringDefaultUnit { get; set; } = AngleUnit.Degree;
540+
536541
/// <summary>
537542
/// Get default string representation of value and unit.
538543
/// </summary>
539544
/// <returns>String representation.</returns>
540545
public override string ToString()
541546
{
542-
return ToString(AngleUnit.Degree);
547+
return ToString(ToStringDefaultUnit);
543548
}
544549

545550
/// <summary>

UnitsNet/GeneratedCode/UnitClasses/Area.g.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -533,13 +533,18 @@ public static AreaUnit ParseUnit(string str, IFormatProvider formatProvider = nu
533533

534534
#endregion
535535

536+
/// <summary>
537+
/// Set the default unit used by ToString(). Default is SquareMeter
538+
/// </summary>
539+
public static AreaUnit ToStringDefaultUnit { get; set; } = AreaUnit.SquareMeter;
540+
536541
/// <summary>
537542
/// Get default string representation of value and unit.
538543
/// </summary>
539544
/// <returns>String representation.</returns>
540545
public override string ToString()
541546
{
542-
return ToString(AreaUnit.SquareMeter);
547+
return ToString(ToStringDefaultUnit);
543548
}
544549

545550
/// <summary>

UnitsNet/GeneratedCode/UnitClasses/Density.g.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -533,13 +533,18 @@ public static DensityUnit ParseUnit(string str, IFormatProvider formatProvider =
533533

534534
#endregion
535535

536+
/// <summary>
537+
/// Set the default unit used by ToString(). Default is KilogramPerCubicMeter
538+
/// </summary>
539+
public static DensityUnit ToStringDefaultUnit { get; set; } = DensityUnit.KilogramPerCubicMeter;
540+
536541
/// <summary>
537542
/// Get default string representation of value and unit.
538543
/// </summary>
539544
/// <returns>String representation.</returns>
540545
public override string ToString()
541546
{
542-
return ToString(DensityUnit.KilogramPerCubicMeter);
547+
return ToString(ToStringDefaultUnit);
543548
}
544549

545550
/// <summary>

UnitsNet/GeneratedCode/UnitClasses/Duration.g.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -533,13 +533,18 @@ public static DurationUnit ParseUnit(string str, IFormatProvider formatProvider
533533

534534
#endregion
535535

536+
/// <summary>
537+
/// Set the default unit used by ToString(). Default is Second
538+
/// </summary>
539+
public static DurationUnit ToStringDefaultUnit { get; set; } = DurationUnit.Second;
540+
536541
/// <summary>
537542
/// Get default string representation of value and unit.
538543
/// </summary>
539544
/// <returns>String representation.</returns>
540545
public override string ToString()
541546
{
542-
return ToString(DurationUnit.Second);
547+
return ToString(ToStringDefaultUnit);
543548
}
544549

545550
/// <summary>

UnitsNet/GeneratedCode/UnitClasses/ElectricCurrent.g.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -453,13 +453,18 @@ public static ElectricCurrentUnit ParseUnit(string str, IFormatProvider formatPr
453453

454454
#endregion
455455

456+
/// <summary>
457+
/// Set the default unit used by ToString(). Default is Ampere
458+
/// </summary>
459+
public static ElectricCurrentUnit ToStringDefaultUnit { get; set; } = ElectricCurrentUnit.Ampere;
460+
456461
/// <summary>
457462
/// Get default string representation of value and unit.
458463
/// </summary>
459464
/// <returns>String representation.</returns>
460465
public override string ToString()
461466
{
462-
return ToString(ElectricCurrentUnit.Ampere);
467+
return ToString(ToStringDefaultUnit);
463468
}
464469

465470
/// <summary>

UnitsNet/GeneratedCode/UnitClasses/ElectricPotential.g.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,13 +433,18 @@ public static ElectricPotentialUnit ParseUnit(string str, IFormatProvider format
433433

434434
#endregion
435435

436+
/// <summary>
437+
/// Set the default unit used by ToString(). Default is Volt
438+
/// </summary>
439+
public static ElectricPotentialUnit ToStringDefaultUnit { get; set; } = ElectricPotentialUnit.Volt;
440+
436441
/// <summary>
437442
/// Get default string representation of value and unit.
438443
/// </summary>
439444
/// <returns>String representation.</returns>
440445
public override string ToString()
441446
{
442-
return ToString(ElectricPotentialUnit.Volt);
447+
return ToString(ToStringDefaultUnit);
443448
}
444449

445450
/// <summary>

0 commit comments

Comments
 (0)