Skip to content

Commit b61b9a7

Browse files
angularsentmilnthorp
authored andcommitted
Fix msbuild warnings, re-enable and treat all as errors (#617)
* Remove <NoWarn> from projects * Merge partial of BaseUnits * R#: Add "Gullberg" to dictionary * Obsolete Molarity.FromDensity() * Add xmldoc to fix msbuild warnings Mute some compiler warnings * Treat compiler warning as error for all projects
1 parent 95a3a32 commit b61b9a7

File tree

146 files changed

+2815
-397
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

146 files changed

+2815
-397
lines changed

UnitsNet.Serialization.JsonNet.CompatibilityTests/UnitsNet.Serialization.JsonNet.CompatibilityTests.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<TargetFrameworks>netcoreapp2.0</TargetFrameworks>
55
<RootNamespace>UnitsNet.Serialization.JsonNet.CompatibilityTests</RootNamespace>
66
<LangVersion>7.3</LangVersion>
7+
<MSBuildTreatWarningsAsErrors>true</MSBuildTreatWarningsAsErrors>
78
</PropertyGroup>
89

910
<ItemGroup>

UnitsNet.Serialization.JsonNet.Tests/UnitsNet.Serialization.JsonNet.Tests.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<TargetFrameworks>netcoreapp2.0</TargetFrameworks>
55
<RootNamespace>UnitsNet.Serialization.JsonNet.Tests</RootNamespace>
66
<LangVersion>7.3</LangVersion>
7+
<MSBuildTreatWarningsAsErrors>true</MSBuildTreatWarningsAsErrors>
78
</PropertyGroup>
89

910
<ItemGroup>

UnitsNet.Serialization.JsonNet/UnitsNet.Serialization.JsonNet.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
<PropertyGroup>
2121
<AssemblyVersion>4.0.0.0</AssemblyVersion> <!-- Should reflect major part of Version -->
2222
<LangVersion>7.3</LangVersion>
23-
<NoWarn>CS1701;CS1702;CS1705;CS0618</NoWarn>
2423
<RootNamespace>UnitsNet.Serialization.JsonNet</RootNamespace>
2524
<TargetFrameworks>netstandard2.0;net40</TargetFrameworks>
25+
<MSBuildTreatWarningsAsErrors>true</MSBuildTreatWarningsAsErrors>
2626
</PropertyGroup>
2727

2828
<!-- SourceLink -->

UnitsNet.Tests/CustomCode/MolarityTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public void ExpectDensityConvertedToMolarityCorrectly()
4242
{
4343
var density = Density.FromKilogramsPerCubicMeter(60.02);
4444
var mw = Mass.FromGrams(58.443);
45-
var molarity = Molarity.FromDensity(density, mw).MolesPerCubicMeter;
45+
var molarity = (density / mw).MolesPerCubicMeter;
4646
AssertEx.EqualTolerance(1026.98355, molarity, MolesPerCubicMeterTolerance);
4747
}
4848

UnitsNet.Tests/QuantityInfoTest.cs

+6
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,12 @@ public void Constructor_AssignsProperties()
2424

2525
Assert.Equal(expectedZero, info.Zero);
2626
Assert.Equal("Length", info.Name);
27+
// Obsolete members
28+
#pragma warning disable 618
2729
Assert.Equal(expectedUnits, info.Units);
2830
Assert.Equal(expectedBaseUnit, info.BaseUnit);
2931
Assert.Equal(new[]{"Centimeter", "Kilometer"}, info.UnitNames);
32+
#pragma warning restore 618
3033
Assert.Equal(expectedQuantityType, info.QuantityType);
3134
Assert.Equal(expectedBaseDimensions, info.BaseDimensions);
3235
}
@@ -44,9 +47,12 @@ public void GenericsConstructor_AssignsProperties()
4447

4548
Assert.Equal(expectedZero, info.Zero);
4649
Assert.Equal("Length", info.Name);
50+
// Obsolete members
51+
#pragma warning disable 618
4752
Assert.Equal(expectedUnits, info.Units);
4853
Assert.Equal(expectedBaseUnit, info.BaseUnit);
4954
Assert.Equal(new[]{"Centimeter", "Kilometer"}, info.UnitNames);
55+
#pragma warning restore 618
5056
Assert.Equal(expectedQuantityType, info.QuantityType);
5157
Assert.Equal(expectedBaseDimensions, info.BaseDimensions);
5258
}

UnitsNet.Tests/QuantityTest.cs

+6
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,13 @@ public void GetInfo_GivenLength_ReturnsQuantityInfoForLength()
5252

5353
Assert.Equal("Length", quantityInfo.Name);
5454
Assert.Equal(QuantityType.Length, quantityInfo.QuantityType);
55+
// Obsolete members
56+
#pragma warning disable 618
5557
Assert.Superset(knownLengthUnitNames.ToHashSet(), quantityInfo.UnitNames.ToHashSet());
5658
Assert.Superset(knownLengthUnits.ToHashSet(), quantityInfo.Units.ToHashSet());
5759
Assert.Equal(lengthUnitCount, quantityInfo.UnitNames.Length);
5860
Assert.Equal(lengthUnitCount, quantityInfo.Units.Length);
61+
#pragma warning restore 618
5962
Assert.Equal(typeof(LengthUnit), quantityInfo.UnitType);
6063
Assert.Equal(typeof(Length), quantityInfo.ValueType);
6164
Assert.Equal(Length.Zero, quantityInfo.Zero);
@@ -72,10 +75,13 @@ public void GetInfo_GivenMass_ReturnsQuantityInfoForMass()
7275

7376
Assert.Equal("Mass", quantityInfo.Name);
7477
Assert.Equal(QuantityType.Mass, quantityInfo.QuantityType);
78+
// Obsolete members
79+
#pragma warning disable 618
7580
Assert.Superset(knownMassUnitNames.ToHashSet(), quantityInfo.UnitNames.ToHashSet());
7681
Assert.Superset(knownMassUnits.ToHashSet(), quantityInfo.Units.ToHashSet());
7782
Assert.Equal(massUnitCount, quantityInfo.UnitNames.Length);
7883
Assert.Equal(massUnitCount, quantityInfo.Units.Length);
84+
#pragma warning restore 618
7985
Assert.Equal(typeof(MassUnit), quantityInfo.UnitType);
8086
Assert.Equal(typeof(Mass), quantityInfo.ValueType);
8187
Assert.Equal(Mass.Zero, quantityInfo.Zero);

UnitsNet.Tests/QuantityTests.cs

+6-3
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,16 @@ private static void AssertQuantityInfoRepresentsLength(QuantityInfo<LengthUnit>
4040
{
4141
Assert.Equal(Length.Zero, quantityInfo.Zero);
4242
Assert.Equal("Length", quantityInfo.Name);
43-
44-
var lengthUnits = EnumUtils.GetEnumValues<LengthUnit>().Except(new[] {LengthUnit.Undefined}).ToArray();
45-
Assert.Equal(lengthUnits, quantityInfo.Units);
4643
Assert.Equal(QuantityType.Length, quantityInfo.QuantityType);
4744

45+
var lengthUnits = EnumUtils.GetEnumValues<LengthUnit>().Except(new[] {LengthUnit.Undefined}).ToArray();
4846
var lengthUnitNames = lengthUnits.Select(x => x.ToString());
47+
48+
// Obsolete members
49+
#pragma warning disable 618
50+
Assert.Equal(lengthUnits, quantityInfo.Units);
4951
Assert.Equal(lengthUnitNames, quantityInfo.UnitNames);
52+
#pragma warning restore 618
5053
}
5154
}
5255
}

UnitsNet.Tests/UnitsNet.Tests.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
<PropertyGroup>
44
<TargetFrameworks>netcoreapp2.0</TargetFrameworks>
55
<RootNamespace>UnitsNet.Tests</RootNamespace>
6-
<NoWarn>CS1701;CS1702;CS1705;CS0618</NoWarn>
76
<LangVersion>7.3</LangVersion>
7+
<MSBuildTreatWarningsAsErrors>true</MSBuildTreatWarningsAsErrors>
88
</PropertyGroup>
99

1010
<ItemGroup>
@@ -25,4 +25,4 @@
2525
<ProjectReference Include="..\UnitsNet\UnitsNet.csproj" />
2626
</ItemGroup>
2727

28-
</Project>
28+
</Project>

UnitsNet.WindowsRuntimeComponent/UnitsNet.WindowsRuntimeComponent.csproj

+1-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
1919
<AllowCrossPlatformRetargeting>false</AllowCrossPlatformRetargeting>
2020
<OutputPath>..\Artifacts\UnitsNet.WindowsRuntimeComponent</OutputPath>
21-
<NoWarn>CS1701;CS1702;CS1705;CS0618;CS0809;CS1591</NoWarn>
2221
<LangVersion>7.3</LangVersion>
2322

2423
<!-- SourceLink -->
@@ -135,4 +134,4 @@
135134
<Target Name="AfterBuild">
136135
</Target>
137136
-->
138-
</Project>
137+
</Project>

UnitsNet.sln.DotSettings

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@
1616
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
1717
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
1818
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
19-
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
19+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
20+
<s:Boolean x:Key="/Default/UserDictionary/Words/=Gullberg/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

UnitsNet/BaseUnits.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@
77

88
namespace UnitsNet
99
{
10-
public sealed partial class BaseUnits : IEquatable<BaseUnits> { }
11-
10+
/// <inheritdoc />
1211
/// <summary>
1312
/// Represents the base units for a quantity. All quantities, both base and derived, can be
1413
/// represented by a combination of these seven base units.
1514
/// </summary>
16-
public sealed partial class BaseUnits
15+
public sealed class BaseUnits: IEquatable<BaseUnits>
1716
{
1817
/// <summary>
1918
/// Creates an instance of if the base units class that represents the base units for a quantity.

UnitsNet/CustomCode/GlobalConfiguration.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@
77
// ReSharper disable once CheckNamespace
88
namespace UnitsNet
99
{
10-
public sealed class GlobalConfiguration
10+
/// <summary>
11+
/// Global configuration for culture, used as default culture in methods like <see cref="Length.ToString()" /> and
12+
/// <see cref="Length.Parse(string)" />.
13+
/// </summary>
14+
public static class GlobalConfiguration
1115
{
1216
/// <summary>
1317
/// Defaults to <see cref="CultureInfo.CurrentUICulture" /> when creating an instance with no culture provided.

UnitsNet/CustomCode/Quantities/Angle.extra.cs

+2
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@ namespace UnitsNet
77
{
88
public partial struct Angle
99
{
10+
/// <summary>Get <see cref="RotationalSpeed"/> from <see cref="Angle"/> delta over time delta.</summary>
1011
public static RotationalSpeed operator /(Angle angle, TimeSpan timeSpan)
1112
{
1213
return RotationalSpeed.FromRadiansPerSecond(angle.Radians / timeSpan.TotalSeconds);
1314
}
1415

16+
/// <inheritdoc cref="op_Division(UnitsNet.Angle,System.TimeSpan)" />
1517
public static RotationalSpeed operator /(Angle angle, Duration duration)
1618
{
1719
return RotationalSpeed.FromRadiansPerSecond(angle.Radians / duration.Seconds);

UnitsNet/CustomCode/Quantities/Area.extra.cs

+5
Original file line numberDiff line numberDiff line change
@@ -9,29 +9,34 @@ public partial struct Area
99
{
1010
#region Static Methods
1111

12+
/// <summary>Get circle area from a diameter.</summary>
1213
public static Area FromCircleDiameter(Length diameter)
1314
{
1415
var radius = Length.FromMeters(diameter.Meters / 2d);
1516
return FromCircleRadius(radius);
1617
}
1718

19+
/// <summary>Get circle area from a radius.</summary>
1820
public static Area FromCircleRadius(Length radius)
1921
{
2022
return FromSquareMeters(Math.PI * radius.Meters * radius.Meters);
2123
}
2224

2325
#endregion
2426

27+
/// <summary>Get <see cref="Length"/> from <see cref="Area"/> divided by <see cref="Length"/>.</summary>
2528
public static Length operator /(Area area, Length length)
2629
{
2730
return Length.FromMeters(area.SquareMeters / length.Meters);
2831
}
2932

33+
/// <summary>Get <see cref="MassFlow"/> from <see cref="Area"/> times <see cref="MassFlux"/>.</summary>
3034
public static MassFlow operator *(Area area, MassFlux massFlux)
3135
{
3236
return MassFlow.FromGramsPerSecond(area.SquareMeters * massFlux.GramsPerSecondPerSquareMeter);
3337
}
3438

39+
/// <summary>Get <see cref="VolumeFlow"/> from <see cref="Area"/> times <see cref="Speed"/>.</summary>
3540
public static VolumeFlow operator *(Area area, Speed speed)
3641
{
3742
return VolumeFlow.FromCubicMetersPerSecond(area.SquareMeters * speed.MetersPerSecond);

UnitsNet/CustomCode/Quantities/BrakeSpecificFuelConsumption.extra.cs

+3
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,19 @@ namespace UnitsNet
55
{
66
public partial struct BrakeSpecificFuelConsumption
77
{
8+
/// <summary>Get <see cref="MassFlow"/> from <see cref="BrakeSpecificFuelConsumption"/> times <see cref="Power"/>.</summary>
89
public static MassFlow operator *(BrakeSpecificFuelConsumption bsfc, Power power)
910
{
1011
return MassFlow.FromKilogramsPerSecond(bsfc.KilogramsPerJoule*power.Watts);
1112
}
1213

14+
/// <summary>Get <see cref="SpecificEnergy"/> from <paramref name="value"/> divided by <see cref="BrakeSpecificFuelConsumption"/>.</summary>
1315
public static SpecificEnergy operator /(double value, BrakeSpecificFuelConsumption bsfc)
1416
{
1517
return SpecificEnergy.FromJoulesPerKilogram(value/bsfc.KilogramsPerJoule);
1618
}
1719

20+
/// <summary>Get constant from <see cref="BrakeSpecificFuelConsumption"/> times <see cref="SpecificEnergy"/>.</summary>
1821
public static double operator *(BrakeSpecificFuelConsumption bsfc, SpecificEnergy specificEnergy)
1922
{
2023
return specificEnergy.JoulesPerKilogram*bsfc.KilogramsPerJoule;

UnitsNet/CustomCode/Quantities/Density.extra.cs

+11-2
Original file line numberDiff line numberDiff line change
@@ -21,38 +21,47 @@ public Molarity ToMolarity(Mass molecularWeight)
2121
/// <summary>
2222
/// Get <see cref="Density" /> from <see cref="Molarity" />.
2323
/// </summary>
24-
/// <param name="molarity"></param>
25-
/// <param name="molecularWeight"></param>
2624
public static Density FromMolarity(Molarity molarity, Mass molecularWeight)
2725
{
2826
return new Density(molarity.MolesPerCubicMeter * molecularWeight.Kilograms, DensityUnit.KilogramPerCubicMeter);
2927
}
3028

3129
#endregion
3230

31+
/// <summary>Get <see cref="Mass"/> from <see cref="Density"/> times <see cref="Volume"/>.</summary>
3332
public static Mass operator *(Density density, Volume volume)
3433
{
3534
return Mass.FromKilograms(density.KilogramsPerCubicMeter * volume.CubicMeters);
3635
}
3736

37+
/// <summary>Get <see cref="Mass"/> from <see cref="Volume"/> times <see cref="Density"/>.</summary>
3838
public static Mass operator *(Volume volume, Density density)
3939
{
4040
return Mass.FromKilograms(density.KilogramsPerCubicMeter * volume.CubicMeters);
4141
}
4242

43+
/// <summary>Get <see cref="DynamicViscosity"/> from <see cref="Density"/> times <see cref="KinematicViscosity"/>.</summary>
4344
public static DynamicViscosity operator *(Density density, KinematicViscosity kinematicViscosity)
4445
{
4546
return DynamicViscosity.FromNewtonSecondsPerMeterSquared(kinematicViscosity.SquareMetersPerSecond * density.KilogramsPerCubicMeter);
4647
}
4748

49+
/// <summary>Get <see cref="MassFlux"/> <see cref="Density"/> times <see cref="Speed"/>.</summary>
4850
public static MassFlux operator *(Density density, Speed speed)
4951
{
5052
return MassFlux.FromKilogramsPerSecondPerSquareMeter(density.KilogramsPerCubicMeter * speed.MetersPerSecond);
5153
}
5254

55+
/// <summary>Get <see cref="SpecificWeight"/> from <see cref="Density"/> times <see cref="Acceleration"/>.</summary>
5356
public static SpecificWeight operator *(Density density, Acceleration acceleration)
5457
{
5558
return new SpecificWeight(density.KilogramsPerCubicMeter * acceleration.MetersPerSecondSquared, SpecificWeightUnit.NewtonPerCubicMeter);
5659
}
60+
61+
/// <summary>Get <see cref="Molarity"/> from <see cref="Density"/> divided by <see cref="Mass"/>.</summary>
62+
public static Molarity operator /(Density density, Mass molecularWeight)
63+
{
64+
return new Molarity(density.KilogramsPerCubicMeter / molecularWeight.Kilograms, MolarityUnit.MolesPerCubicMeter);
65+
}
5766
}
5867
}

UnitsNet/CustomCode/Quantities/Duration.extra.cs

+13
Original file line numberDiff line numberDiff line change
@@ -20,66 +20,79 @@ public TimeSpan ToTimeSpan()
2020
return TimeSpan.FromSeconds( Seconds );
2121
}
2222

23+
/// <summary>Get <see cref="DateTime"/> from <see cref="DateTime"/> plus <see cref="Duration"/>.</summary>
2324
public static DateTime operator +(DateTime time, Duration duration)
2425
{
2526
return time.AddSeconds(duration.Seconds);
2627
}
2728

29+
/// <summary>Get <see cref="DateTime"/> from <see cref="DateTime"/> minus <see cref="Duration"/>.</summary>
2830
public static DateTime operator -(DateTime time, Duration duration)
2931
{
3032
return time.AddSeconds(-duration.Seconds);
3133
}
3234

35+
/// <summary>Explicitly cast <see cref="Duration"/> to <see cref="TimeSpan"/>.</summary>
3336
public static explicit operator TimeSpan(Duration duration)
3437
{
3538
return duration.ToTimeSpan();
3639
}
3740

41+
/// <summary>Explicitly cast <see cref="TimeSpan"/> to <see cref="Duration"/>.</summary>
3842
public static explicit operator Duration(TimeSpan duration)
3943
{
4044
return FromSeconds(duration.TotalSeconds);
4145
}
4246

47+
/// <summary>True if <see cref="Duration"/> is less than <see cref="TimeSpan"/>.</summary>
4348
public static bool operator <(Duration duration, TimeSpan timeSpan)
4449
{
4550
return duration.Seconds < timeSpan.TotalSeconds;
4651
}
4752

53+
/// <summary>True if <see cref="Duration"/> is greater than <see cref="TimeSpan"/>.</summary>
4854
public static bool operator >(Duration duration, TimeSpan timeSpan)
4955
{
5056
return duration.Seconds > timeSpan.TotalSeconds;
5157
}
5258

59+
/// <summary>True if <see cref="Duration"/> is less than or equal to <see cref="TimeSpan"/>.</summary>
5360
public static bool operator <=(Duration duration, TimeSpan timeSpan)
5461
{
5562
return duration.Seconds <= timeSpan.TotalSeconds;
5663
}
5764

65+
/// <summary>True if <see cref="Duration"/> is greater than or equal to <see cref="TimeSpan"/>.</summary>
5866
public static bool operator >=(Duration duration, TimeSpan timeSpan)
5967
{
6068
return duration.Seconds >= timeSpan.TotalSeconds;
6169
}
6270

71+
/// <summary>True if <see cref="TimeSpan"/> is less than <see cref="Duration"/>.</summary>
6372
public static bool operator <(TimeSpan timeSpan, Duration duration)
6473
{
6574
return timeSpan.TotalSeconds < duration.Seconds;
6675
}
6776

77+
/// <summary>True if <see cref="TimeSpan"/> is greater than <see cref="Duration"/>.</summary>
6878
public static bool operator >(TimeSpan timeSpan, Duration duration)
6979
{
7080
return timeSpan.TotalSeconds > duration.Seconds;
7181
}
7282

83+
/// <summary>True if <see cref="TimeSpan"/> is less than or equal to <see cref="Duration"/>.</summary>
7384
public static bool operator <=(TimeSpan timeSpan, Duration duration)
7485
{
7586
return timeSpan.TotalSeconds <= duration.Seconds;
7687
}
7788

89+
/// <summary>True if <see cref="TimeSpan"/> is greater than or equal to <see cref="Duration"/>.</summary>
7890
public static bool operator >=(TimeSpan timeSpan, Duration duration)
7991
{
8092
return timeSpan.TotalSeconds >= duration.Seconds;
8193
}
8294

95+
/// <summary>Get <see cref="Volume"/> from <see cref="Duration"/> times <see cref="VolumeFlow"/>.</summary>
8396
public static Volume operator *(Duration duration, VolumeFlow volumeFlow)
8497
{
8598
return Volume.FromCubicMeters(volumeFlow.CubicMetersPerSecond * duration.Seconds);

UnitsNet/CustomCode/Quantities/DynamicViscosity.extra.cs

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ namespace UnitsNet
55
{
66
public partial struct DynamicViscosity
77
{
8+
/// <summary>Get <see cref="KinematicViscosity"/> from <see cref="DynamicViscosity"/> divided by <see cref="Density"/>.</summary>
89
public static KinematicViscosity operator /(DynamicViscosity dynamicViscosity, Density density)
910
{
1011
return KinematicViscosity.FromSquareMetersPerSecond(dynamicViscosity.NewtonSecondsPerMeterSquared / density.KilogramsPerCubicMeter);

0 commit comments

Comments
 (0)