diff --git a/Common/UnitDefinitions/ReciprocalArea.json b/Common/UnitDefinitions/ReciprocalArea.json
new file mode 100644
index 0000000000..99be49adfe
--- /dev/null
+++ b/Common/UnitDefinitions/ReciprocalArea.json
@@ -0,0 +1,144 @@
+{
+ "Name": "ReciprocalArea",
+ "BaseUnit": "InverseSquareMeter",
+ "XmlDoc": "Reciprocal area (Inverse-square) quantity is used to specify a physical quantity inversely proportional to the square of the distance.",
+ "XmlDocRemarks": "https://en.wikipedia.org/wiki/Inverse-square_law",
+ "BaseDimensions": {
+ "L": -2
+ },
+ "Units": [
+ {
+ "SingularName": "InverseSquareMeter",
+ "PluralName": "InverseSquareMeters",
+ "FromUnitToBaseFunc": "x",
+ "FromBaseToUnitFunc": "x",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "m⁻²" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "InverseSquareKilometer",
+ "PluralName": "InverseSquareKilometers",
+ "FromUnitToBaseFunc": "x/1e6",
+ "FromBaseToUnitFunc": "x*1e6",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "km⁻²" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "InverseSquareDecimeter",
+ "PluralName": "InverseSquareDecimeters",
+ "FromUnitToBaseFunc": "x/1e-2",
+ "FromBaseToUnitFunc": "x*1e-2",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "dm⁻²" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "InverseSquareCentimeter",
+ "PluralName": "InverseSquareCentimeters",
+ "FromUnitToBaseFunc": "x/1e-4",
+ "FromBaseToUnitFunc": "x*1e-4",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "cm⁻²" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "InverseSquareMillimeter",
+ "PluralName": "InverseSquareMillimeters",
+ "FromUnitToBaseFunc": "x/1e-6",
+ "FromBaseToUnitFunc": "x*1e-6",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "mm⁻²" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "InverseSquareMicrometer",
+ "PluralName": "InverseSquareMicrometers",
+ "FromUnitToBaseFunc": "x/1e-12",
+ "FromBaseToUnitFunc": "x*1e-12",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "µm⁻²" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "InverseSquareMile",
+ "PluralName": "InverseSquareMiles",
+ "FromUnitToBaseFunc": "x/2.59e6",
+ "FromBaseToUnitFunc": "x*2.59e6",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "mi⁻²" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "InverseSquareYard",
+ "PluralName": "InverseSquareYards",
+ "FromUnitToBaseFunc": "x/0.836127",
+ "FromBaseToUnitFunc": "x*0.836127",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "yd⁻²" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "InverseSquareFoot",
+ "PluralName": "InverseSquareFeet",
+ "FromUnitToBaseFunc": "x/0.092903",
+ "FromBaseToUnitFunc": "x*0.092903",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "ft⁻²" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "InverseUsSurveySquareFoot",
+ "PluralName": "InverseUsSurveySquareFeet",
+ "FromUnitToBaseFunc": "x/0.09290341161",
+ "FromBaseToUnitFunc": "x*0.09290341161",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "ft⁻² (US)" ]
+ }
+ ]
+ },
+ {
+ "SingularName": "InverseSquareInch",
+ "PluralName": "InverseSquareInches",
+ "FromUnitToBaseFunc": "x/0.00064516",
+ "FromBaseToUnitFunc": "x*0.00064516",
+ "Localization": [
+ {
+ "Culture": "en-US",
+ "Abbreviations": [ "in⁻²" ]
+ }
+ ]
+ }
+ ]
+}
+
\ No newline at end of file
diff --git a/UnitsNet.NanoFramework/GeneratedCode/Quantities/ReciprocalArea.g.cs b/UnitsNet.NanoFramework/GeneratedCode/Quantities/ReciprocalArea.g.cs
new file mode 100644
index 0000000000..0941da4332
--- /dev/null
+++ b/UnitsNet.NanoFramework/GeneratedCode/Quantities/ReciprocalArea.g.cs
@@ -0,0 +1,296 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by \generate-code.bat.
+//
+// Changes to this file will be lost when the code is regenerated.
+// The build server regenerates the code before each build and a pre-build
+// step will regenerate the code on each local build.
+//
+// See https://github.com/angularsen/UnitsNet/wiki/Adding-a-New-Unit for how to add or edit units.
+//
+// Add CustomCode\Quantities\MyQuantity.extra.cs files to add code to generated quantities.
+// Add UnitDefinitions\MyQuantity.json and run generate-code.bat to generate new units or quantities.
+//
+//
+//------------------------------------------------------------------------------
+
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+using System;
+using UnitsNet.Units;
+
+namespace UnitsNet
+{
+ ///
+ ///
+ /// Reciprocal area (Inverse-square) quantity is used to specify a physical quantity inversely proportional to the square of the distance.
+ ///
+ ///
+ /// https://en.wikipedia.org/wiki/Inverse-square_law
+ ///
+ public struct ReciprocalArea
+ {
+ ///
+ /// The numeric value this quantity was constructed with.
+ ///
+ private readonly double _value;
+
+ ///
+ /// The unit this quantity was constructed with.
+ ///
+ private readonly ReciprocalAreaUnit _unit;
+
+ ///
+ /// The numeric value this quantity was constructed with.
+ ///
+ public double Value => _value;
+
+ ///
+ public ReciprocalAreaUnit Unit => _unit;
+ ///
+ /// Creates the quantity with the given numeric value and unit.
+ ///
+ /// The numeric value to construct this quantity with.
+ /// The unit representation to construct this quantity with.
+ /// If value is NaN or Infinity.
+ public ReciprocalArea(double value, ReciprocalAreaUnit unit)
+ {
+ _value = value;
+ _unit = unit;
+ }
+
+ ///
+ /// The base unit of Duration, which is Second. All conversions go via this value.
+ ///
+ public static ReciprocalAreaUnit BaseUnit { get; } = ReciprocalAreaUnit.InverseSquareMeter;
+
+ ///
+ /// Represents the largest possible value of Duration
+ ///
+ public static ReciprocalArea MaxValue { get; } = new ReciprocalArea(double.MaxValue, BaseUnit);
+
+ ///
+ /// Represents the smallest possible value of Duration
+ ///
+ public static ReciprocalArea MinValue { get; } = new ReciprocalArea(double.MinValue, BaseUnit);
+ ///
+ /// Gets an instance of this quantity with a value of 0 in the base unit Second.
+ ///
+ public static ReciprocalArea Zero { get; } = new ReciprocalArea(0, BaseUnit);
+ #region Conversion Properties
+
+ ///
+ /// Get ReciprocalArea in InverseSquareCentimeters.
+ ///
+ public double InverseSquareCentimeters => As(ReciprocalAreaUnit.InverseSquareCentimeter);
+
+ ///
+ /// Get ReciprocalArea in InverseSquareDecimeters.
+ ///
+ public double InverseSquareDecimeters => As(ReciprocalAreaUnit.InverseSquareDecimeter);
+
+ ///
+ /// Get ReciprocalArea in InverseSquareFeet.
+ ///
+ public double InverseSquareFeet => As(ReciprocalAreaUnit.InverseSquareFoot);
+
+ ///
+ /// Get ReciprocalArea in InverseSquareInches.
+ ///
+ public double InverseSquareInches => As(ReciprocalAreaUnit.InverseSquareInch);
+
+ ///
+ /// Get ReciprocalArea in InverseSquareKilometers.
+ ///
+ public double InverseSquareKilometers => As(ReciprocalAreaUnit.InverseSquareKilometer);
+
+ ///
+ /// Get ReciprocalArea in InverseSquareMeters.
+ ///
+ public double InverseSquareMeters => As(ReciprocalAreaUnit.InverseSquareMeter);
+
+ ///
+ /// Get ReciprocalArea in InverseSquareMicrometers.
+ ///
+ public double InverseSquareMicrometers => As(ReciprocalAreaUnit.InverseSquareMicrometer);
+
+ ///
+ /// Get ReciprocalArea in InverseSquareMiles.
+ ///
+ public double InverseSquareMiles => As(ReciprocalAreaUnit.InverseSquareMile);
+
+ ///
+ /// Get ReciprocalArea in InverseSquareMillimeters.
+ ///
+ public double InverseSquareMillimeters => As(ReciprocalAreaUnit.InverseSquareMillimeter);
+
+ ///
+ /// Get ReciprocalArea in InverseSquareYards.
+ ///
+ public double InverseSquareYards => As(ReciprocalAreaUnit.InverseSquareYard);
+
+ ///
+ /// Get ReciprocalArea in InverseUsSurveySquareFeet.
+ ///
+ public double InverseUsSurveySquareFeet => As(ReciprocalAreaUnit.InverseUsSurveySquareFoot);
+
+ #endregion
+
+ #region Static Factory Methods
+
+ ///
+ /// Get ReciprocalArea from InverseSquareCentimeters.
+ ///
+ /// If value is NaN or Infinity.
+ public static ReciprocalArea FromInverseSquareCentimeters(double inversesquarecentimeters) => new ReciprocalArea(inversesquarecentimeters, ReciprocalAreaUnit.InverseSquareCentimeter);
+
+ ///
+ /// Get ReciprocalArea from InverseSquareDecimeters.
+ ///
+ /// If value is NaN or Infinity.
+ public static ReciprocalArea FromInverseSquareDecimeters(double inversesquaredecimeters) => new ReciprocalArea(inversesquaredecimeters, ReciprocalAreaUnit.InverseSquareDecimeter);
+
+ ///
+ /// Get ReciprocalArea from InverseSquareFeet.
+ ///
+ /// If value is NaN or Infinity.
+ public static ReciprocalArea FromInverseSquareFeet(double inversesquarefeet) => new ReciprocalArea(inversesquarefeet, ReciprocalAreaUnit.InverseSquareFoot);
+
+ ///
+ /// Get ReciprocalArea from InverseSquareInches.
+ ///
+ /// If value is NaN or Infinity.
+ public static ReciprocalArea FromInverseSquareInches(double inversesquareinches) => new ReciprocalArea(inversesquareinches, ReciprocalAreaUnit.InverseSquareInch);
+
+ ///
+ /// Get ReciprocalArea from InverseSquareKilometers.
+ ///
+ /// If value is NaN or Infinity.
+ public static ReciprocalArea FromInverseSquareKilometers(double inversesquarekilometers) => new ReciprocalArea(inversesquarekilometers, ReciprocalAreaUnit.InverseSquareKilometer);
+
+ ///
+ /// Get ReciprocalArea from InverseSquareMeters.
+ ///
+ /// If value is NaN or Infinity.
+ public static ReciprocalArea FromInverseSquareMeters(double inversesquaremeters) => new ReciprocalArea(inversesquaremeters, ReciprocalAreaUnit.InverseSquareMeter);
+
+ ///
+ /// Get ReciprocalArea from InverseSquareMicrometers.
+ ///
+ /// If value is NaN or Infinity.
+ public static ReciprocalArea FromInverseSquareMicrometers(double inversesquaremicrometers) => new ReciprocalArea(inversesquaremicrometers, ReciprocalAreaUnit.InverseSquareMicrometer);
+
+ ///
+ /// Get ReciprocalArea from InverseSquareMiles.
+ ///
+ /// If value is NaN or Infinity.
+ public static ReciprocalArea FromInverseSquareMiles(double inversesquaremiles) => new ReciprocalArea(inversesquaremiles, ReciprocalAreaUnit.InverseSquareMile);
+
+ ///
+ /// Get ReciprocalArea from InverseSquareMillimeters.
+ ///
+ /// If value is NaN or Infinity.
+ public static ReciprocalArea FromInverseSquareMillimeters(double inversesquaremillimeters) => new ReciprocalArea(inversesquaremillimeters, ReciprocalAreaUnit.InverseSquareMillimeter);
+
+ ///
+ /// Get ReciprocalArea from InverseSquareYards.
+ ///
+ /// If value is NaN or Infinity.
+ public static ReciprocalArea FromInverseSquareYards(double inversesquareyards) => new ReciprocalArea(inversesquareyards, ReciprocalAreaUnit.InverseSquareYard);
+
+ ///
+ /// Get ReciprocalArea from InverseUsSurveySquareFeet.
+ ///
+ /// If value is NaN or Infinity.
+ public static ReciprocalArea FromInverseUsSurveySquareFeet(double inverseussurveysquarefeet) => new ReciprocalArea(inverseussurveysquarefeet, ReciprocalAreaUnit.InverseUsSurveySquareFoot);
+
+
+ ///
+ /// Dynamically convert from value and unit enum to .
+ ///
+ /// Value to convert from.
+ /// Unit to convert from.
+ /// ReciprocalArea unit value.
+ public static ReciprocalArea From(double value, ReciprocalAreaUnit fromUnit)
+ {
+ return new ReciprocalArea(value, fromUnit);
+ }
+
+ #endregion
+
+ #region Conversion Methods
+
+ ///
+ /// Convert to the unit representation .
+ ///
+ /// Value converted to the specified unit.
+ public double As(ReciprocalAreaUnit unit) => GetValueAs(unit);
+
+ ///
+ /// Converts this Duration to another Duration with the unit representation .
+ ///
+ /// A Duration with the specified unit.
+ public ReciprocalArea ToUnit(ReciprocalAreaUnit unit)
+ {
+
+ var convertedValue = GetValueAs(unit);
+ return new ReciprocalArea(convertedValue, unit);
+ }
+
+
+ ///
+ /// Converts the current value + unit to the base unit.
+ /// This is typically the first step in converting from one unit to another.
+ ///
+ /// The value in the base unit representation.
+ private double GetValueInBaseUnit()
+ {
+ switch(Unit)
+ {
+ case ReciprocalAreaUnit.InverseSquareCentimeter: return _value/1e-4;
+ case ReciprocalAreaUnit.InverseSquareDecimeter: return _value/1e-2;
+ case ReciprocalAreaUnit.InverseSquareFoot: return _value/0.092903;
+ case ReciprocalAreaUnit.InverseSquareInch: return _value/0.00064516;
+ case ReciprocalAreaUnit.InverseSquareKilometer: return _value/1e6;
+ case ReciprocalAreaUnit.InverseSquareMeter: return _value;
+ case ReciprocalAreaUnit.InverseSquareMicrometer: return _value/1e-12;
+ case ReciprocalAreaUnit.InverseSquareMile: return _value/2.59e6;
+ case ReciprocalAreaUnit.InverseSquareMillimeter: return _value/1e-6;
+ case ReciprocalAreaUnit.InverseSquareYard: return _value/0.836127;
+ case ReciprocalAreaUnit.InverseUsSurveySquareFoot: return _value/0.09290341161;
+ default:
+ throw new NotImplementedException($"Can not convert {Unit} to base units.");
+ }
+ }
+
+ private double GetValueAs(ReciprocalAreaUnit unit)
+ {
+ if(Unit == unit)
+ return _value;
+
+ var baseUnitValue = GetValueInBaseUnit();
+
+ switch(unit)
+ {
+ case ReciprocalAreaUnit.InverseSquareCentimeter: return baseUnitValue*1e-4;
+ case ReciprocalAreaUnit.InverseSquareDecimeter: return baseUnitValue*1e-2;
+ case ReciprocalAreaUnit.InverseSquareFoot: return baseUnitValue*0.092903;
+ case ReciprocalAreaUnit.InverseSquareInch: return baseUnitValue*0.00064516;
+ case ReciprocalAreaUnit.InverseSquareKilometer: return baseUnitValue*1e6;
+ case ReciprocalAreaUnit.InverseSquareMeter: return baseUnitValue;
+ case ReciprocalAreaUnit.InverseSquareMicrometer: return baseUnitValue*1e-12;
+ case ReciprocalAreaUnit.InverseSquareMile: return baseUnitValue*2.59e6;
+ case ReciprocalAreaUnit.InverseSquareMillimeter: return baseUnitValue*1e-6;
+ case ReciprocalAreaUnit.InverseSquareYard: return baseUnitValue*0.836127;
+ case ReciprocalAreaUnit.InverseUsSurveySquareFoot: return baseUnitValue*0.09290341161;
+ default:
+ throw new NotImplementedException($"Can not convert {Unit} to {unit}.");
+ }
+ }
+
+ #endregion
+
+ }
+}
+
diff --git a/UnitsNet.NanoFramework/GeneratedCode/ReciprocalArea/ReciprocalArea.nfproj b/UnitsNet.NanoFramework/GeneratedCode/ReciprocalArea/ReciprocalArea.nfproj
new file mode 100644
index 0000000000..fcd4bea1e7
--- /dev/null
+++ b/UnitsNet.NanoFramework/GeneratedCode/ReciprocalArea/ReciprocalArea.nfproj
@@ -0,0 +1,42 @@
+
+
+
+ $(MSBuildToolsPath)..\..\..\nanoFramework\v1.0\
+
+
+
+ Debug
+ AnyCPU
+ {11A8DD76-328B-46DF-9F39-F559912D0360};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ {30fee563-a3f0-9c50-bfd1-1af707aaf3c4}
+ Library
+ Properties
+ 512
+ UnitsNet
+ UnitsNet.ReciprocalArea
+ v1.0
+ bin\$(Configuration)\$(AssemblyName).xml
+
+
+
+
+
+
+
+
+
+ ..\packages\nanoFramework.CoreLibrary.1.10.5-preview.18\lib\mscorlib.dll
+ True
+ True
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/UnitsNet.NanoFramework/GeneratedCode/ReciprocalArea/UnitsNet.NanoFramework.ReciprocalArea.nuspec b/UnitsNet.NanoFramework/GeneratedCode/ReciprocalArea/UnitsNet.NanoFramework.ReciprocalArea.nuspec
new file mode 100644
index 0000000000..0ce8bd4695
--- /dev/null
+++ b/UnitsNet.NanoFramework/GeneratedCode/ReciprocalArea/UnitsNet.NanoFramework.ReciprocalArea.nuspec
@@ -0,0 +1,26 @@
+
+
+
+ UnitsNet.nanoFramework.ReciprocalArea
+ 4.99.0
+ Units.NET ReciprocalArea - nanoFramework
+ Andreas Gullberg Larsen,nanoFramework project contributors
+ UnitsNet
+ MIT
+ https://github.com/angularsen/UnitsNet
+ false
+ Adds ReciprocalArea units for Units.NET on .NET nanoFramework. For .NET or .NET Core, use UnitsNet instead.
+ https://raw.githubusercontent.com/angularsen/UnitsNet/ce85185429be345d77eb2ce09c99d59cc9ab8aed/Docs/Images/logo-32.png
+
+
+ Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com).
+ en-US
+ nanoframework unit units measurement si metric imperial abbreviation abbreviations convert conversion parse c# .net immutable uwp uap winrt win10 windows runtime component reciprocalarea
+
+
+
+
+
+
+
+
diff --git a/UnitsNet.NanoFramework/GeneratedCode/ReciprocalArea/packages.config b/UnitsNet.NanoFramework/GeneratedCode/ReciprocalArea/packages.config
new file mode 100644
index 0000000000..dc595a08dd
--- /dev/null
+++ b/UnitsNet.NanoFramework/GeneratedCode/ReciprocalArea/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/UnitsNet.NanoFramework/GeneratedCode/Units/ReciprocalAreaUnit.g.cs b/UnitsNet.NanoFramework/GeneratedCode/Units/ReciprocalAreaUnit.g.cs
new file mode 100644
index 0000000000..822c6e03eb
--- /dev/null
+++ b/UnitsNet.NanoFramework/GeneratedCode/Units/ReciprocalAreaUnit.g.cs
@@ -0,0 +1,43 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by \generate-code.bat.
+//
+// Changes to this file will be lost when the code is regenerated.
+// The build server regenerates the code before each build and a pre-build
+// step will regenerate the code on each local build.
+//
+// See https://github.com/angularsen/UnitsNet/wiki/Adding-a-New-Unit for how to add or edit units.
+//
+// Add CustomCode\Quantities\MyQuantity.extra.cs files to add code to generated quantities.
+// Add UnitDefinitions\MyQuantity.json and run generate-code.bat to generate new units or quantities.
+//
+//
+//------------------------------------------------------------------------------
+
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+// ReSharper disable once CheckNamespace
+namespace UnitsNet.Units
+{
+ // Disable missing XML comment warnings for the generated unit enums.
+ #pragma warning disable 1591
+
+ public enum ReciprocalAreaUnit
+ {
+ Undefined = 0,
+ InverseSquareCentimeter,
+ InverseSquareDecimeter,
+ InverseSquareFoot,
+ InverseSquareInch,
+ InverseSquareKilometer,
+ InverseSquareMeter,
+ InverseSquareMicrometer,
+ InverseSquareMile,
+ InverseSquareMillimeter,
+ InverseSquareYard,
+ InverseUsSurveySquareFoot,
+ }
+
+ #pragma warning restore 1591
+}
diff --git a/UnitsNet.NanoFramework/GeneratedCode/UnitsNet.nanoFramework.sln b/UnitsNet.NanoFramework/GeneratedCode/UnitsNet.nanoFramework.sln
index dedb565eb6..ceda8aa2fb 100644
--- a/UnitsNet.NanoFramework/GeneratedCode/UnitsNet.nanoFramework.sln
+++ b/UnitsNet.NanoFramework/GeneratedCode/UnitsNet.nanoFramework.sln
@@ -160,6 +160,8 @@ Project("{d608a2b1-6ead-4383-a205-ad1ce69d9ef7}") = "ReactiveEnergy", "ReactiveE
EndProject
Project("{d608a2b1-6ead-4383-a205-ad1ce69d9ef7}") = "ReactivePower", "ReactivePower\ReactivePower.nfproj", "{6821b87e-65eb-bfdb-8fdc-8b183edf739e}"
EndProject
+Project("{d608a2b1-6ead-4383-a205-ad1ce69d9ef7}") = "ReciprocalArea", "ReciprocalArea\ReciprocalArea.nfproj", "{30fee563-a3f0-9c50-bfd1-1af707aaf3c4}"
+EndProject
Project("{d608a2b1-6ead-4383-a205-ad1ce69d9ef7}") = "ReciprocalLength", "ReciprocalLength\ReciprocalLength.nfproj", "{83d6c79a-c71a-d467-284c-28edbbd059d2}"
EndProject
Project("{d608a2b1-6ead-4383-a205-ad1ce69d9ef7}") = "RelativeHumidity", "RelativeHumidity\RelativeHumidity.nfproj", "{4ac05c74-08c5-2153-f38c-976975747b5c}"
@@ -700,6 +702,12 @@ Global
{6821b87e-65eb-bfdb-8fdc-8b183edf739e}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6821b87e-65eb-bfdb-8fdc-8b183edf739e}.Release|Any CPU.Build.0 = Release|Any CPU
{6821b87e-65eb-bfdb-8fdc-8b183edf739e}.Release|Any CPU.Deploy.0 = Release|Any CPU
+{30fee563-a3f0-9c50-bfd1-1af707aaf3c4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+{30fee563-a3f0-9c50-bfd1-1af707aaf3c4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+{30fee563-a3f0-9c50-bfd1-1af707aaf3c4}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+{30fee563-a3f0-9c50-bfd1-1af707aaf3c4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+{30fee563-a3f0-9c50-bfd1-1af707aaf3c4}.Release|Any CPU.Build.0 = Release|Any CPU
+{30fee563-a3f0-9c50-bfd1-1af707aaf3c4}.Release|Any CPU.Deploy.0 = Release|Any CPU
{83d6c79a-c71a-d467-284c-28edbbd059d2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{83d6c79a-c71a-d467-284c-28edbbd059d2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{83d6c79a-c71a-d467-284c-28edbbd059d2}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
diff --git a/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToReciprocalAreaExtensionsTest.g.cs b/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToReciprocalAreaExtensionsTest.g.cs
new file mode 100644
index 0000000000..b1cc9651f1
--- /dev/null
+++ b/UnitsNet.NumberExtensions.Tests/GeneratedCode/NumberToReciprocalAreaExtensionsTest.g.cs
@@ -0,0 +1,72 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by \generate-code.bat.
+//
+// Changes to this file will be lost when the code is regenerated.
+// The build server regenerates the code before each build and a pre-build
+// step will regenerate the code on each local build.
+//
+// See https://github.com/angularsen/UnitsNet/wiki/Adding-a-New-Unit for how to add or edit units.
+//
+// Add CustomCode\Quantities\MyQuantity.extra.cs files to add code to generated quantities.
+// Add UnitDefinitions\MyQuantity.json and run generate-code.bat to generate new units or quantities.
+//
+//
+//------------------------------------------------------------------------------
+
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+using UnitsNet.NumberExtensions.NumberToReciprocalArea;
+using Xunit;
+
+namespace UnitsNet.Tests
+{
+ public class NumberToReciprocalAreaExtensionsTests
+ {
+ [Fact]
+ public void NumberToInverseSquareCentimetersTest() =>
+ Assert.Equal(ReciprocalArea.FromInverseSquareCentimeters(2), 2.InverseSquareCentimeters());
+
+ [Fact]
+ public void NumberToInverseSquareDecimetersTest() =>
+ Assert.Equal(ReciprocalArea.FromInverseSquareDecimeters(2), 2.InverseSquareDecimeters());
+
+ [Fact]
+ public void NumberToInverseSquareFeetTest() =>
+ Assert.Equal(ReciprocalArea.FromInverseSquareFeet(2), 2.InverseSquareFeet());
+
+ [Fact]
+ public void NumberToInverseSquareInchesTest() =>
+ Assert.Equal(ReciprocalArea.FromInverseSquareInches(2), 2.InverseSquareInches());
+
+ [Fact]
+ public void NumberToInverseSquareKilometersTest() =>
+ Assert.Equal(ReciprocalArea.FromInverseSquareKilometers(2), 2.InverseSquareKilometers());
+
+ [Fact]
+ public void NumberToInverseSquareMetersTest() =>
+ Assert.Equal(ReciprocalArea.FromInverseSquareMeters(2), 2.InverseSquareMeters());
+
+ [Fact]
+ public void NumberToInverseSquareMicrometersTest() =>
+ Assert.Equal(ReciprocalArea.FromInverseSquareMicrometers(2), 2.InverseSquareMicrometers());
+
+ [Fact]
+ public void NumberToInverseSquareMilesTest() =>
+ Assert.Equal(ReciprocalArea.FromInverseSquareMiles(2), 2.InverseSquareMiles());
+
+ [Fact]
+ public void NumberToInverseSquareMillimetersTest() =>
+ Assert.Equal(ReciprocalArea.FromInverseSquareMillimeters(2), 2.InverseSquareMillimeters());
+
+ [Fact]
+ public void NumberToInverseSquareYardsTest() =>
+ Assert.Equal(ReciprocalArea.FromInverseSquareYards(2), 2.InverseSquareYards());
+
+ [Fact]
+ public void NumberToInverseUsSurveySquareFeetTest() =>
+ Assert.Equal(ReciprocalArea.FromInverseUsSurveySquareFeet(2), 2.InverseUsSurveySquareFeet());
+
+ }
+}
diff --git a/UnitsNet.NumberExtensions/GeneratedCode/NumberToReciprocalAreaExtensions.g.cs b/UnitsNet.NumberExtensions/GeneratedCode/NumberToReciprocalAreaExtensions.g.cs
new file mode 100644
index 0000000000..49dbeb9d31
--- /dev/null
+++ b/UnitsNet.NumberExtensions/GeneratedCode/NumberToReciprocalAreaExtensions.g.cs
@@ -0,0 +1,76 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by \generate-code.bat.
+//
+// Changes to this file will be lost when the code is regenerated.
+// The build server regenerates the code before each build and a pre-build
+// step will regenerate the code on each local build.
+//
+// See https://github.com/angularsen/UnitsNet/wiki/Adding-a-New-Unit for how to add or edit units.
+//
+// Add CustomCode\Quantities\MyQuantity.extra.cs files to add code to generated quantities.
+// Add UnitDefinitions\MyQuantity.json and run generate-code.bat to generate new units or quantities.
+//
+//
+//------------------------------------------------------------------------------
+
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+using System;
+
+#nullable enable
+
+namespace UnitsNet.NumberExtensions.NumberToReciprocalArea
+{
+ ///
+ /// A number to ReciprocalArea Extensions
+ ///
+ public static class NumberToReciprocalAreaExtensions
+ {
+ ///
+ public static ReciprocalArea InverseSquareCentimeters(this T value) =>
+ ReciprocalArea.FromInverseSquareCentimeters(Convert.ToDouble(value));
+
+ ///
+ public static ReciprocalArea InverseSquareDecimeters(this T value) =>
+ ReciprocalArea.FromInverseSquareDecimeters(Convert.ToDouble(value));
+
+ ///
+ public static ReciprocalArea InverseSquareFeet(this T value) =>
+ ReciprocalArea.FromInverseSquareFeet(Convert.ToDouble(value));
+
+ ///
+ public static ReciprocalArea InverseSquareInches(this T value) =>
+ ReciprocalArea.FromInverseSquareInches(Convert.ToDouble(value));
+
+ ///
+ public static ReciprocalArea InverseSquareKilometers(this T value) =>
+ ReciprocalArea.FromInverseSquareKilometers(Convert.ToDouble(value));
+
+ ///
+ public static ReciprocalArea InverseSquareMeters(this T value) =>
+ ReciprocalArea.FromInverseSquareMeters(Convert.ToDouble(value));
+
+ ///
+ public static ReciprocalArea InverseSquareMicrometers(this T value) =>
+ ReciprocalArea.FromInverseSquareMicrometers(Convert.ToDouble(value));
+
+ ///
+ public static ReciprocalArea InverseSquareMiles(this T value) =>
+ ReciprocalArea.FromInverseSquareMiles(Convert.ToDouble(value));
+
+ ///
+ public static ReciprocalArea InverseSquareMillimeters(this T value) =>
+ ReciprocalArea.FromInverseSquareMillimeters(Convert.ToDouble(value));
+
+ ///
+ public static ReciprocalArea InverseSquareYards(this T value) =>
+ ReciprocalArea.FromInverseSquareYards(Convert.ToDouble(value));
+
+ ///
+ public static ReciprocalArea InverseUsSurveySquareFeet(this T value) =>
+ ReciprocalArea.FromInverseUsSurveySquareFeet(Convert.ToDouble(value));
+
+ }
+}
diff --git a/UnitsNet.Tests/CustomCode/AreaTests.cs b/UnitsNet.Tests/CustomCode/AreaTests.cs
index c917293d45..a235ee2dbe 100644
--- a/UnitsNet.Tests/CustomCode/AreaTests.cs
+++ b/UnitsNet.Tests/CustomCode/AreaTests.cs
@@ -118,5 +118,25 @@ public void ToUnit_GivenSIUnitSystem_ReturnsSIQuantity()
Assert.Equal(0.00129032, inSI.Value);
Assert.Equal(AreaUnit.SquareMeter, inSI.Unit);
}
+
+ [Theory]
+ [InlineData(-2.0, -0.5)]
+ [InlineData(-1.0, -1.0)]
+ [InlineData(0.0, 0.0)]
+ [InlineData(1.0, 1.0)]
+ [InlineData(2.0, 0.5)]
+ public void InverseReturnsReciprocalArea(double value, double expected)
+ {
+ var area = new Area(value, AreaUnit.SquareMeter);
+ var inverseArea = area.Inverse();
+ Assert.Equal(expected, inverseArea.InverseSquareMeters);
+ }
+
+ [Fact]
+ public void AreaTimesReciprocalAreaEqualsRatio()
+ {
+ Ratio ratio = Area.FromSquareMeters(0.5) * ReciprocalArea.FromInverseSquareMeters(10);
+ Assert.Equal(5.0, ratio.Value);
+ }
}
}
diff --git a/UnitsNet.Tests/CustomCode/ElectricConductivityTests.cs b/UnitsNet.Tests/CustomCode/ElectricConductivityTests.cs
index e737605987..11a68892b4 100644
--- a/UnitsNet.Tests/CustomCode/ElectricConductivityTests.cs
+++ b/UnitsNet.Tests/CustomCode/ElectricConductivityTests.cs
@@ -45,7 +45,7 @@ public static void InverseTest( double value, double expected )
var unit = new ElectricConductivity( value, ElectricConductivityUnit.SiemensPerMeter );
var inverse = unit.Inverse();
- AssertEx.Equals( expected, inverse.OhmMeters );
+ Assert.Equal( expected, inverse.OhmMeters );
}
}
}
diff --git a/UnitsNet.Tests/CustomCode/ElectricResistivityTests.cs b/UnitsNet.Tests/CustomCode/ElectricResistivityTests.cs
index 378ec9a82d..e46e323a8e 100644
--- a/UnitsNet.Tests/CustomCode/ElectricResistivityTests.cs
+++ b/UnitsNet.Tests/CustomCode/ElectricResistivityTests.cs
@@ -69,7 +69,7 @@ public static void InverseTest( double value, double expected )
var unit = new ElectricResistivity( value, ElectricResistivityUnit.OhmMeter );
var inverse = unit.Inverse();
- AssertEx.Equals( expected, inverse.SiemensPerMeter );
+ Assert.Equal( expected, inverse.SiemensPerMeter );
}
}
}
diff --git a/UnitsNet.Tests/CustomCode/ForceTests.cs b/UnitsNet.Tests/CustomCode/ForceTests.cs
index e87ed077c5..90e4b588c2 100644
--- a/UnitsNet.Tests/CustomCode/ForceTests.cs
+++ b/UnitsNet.Tests/CustomCode/ForceTests.cs
@@ -90,5 +90,12 @@ public void SpeedTimesForceEqualsPower()
Power power = Speed.FromMetersPerSecond(10.0)*Force.FromNewtons(27.0);
Assert.Equal(power, Power.FromWatts(270));
}
+
+ [Fact]
+ public void ForceTimesReciprocalAreaEqualsPressure()
+ {
+ Pressure pressure = Force.FromNewtons(2) * ReciprocalArea.FromInverseSquareMeters(25);
+ Assert.Equal(pressure, Pressure.FromNewtonsPerSquareMeter(50));
+ }
}
}
diff --git a/UnitsNet.Tests/CustomCode/LengthTests.cs b/UnitsNet.Tests/CustomCode/LengthTests.cs
index b665632d03..cf340ecf0f 100644
--- a/UnitsNet.Tests/CustomCode/LengthTests.cs
+++ b/UnitsNet.Tests/CustomCode/LengthTests.cs
@@ -225,7 +225,7 @@ public static void InverseReturnsReciprocalLength(double value, double expected)
var length = new Length(value, Units.LengthUnit.Meter);
var inverseLength = length.Inverse();
- AssertEx.Equals(expected, inverseLength.InverseMeters);
+ Assert.Equal(expected, inverseLength.InverseMeters);
}
}
}
diff --git a/UnitsNet.Tests/CustomCode/PressureTests.cs b/UnitsNet.Tests/CustomCode/PressureTests.cs
index 2fedf52398..ef560dda04 100644
--- a/UnitsNet.Tests/CustomCode/PressureTests.cs
+++ b/UnitsNet.Tests/CustomCode/PressureTests.cs
@@ -237,5 +237,12 @@ public void Vacuum_WithVacuumPressureReference_IsEqual()
var refPressure = new ReferencePressure(Pressure.FromAtmospheres(1), PressureReference.Vacuum);
AssertEx.EqualTolerance(1, refPressure.Vacuum.Atmospheres, AtmospheresTolerance);
}
+
+ [Fact]
+ public void PressureDividedByReciprocalAreaEqualsForce()
+ {
+ Force force = Pressure.FromPascals(200) / ReciprocalArea.FromInverseSquareMeters(5);
+ Assert.Equal(force, Force.FromNewtons(40));
+ }
}
}
diff --git a/UnitsNet.Tests/CustomCode/ReciprocalAreaTests.cs b/UnitsNet.Tests/CustomCode/ReciprocalAreaTests.cs
new file mode 100644
index 0000000000..dcb1625f6e
--- /dev/null
+++ b/UnitsNet.Tests/CustomCode/ReciprocalAreaTests.cs
@@ -0,0 +1,78 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by \generate-code.bat.
+//
+// Changes to this file will be lost when the code is regenerated.
+// The build server regenerates the code before each build and a pre-build
+// step will regenerate the code on each local build.
+//
+// See https://github.com/angularsen/UnitsNet/wiki/Adding-a-New-Unit for how to add or edit units.
+//
+// Add CustomCode\Quantities\MyQuantity.extra.cs files to add code to generated quantities.
+// Add UnitDefinitions\MyQuantity.json and run generate-code.bat to generate new units or quantities.
+//
+//
+//------------------------------------------------------------------------------
+
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+using UnitsNet.Units;
+using Xunit;
+
+namespace UnitsNet.Tests.CustomCode
+{
+ public class ReciprocalAreaTests : ReciprocalAreaTestsBase
+ {
+ protected override bool SupportsSIUnitSystem => false;
+
+ protected override double InverseSquareMetersInOneInverseSquareMeter => 1;
+ protected override double InverseSquareKilometersInOneInverseSquareMeter => 1E6;
+ protected override double InverseSquareDecimetersInOneInverseSquareMeter => 1E-2;
+ protected override double InverseSquareCentimetersInOneInverseSquareMeter => 1E-4;
+ protected override double InverseSquareMillimetersInOneInverseSquareMeter => 1E-6;
+ protected override double InverseSquareMicrometersInOneInverseSquareMeter => 1E-12;
+
+
+ protected override double InverseSquareMilesInOneInverseSquareMeter => 2.59E6;
+ protected override double InverseSquareYardsInOneInverseSquareMeter => 0.836127;
+ protected override double InverseSquareFeetInOneInverseSquareMeter => 0.092903;
+ protected override double InverseUsSurveySquareFeetInOneInverseSquareMeter => 0.09290341161;
+ protected override double InverseSquareInchesInOneInverseSquareMeter => 0.00064516;
+
+ [Theory]
+ [InlineData(-2.0, -0.5)]
+ [InlineData(-1.0, -1.0)]
+ [InlineData(0.0, 0.0)]
+ [InlineData(1.0, 1.0)]
+ [InlineData(2.0, 0.5)]
+ public void InverseReturnsArea(double value, double expected)
+ {
+ var inverseArea = new ReciprocalArea(value, ReciprocalAreaUnit.InverseSquareMeter);
+ var area = inverseArea.Inverse();
+
+ Assert.Equal(expected, area.SquareMeters);
+ }
+
+ [Fact]
+ public void ReciprocalAreaTimesForceEqualsPressure()
+ {
+ Pressure pressure = ReciprocalArea.FromInverseSquareMeters(25) * Force.FromNewtons(2);
+ Assert.Equal(pressure, Pressure.FromNewtonsPerSquareMeter(50));
+ }
+
+ [Fact]
+ public void ReciprocalAreaTimesAreaEqualsRatio()
+ {
+ Ratio ratio = ReciprocalArea.FromInverseSquareMeters(10) * Area.FromSquareMeters(0.5);
+ Assert.Equal(5.0, ratio.Value);
+ }
+
+ [Fact]
+ public void ReciprocalAreaDividedByReciprocalLengthEqualsReciprocalLength()
+ {
+ ReciprocalLength reciprocalLength = ReciprocalArea.FromInverseSquareMeters(10) / ReciprocalLength.FromInverseMeters(0.5);
+ Assert.Equal(reciprocalLength, ReciprocalLength.FromInverseMeters(20));
+ }
+ }
+}
diff --git a/UnitsNet.Tests/CustomCode/ReciprocalLengthTests.cs b/UnitsNet.Tests/CustomCode/ReciprocalLengthTests.cs
index 03ac14b0a8..5b217bb961 100644
--- a/UnitsNet.Tests/CustomCode/ReciprocalLengthTests.cs
+++ b/UnitsNet.Tests/CustomCode/ReciprocalLengthTests.cs
@@ -51,7 +51,7 @@ public static void InverseReturnsLength(double value, double expected)
var inverseLength = new ReciprocalLength(value, ReciprocalLengthUnit.InverseMeter);
var length = inverseLength.Inverse();
- AssertEx.Equals(expected, length.Meters);
+ Assert.Equal(expected, length.Meters);
}
[Fact]
@@ -95,5 +95,19 @@ public static void ReciprocalLengthTimesForceEqualsForcePerLength()
ForcePerLength forcePerLength = ReciprocalLength.FromInverseMeters(5) * Force.FromNewtons(10);
Assert.Equal(forcePerLength, ForcePerLength.FromNewtonsPerMeter(50));
}
+
+ [Fact]
+ public void ReciprocalLengthTimesReciprocalLengthEqualsReciprocalArea()
+ {
+ ReciprocalArea reciprocalArea = ReciprocalLength.FromInverseMeters(10) * ReciprocalLength.FromInverseMeters(20);
+ Assert.Equal(reciprocalArea, ReciprocalArea.FromInverseSquareMeters(200));
+ }
+
+ [Fact]
+ public void ReciprocalLengthDividedByReciprocalAreaEqualsLength()
+ {
+ Length length = ReciprocalLength.FromInverseMeters(5) / ReciprocalArea.FromInverseSquareMeters(10);
+ Assert.Equal(length, Length.FromMeters(0.5));
+ }
}
}
diff --git a/UnitsNet.Tests/GeneratedCode/IQuantityTests.g.cs b/UnitsNet.Tests/GeneratedCode/IQuantityTests.g.cs
index 26134289f8..a135be39b0 100644
--- a/UnitsNet.Tests/GeneratedCode/IQuantityTests.g.cs
+++ b/UnitsNet.Tests/GeneratedCode/IQuantityTests.g.cs
@@ -113,6 +113,7 @@ void Assertion(int expectedValue, Enum expectedUnit, IQuantity quantity)
Assertion(3, RatioChangeRateUnit.PercentPerSecond, Quantity.From(3, RatioChangeRateUnit.PercentPerSecond));
Assertion(3, ReactiveEnergyUnit.VoltampereReactiveHour, Quantity.From(3, ReactiveEnergyUnit.VoltampereReactiveHour));
Assertion(3, ReactivePowerUnit.VoltampereReactive, Quantity.From(3, ReactivePowerUnit.VoltampereReactive));
+ Assertion(3, ReciprocalAreaUnit.InverseUsSurveySquareFoot, Quantity.From(3, ReciprocalAreaUnit.InverseUsSurveySquareFoot));
Assertion(3, ReciprocalLengthUnit.InverseYard, Quantity.From(3, ReciprocalLengthUnit.InverseYard));
Assertion(3, RelativeHumidityUnit.Percent, Quantity.From(3, RelativeHumidityUnit.Percent));
Assertion(3, RotationalAccelerationUnit.RevolutionPerSecondSquared, Quantity.From(3, RotationalAccelerationUnit.RevolutionPerSecondSquared));
@@ -229,6 +230,7 @@ public void QuantityInfo_IsSameAsStaticInfoProperty()
Assertion(RatioChangeRate.Info, RatioChangeRate.Zero);
Assertion(ReactiveEnergy.Info, ReactiveEnergy.Zero);
Assertion(ReactivePower.Info, ReactivePower.Zero);
+ Assertion(ReciprocalArea.Info, ReciprocalArea.Zero);
Assertion(ReciprocalLength.Info, ReciprocalLength.Zero);
Assertion(RelativeHumidity.Info, RelativeHumidity.Zero);
Assertion(RotationalAcceleration.Info, RotationalAcceleration.Zero);
@@ -345,6 +347,7 @@ public void Type_EqualsStaticQuantityTypeProperty()
Assertion(RatioChangeRate.QuantityType, RatioChangeRate.Zero);
Assertion(ReactiveEnergy.QuantityType, ReactiveEnergy.Zero);
Assertion(ReactivePower.QuantityType, ReactivePower.Zero);
+ Assertion(ReciprocalArea.QuantityType, ReciprocalArea.Zero);
Assertion(ReciprocalLength.QuantityType, ReciprocalLength.Zero);
Assertion(RelativeHumidity.QuantityType, RelativeHumidity.Zero);
Assertion(RotationalAcceleration.QuantityType, RotationalAcceleration.Zero);
@@ -461,6 +464,7 @@ public void Dimensions_IsSameAsStaticBaseDimensions()
Assertion(RatioChangeRate.BaseDimensions, RatioChangeRate.Zero);
Assertion(ReactiveEnergy.BaseDimensions, ReactiveEnergy.Zero);
Assertion(ReactivePower.BaseDimensions, ReactivePower.Zero);
+ Assertion(ReciprocalArea.BaseDimensions, ReciprocalArea.Zero);
Assertion(ReciprocalLength.BaseDimensions, ReciprocalLength.Zero);
Assertion(RelativeHumidity.BaseDimensions, RelativeHumidity.Zero);
Assertion(RotationalAcceleration.BaseDimensions, RotationalAcceleration.Zero);
diff --git a/UnitsNet.Tests/GeneratedCode/TestsBase/ReciprocalAreaTestsBase.g.cs b/UnitsNet.Tests/GeneratedCode/TestsBase/ReciprocalAreaTestsBase.g.cs
new file mode 100644
index 0000000000..b64695166c
--- /dev/null
+++ b/UnitsNet.Tests/GeneratedCode/TestsBase/ReciprocalAreaTestsBase.g.cs
@@ -0,0 +1,728 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by \generate-code.bat.
+//
+// Changes to this file will be lost when the code is regenerated.
+// The build server regenerates the code before each build and a pre-build
+// step will regenerate the code on each local build.
+//
+// See https://github.com/angularsen/UnitsNet/wiki/Adding-a-New-Unit for how to add or edit units.
+//
+// Add CustomCode\Quantities\MyQuantity.extra.cs files to add code to generated quantities.
+// Add UnitDefinitions\MyQuantity.json and run generate-code.bat to generate new units or quantities.
+//
+//
+//------------------------------------------------------------------------------
+
+// Licensed under MIT No Attribution, see LICENSE file at the root.
+// Copyright 2013 Andreas Gullberg Larsen (andreas.larsen84@gmail.com). Maintained at https://github.com/angularsen/UnitsNet.
+
+using System;
+using System.Globalization;
+using System.Linq;
+using System.Threading;
+using UnitsNet.Tests.TestsBase;
+using UnitsNet.Units;
+using Xunit;
+
+// Disable build warning CS1718: Comparison made to same variable; did you mean to compare something else?
+#pragma warning disable 1718
+
+// ReSharper disable once CheckNamespace
+namespace UnitsNet.Tests
+{
+ ///
+ /// Test of ReciprocalArea.
+ ///
+// ReSharper disable once PartialTypeWithSinglePart
+ public abstract partial class ReciprocalAreaTestsBase : QuantityTestsBase
+ {
+ protected abstract double InverseSquareCentimetersInOneInverseSquareMeter { get; }
+ protected abstract double InverseSquareDecimetersInOneInverseSquareMeter { get; }
+ protected abstract double InverseSquareFeetInOneInverseSquareMeter { get; }
+ protected abstract double InverseSquareInchesInOneInverseSquareMeter { get; }
+ protected abstract double InverseSquareKilometersInOneInverseSquareMeter { get; }
+ protected abstract double InverseSquareMetersInOneInverseSquareMeter { get; }
+ protected abstract double InverseSquareMicrometersInOneInverseSquareMeter { get; }
+ protected abstract double InverseSquareMilesInOneInverseSquareMeter { get; }
+ protected abstract double InverseSquareMillimetersInOneInverseSquareMeter { get; }
+ protected abstract double InverseSquareYardsInOneInverseSquareMeter { get; }
+ protected abstract double InverseUsSurveySquareFeetInOneInverseSquareMeter { get; }
+
+// ReSharper disable VirtualMemberNeverOverriden.Global
+ protected virtual double InverseSquareCentimetersTolerance { get { return 1e-5; } }
+ protected virtual double InverseSquareDecimetersTolerance { get { return 1e-5; } }
+ protected virtual double InverseSquareFeetTolerance { get { return 1e-5; } }
+ protected virtual double InverseSquareInchesTolerance { get { return 1e-5; } }
+ protected virtual double InverseSquareKilometersTolerance { get { return 1e-5; } }
+ protected virtual double InverseSquareMetersTolerance { get { return 1e-5; } }
+ protected virtual double InverseSquareMicrometersTolerance { get { return 1e-5; } }
+ protected virtual double InverseSquareMilesTolerance { get { return 1e-5; } }
+ protected virtual double InverseSquareMillimetersTolerance { get { return 1e-5; } }
+ protected virtual double InverseSquareYardsTolerance { get { return 1e-5; } }
+ protected virtual double InverseUsSurveySquareFeetTolerance { get { return 1e-5; } }
+// ReSharper restore VirtualMemberNeverOverriden.Global
+
+ [Fact]
+ public void Ctor_WithUndefinedUnit_ThrowsArgumentException()
+ {
+ Assert.Throws(() => new ReciprocalArea((double)0.0, ReciprocalAreaUnit.Undefined));
+ }
+
+ [Fact]
+ public void DefaultCtor_ReturnsQuantityWithZeroValueAndBaseUnit()
+ {
+ var quantity = new ReciprocalArea();
+ Assert.Equal(0, quantity.Value);
+ Assert.Equal(ReciprocalAreaUnit.InverseSquareMeter, quantity.Unit);
+ }
+
+
+ [Fact]
+ public void Ctor_WithInfinityValue_ThrowsArgumentException()
+ {
+ Assert.Throws(() => new ReciprocalArea(double.PositiveInfinity, ReciprocalAreaUnit.InverseSquareMeter));
+ Assert.Throws(() => new ReciprocalArea(double.NegativeInfinity, ReciprocalAreaUnit.InverseSquareMeter));
+ }
+
+ [Fact]
+ public void Ctor_WithNaNValue_ThrowsArgumentException()
+ {
+ Assert.Throws(() => new ReciprocalArea(double.NaN, ReciprocalAreaUnit.InverseSquareMeter));
+ }
+
+ [Fact]
+ public void Ctor_NullAsUnitSystem_ThrowsArgumentNullException()
+ {
+ Assert.Throws(() => new ReciprocalArea(value: 1, unitSystem: null));
+ }
+
+ [Fact]
+ public void Ctor_SIUnitSystem_ThrowsArgumentExceptionIfNotSupported()
+ {
+ Func