コード例 #1
0
ファイル: UnitsOfMeasureTests.cs プロジェクト: parchjs/Dynamo
        public void Extensions()
        {
            var units = new UnitsManager();

            const double x = 5.0;

            var length = x.ToLength(units);
            Assert.AreEqual("5.000m", length.ToString(DynamoLengthUnit.Meter));

            var area = x.ToArea(units);
            Assert.AreEqual("5.000m²", area.ToString(DynamoAreaUnit.SquareMeter));

            var volume = x.ToVolume(units);
            Assert.AreEqual("5.000m³", volume.ToString(DynamoVolumeUnit.CubicMeter));
        }
コード例 #2
0
ファイル: UnitsOfMeasureTests.cs プロジェクト: parchjs/Dynamo
        public void CanMapOverUnits()
        {
            var units = new UnitsManager();

            var length = FSchemeInterop.Utils.ToFSharpList(Enumerable.Range(1, 5).Select(x => new Length(x,units)));
            var area = FSchemeInterop.Utils.ToFSharpList(Enumerable.Range(1, 5).Select(x => new Area(x,units)));
            var volume = FSchemeInterop.Utils.ToFSharpList(Enumerable.Range(1, 5).Select(x => new Volume(x,units)));

            RunExampleTest(
                Path.Combine(GetTestDirectory(), @"core\units\map-numbers-to-units.dyn"),
                new[]
                {
                    new KeyValuePair<Guid, object>(Guid.Parse("8d46007e-e6d3-4848-8213-7c2ac3c5624d"), length),
                    new KeyValuePair<Guid, object>(Guid.Parse("b22c8a19-04dc-473e-a3b8-d0071175ce53"), area),
                    new KeyValuePair<Guid, object>(Guid.Parse("92accc0a-4380-4c60-92e7-7f735cecbb6b"), volume),
                    new KeyValuePair<Guid, object>(Guid.Parse("97fdd4df-e9dd-4f7f-9494-b2adabfdbdeb"), length),
                    new KeyValuePair<Guid, object>(Guid.Parse("4e830faa-d358-4086-ba4c-9b7e70f96681"), area),
                    new KeyValuePair<Guid, object>(Guid.Parse("e6ae471f-9cd8-4cbb-bb83-ecdf1785c35f"), volume)
                });
        }
コード例 #3
0
ファイル: DynamoRevit.cs プロジェクト: parchjs/Dynamo
        public Result Execute(ExternalCommandData revit, ref string message, ElementSet elements)
        {
            AppDomain.CurrentDomain.AssemblyResolve += Dynamo.Utilities.AssemblyHelper.CurrentDomain_AssemblyResolve;
            AppDomain.CurrentDomain.AssemblyResolve += DynamoRaaS.AssemblyHelper.ResolveAssemblies;

            //Add an assembly load step for the System.Windows.Interactivity assembly
            //Revit owns a version of this as well. Adding our step here prevents a duplicative
            //load of the dll at a later time.
            var assLoc = Assembly.GetExecutingAssembly().Location;
            var interactivityPath = Path.Combine(Path.GetDirectoryName(assLoc), "System.Windows.Interactivity.dll");
            var interactivityAss = Assembly.LoadFrom(interactivityPath);

            //When a user double-clicks the Dynamo icon, we need to make
            //sure that we don't create another instance of Dynamo.
            if (isRunning)
            {
                Debug.WriteLine("Dynamo is already running.");
                if (dynamoView != null)
                {
                    dynamoView.Focus();
                }
                return Result.Succeeded;
            }

            isRunning = true;

            try
            {
                m_revit = revit.Application;
                m_doc = m_revit.ActiveUIDocument;

                #region default level

                Level defaultLevel = null;
                var fecLevel = new FilteredElementCollector(m_doc.Document);
                fecLevel.OfClass(typeof (Level));
                defaultLevel = fecLevel.ToElements()[0] as Level;

                #endregion

                dynRevitSettings.Revit = m_revit;
                dynRevitSettings.Doc = m_doc;
                dynRevitSettings.DefaultLevel = defaultLevel;

                IdlePromise.ExecuteOnIdle(delegate
                {
                    //get window handle
                    IntPtr mwHandle = Process.GetCurrentProcess().MainWindowHandle;

                    Regex r = new Regex(@"\b(Autodesk |Structure |MEP |Architecture )\b");
                    string context = r.Replace(m_revit.Application.VersionName, "");

                    //they changed the application version name conventions for vasari
                    //it no longer has a version year so we can't compare it to other versions
                    //TODO:come up with a more stable way to test for Vasari beta 3
                    if (context == "Vasari")
                        context = "Vasari 2014";

                    var units = new UnitsManager
                    {
                        HostApplicationInternalAreaUnit = DynamoAreaUnit.SquareFoot,
                        HostApplicationInternalLengthUnit = DynamoLengthUnit.DecimalFoot,
                        HostApplicationInternalVolumeUnit = DynamoVolumeUnit.CubicFoot
                    };

                    dynamoController = new DynamoController_Revit(DynamoRevitApp.env, DynamoRevitApp.Updater, typeof(DynamoRevitViewModel), context, units);

                    dynamoView = new DynamoView { DataContext = dynamoController.DynamoViewModel };
                    dynamoController.UIDispatcher = dynamoView.Dispatcher;

                    //set window handle and show dynamo
                    new WindowInteropHelper(dynamoView).Owner = mwHandle;

                    handledCrash = false;

                    dynamoView.WindowStartupLocation = WindowStartupLocation.Manual;

                    Rectangle bounds = Screen.PrimaryScreen.Bounds;
                    dynamoView.Left = dynamoViewX ?? bounds.X;
                    dynamoView.Top = dynamoViewY ?? bounds.Y;
                    dynamoView.Width = dynamoViewWidth ?? 1000.0;
                    dynamoView.Height = dynamoViewHeight ?? 800.0;

                    dynamoView.Show();

                    dynamoView.Dispatcher.UnhandledException -= DispatcherOnUnhandledException;
                    dynamoView.Dispatcher.UnhandledException += DispatcherOnUnhandledException;
                    dynamoView.Closing += dynamoView_Closing;
                    dynamoView.Closed += dynamoView_Closed;

                    //revit.Application.ViewActivated += new EventHandler<Autodesk.Revit.UI.Events.ViewActivatedEventArgs>(Application_ViewActivated);
                    revit.Application.ViewActivating += Application_ViewActivating;
                });
            }
            catch (Exception ex)
            {
                isRunning = false;
                MessageBox.Show(ex.ToString());

                DynamoLogger.Instance.Log(ex.Message);
                DynamoLogger.Instance.Log(ex.StackTrace);
                DynamoLogger.Instance.Log("Dynamo log ended " + DateTime.Now.ToString());

                return Result.Failed;
            }

            return Result.Succeeded;
        }
コード例 #4
0
ファイル: DynamoTestFramework.cs プロジェクト: parchjs/Dynamo
        private void StartDynamo()
        {
            Level defaultLevel = null;
            var fecLevel = new FilteredElementCollector(RevitData.Document.Document);
            fecLevel.OfClass(typeof(Level));

            dynRevitSettings.Revit = RevitData.Application;
            dynRevitSettings.Doc = RevitData.Document;
            dynRevitSettings.DefaultLevel = defaultLevel;

            var units = new UnitsManager
            {
                HostApplicationInternalAreaUnit = DynamoAreaUnit.SquareFoot,
                HostApplicationInternalLengthUnit = DynamoLengthUnit.DecimalFoot,
                HostApplicationInternalVolumeUnit = DynamoVolumeUnit.CubicFoot
            };

            //create dynamo
            var r = new Regex(@"\b(Autodesk |Structure |MEP |Architecture )\b");
            string context = r.Replace(RevitData.Application.Application.VersionName, "");

            var dynamoController = new DynamoController_Revit(DynamoRevitApp.env, DynamoRevitApp.Updater, typeof(DynamoRevitViewModel), context, units)
                {
                    Testing = true
                };
        }
コード例 #5
0
ファイル: DynamoRevitTests.cs プロジェクト: parchjs/Dynamo
        private void StartDynamo()
        {
            try
            {
                var units = new UnitsManager
                {
                    HostApplicationInternalAreaUnit = DynamoAreaUnit.SquareFoot,
                    HostApplicationInternalLengthUnit = DynamoLengthUnit.DecimalFoot,
                    HostApplicationInternalVolumeUnit = DynamoVolumeUnit.CubicFoot
                };

                //create a new instance of the ViewModel
                Controller = new DynamoController(new ExecutionEnvironment(), typeof (DynamoViewModel), Context.NONE, new UpdateManager.UpdateManager(), units)
                    {
                        Testing = true
                    };
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
        }
コード例 #6
0
ファイル: UnitsOfMeasureTests.cs プロジェクト: parchjs/Dynamo
        public void UnitsNegatives()
        {
            var units = new UnitsManager();

            var length = new Length(-2.0, units);
            var area = new Area(-2.0, units);
            var volume = new Volume(-2.0, units);

            Assert.AreEqual(-2.0, length.Value);
            Assert.AreEqual(-2.0, area.Value);
            Assert.AreEqual(-2.0, volume.Value);

            Assert.AreEqual(new Length(-2.0, units), new Length(10.0, units) - new Length(12.0, units));
            Assert.AreEqual(new Area(-2.0, units), new Area(10.0, units) - new Area(12.0,units));
            Assert.AreEqual(new Volume(-2.0, units), new Volume(10.0, units) - new Volume(12.0, units));
        }
コード例 #7
0
ファイル: UnitsOfMeasureTests.cs プロジェクト: parchjs/Dynamo
        public void UnitsMath()
        {
            var units = new UnitsManager();

            var length = new Units.Length(2.0, units);
            var area = new Units.Area(2.0, units);
            var volume = new Units.Volume(2.0, units);

            //addition
            var length_add = length + length;
            Assert.AreEqual(4, length_add.Value);
            var area_add = area + area;
            Assert.AreEqual(4, area_add.Value);
            var volume_add = volume + volume;
            Assert.AreEqual(4, volume_add.Value);

            Assert.Throws<UnitsException>(() => { var test = length + area; });
            Assert.Throws<UnitsException>(() => { var test = area + volume; });
            Assert.Throws<UnitsException>(() => { var test = length + volume; });

            //subtraction
            var length_sub = length - length;
            Assert.AreEqual(0, length_sub.Value);
            var area_sub = area - area;
            Assert.AreEqual(0, area_sub.Value);
            var volume_sub = volume - volume;
            Assert.AreEqual(0, volume_sub.Value);

            Assert.Throws<UnitsException>(() => { var test = length - area; });
            Assert.Throws<UnitsException>(() => { var test = area - volume; });
            Assert.Throws<UnitsException>(() => { var test = length - volume; });
            Assert.Throws<UnitsException>(() => { var test = area - length; });
            Assert.Throws<UnitsException>(() => { var test = volume - area; });
            Assert.Throws<UnitsException>(() => { var test = volume - length; });

            //multiplication
            Assert.AreEqual(4, (length * length).Value);
            Assert.IsInstanceOf<Area>(length * length);
            Assert.AreEqual(4, (length * area).Value);
            Assert.IsInstanceOf<Volume>(length * area);
            Assert.Throws<UnitsException>(() => { var test = area * area; });
            Assert.Throws<UnitsException>(() => { var test = volume * area; });
            Assert.Throws<UnitsException>(() => { var test = length * volume; });
            Assert.Throws<UnitsException>(() => { var test = volume * volume; });

            //division
            Assert.AreEqual(1, length / length);
            Assert.AreEqual(1, area / area);
            Assert.AreEqual(1, volume / volume);
            Assert.Throws<UnitsException>(() => { var test = length / area; });
            Assert.Throws<UnitsException>(() => { var test = area / volume; });
            Assert.Throws<UnitsException>(() => { var test = length / volume; });

            //modulo
            var length_mod = length%length;
            Assert.AreEqual(0, length_mod.Value);
            var area_mode = area%area;
            Assert.AreEqual(0, area_mode.Value);
            var volume_mod = volume%volume;
            Assert.AreEqual(0, volume_mod.Value);
            Assert.Throws<UnitsException>(() => { var test = length % area; });
            Assert.Throws<UnitsException>(() => { var test = area % volume; });
            Assert.Throws<UnitsException>(() => { var test = length % volume; });
            Assert.Throws<UnitsException>(() => { var test = area % length; });
            Assert.Throws<UnitsException>(() => { var test = volume % area; });
            Assert.Throws<UnitsException>(() => { var test = volume % length; });

            //ensure that when a formula is unit + double it returns a unit
            //and when it is double + unit, it returns a double

            Assert.AreEqual(new Length(length.Value + 2.0, units), length + 2.0);
            Assert.AreEqual(4.0, 2.0 + length);

            Assert.AreEqual(new Area(area.Value + 2.0, units), area + 2.0);
            Assert.AreEqual(4.0, 2.0 + area);

            Assert.AreEqual(new Volume(volume.Value + 2.0, units), volume + 2.0);
            Assert.AreEqual(4.0, 2.0 + volume);
        }
コード例 #8
0
ファイル: UnitsOfMeasureTests.cs プロジェクト: parchjs/Dynamo
        public void UiRounding()
        {
            var units = new UnitsManager {LengthUnit = DynamoLengthUnit.FractionalFoot};

            var length = Units.Length.FromFeet(1.5,units);
            Assert.AreEqual("2' 0\"", ((Units.Length)length.Round()).ToString(DynamoLengthUnit.FractionalFoot));
            Assert.AreEqual("2' 0\"", ((Units.Length)length.Ceiling()).ToString(DynamoLengthUnit.FractionalFoot));
            Assert.AreEqual("1' 0\"", ((Units.Length)length.Floor()).ToString(DynamoLengthUnit.FractionalFoot));

            length = Units.Length.FromFeet(1.2,units);
            Assert.AreEqual("1' 0\"", ((Units.Length)length.Round()).ToString(DynamoLengthUnit.FractionalFoot));
            Assert.AreEqual("2' 0\"", ((Units.Length)length.Ceiling()).ToString(DynamoLengthUnit.FractionalFoot));
            Assert.AreEqual("1' 0\"", ((Units.Length)length.Floor()).ToString(DynamoLengthUnit.FractionalFoot));

            length = Units.Length.FromFeet(-1.5,units);
            Assert.AreEqual("-2' 0\"", ((Units.Length)length.Round()).ToString(DynamoLengthUnit.FractionalFoot));
            Assert.AreEqual("-1' 0\"", ((Units.Length)length.Ceiling()).ToString(DynamoLengthUnit.FractionalFoot));
            Assert.AreEqual("-2' 0\"", ((Units.Length)length.Floor()).ToString(DynamoLengthUnit.FractionalFoot));

            length = Units.Length.FromFeet(-1.2,units);
            Assert.AreEqual("-1' 0\"", ((Units.Length)length.Round()).ToString(DynamoLengthUnit.FractionalFoot));
            Assert.AreEqual("-1' 0\"", ((Units.Length)length.Ceiling()).ToString(DynamoLengthUnit.FractionalFoot));
            Assert.AreEqual("-2' 0\"", ((Units.Length)length.Floor()).ToString(DynamoLengthUnit.FractionalFoot));

            //this fails as explained here:
            //http://msdn.microsoft.com/en-us/library/wyk4d9cy(v=vs.110).aspx
            //length = Units.Length.FromFeet(.5);
            //Assert.AreEqual("1' 0\"", ((Units.Length)length.Round()).ToString(DynamoLengthUnit.FractionalFoot));
        }
コード例 #9
0
ファイル: UnitsOfMeasureTests.cs プロジェクト: parchjs/Dynamo
        public void ToFractonialInchRepresentation()
        {
            var units = new UnitsManager();

            var length = new Dynamo.Units.Length(0.03175, units); //1.25"
            Assert.AreEqual("1 1/4\"", length.ToString(DynamoLengthUnit.FractionalInch));

            length.Value = -0.03175;
            Assert.AreEqual("-1 1/4\"", length.ToString(DynamoLengthUnit.FractionalInch));

            //test just the fractional case
            length.Value = 0.00635; //1/4"
            Assert.AreEqual("1/4\"", length.ToString(DynamoLengthUnit.FractionalInch));

            length.Value = -0.00635; //-1/4"
            Assert.AreEqual("-1/4\"", length.ToString(DynamoLengthUnit.FractionalInch));

            //test just the whole case
            length.Value = 0.0254; //1"
            Assert.AreEqual("1\"", length.ToString(DynamoLengthUnit.FractionalInch));

            length.Value = -0.0254;
            Assert.AreEqual("-1\"", length.ToString(DynamoLengthUnit.FractionalInch));

            //test some edge cases
            length.Value = 0.0;
            Assert.AreEqual("0\"", length.ToString(DynamoLengthUnit.FractionalInch));

            length.Value = 0.000396875; //1/64"
            Assert.AreEqual("1/64\"", length.ToString(DynamoLengthUnit.FractionalInch));

            length.Value = 0.025146; //.99"
            Assert.AreEqual("1\"", length.ToString(DynamoLengthUnit.FractionalInch));
        }
コード例 #10
0
ファイル: UnitsOfMeasureTests.cs プロジェクト: parchjs/Dynamo
        public void ToFractionalFootRepresentations()
        {
            var units = new UnitsManager();

            //test just the fractional case
            var length = new Units.Length(0.0762, units); //.25"
            Assert.AreEqual("3\"", length.ToString(DynamoLengthUnit.FractionalFoot));

            length.Value = -0.0762;
            Assert.AreEqual("-3\"", length.ToString(DynamoLengthUnit.FractionalFoot));

            length.Value = 0.3048; //1ft.
            Assert.AreEqual("1' 0\"", length.ToString(DynamoLengthUnit.FractionalFoot));

            length.Value = -0.3048;
            Assert.AreEqual("-1' 0\"", length.ToString(DynamoLengthUnit.FractionalFoot));

            //test some edge cases
            length.Value = 0.0;
            Assert.AreEqual("0' 0\"", length.ToString(DynamoLengthUnit.FractionalFoot));

            length.Value = 0.003175; //1/8"
            Assert.AreEqual("1/8\"", length.ToString(DynamoLengthUnit.FractionalFoot));

            length.Value = 0.301752; //.99ft
            Assert.AreEqual("11 29/32\"", length.ToString(DynamoLengthUnit.FractionalFoot));

            length.Value = 0.3044952; //.999ft
            Assert.AreEqual("1'", length.ToString(DynamoLengthUnit.FractionalFoot));

            length.Value = 0.35560000000142239; //1'2"
            Assert.AreEqual("1' 2\"", length.ToString(DynamoLengthUnit.FractionalFoot));

            length.Value = -0.35560000000142239; //-1'2"
            Assert.AreEqual("-1' 2\"", length.ToString(DynamoLengthUnit.FractionalFoot));
        }
コード例 #11
0
ファイル: UnitsOfMeasureTests.cs プロジェクト: parchjs/Dynamo
        public void Sorting()
        {
            var units = new UnitsManager();

            //tests of units IComparability
            var l1 = new Length(-13.0,units);
            var l2 = new Length(27.0,units);
            var l3 = new Length(0.0, units);
            var l4 = new Length(.0000001,units);

            var lengths = new List<Length> {l4, l3, l1, l2};
            lengths.Sort();

            Assert.AreEqual(l1.Value, lengths[0].Value);
            Assert.AreEqual(l2.Value, lengths[3].Value);
            Assert.AreEqual(l3.Value, lengths[1].Value);
            Assert.AreEqual(l4.Value, lengths[2].Value);

            var a2 = new Area(27.0,units);
            var a3 = new Area(0.0,units);
            var a4 = new Area(.0000001,units);

            var areas = new List<Area> {a4, a3, a2};
            areas.Sort();

            Assert.AreEqual(a2.Value, areas[2].Value);
            Assert.AreEqual(a3.Value, areas[0].Value);
            Assert.AreEqual(a4.Value, areas[1].Value);

            var v2 = new Volume(27.0,units);
            var v3 = new Volume(0.0,units);
            var v4 = new Volume(.0000001,units);

            var volumes = new List<Volume> {v4, v3, v2};
            volumes.Sort();

            Assert.AreEqual(v2.Value, volumes[2].Value);
            Assert.AreEqual(v3.Value, volumes[0].Value);
            Assert.AreEqual(v4.Value, volumes[1].Value);

            //test that we're not comparing units
            //that can't be compared
            var mixedList = new List<SIUnit> {l2, a4, v4};
            Assert.Throws<InvalidOperationException>(mixedList.Sort);
        }
コード例 #12
0
ファイル: UnitsOfMeasureTests.cs プロジェクト: parchjs/Dynamo
        public void SetVolumeFromString()
        {
            var units = new UnitsManager();

            var volume = new Volume(1.0, units);

            volume.SetValueFromString("1 mm³");
            Assert.AreEqual(1.0e-9, volume.Value, 0.001);

            volume.SetValueFromString("1mm³");
            Assert.AreEqual(1.0e-9, volume.Value, 0.001);

            volume.SetValueFromString("1 mm3");
            Assert.AreEqual(1.0e-9, volume.Value, 0.001);

            volume.SetValueFromString("1 cumm");
            Assert.AreEqual(1.0e-9, volume.Value, 0.001);

            volume.SetValueFromString("1 cm³");
            Assert.AreEqual(1.0e-6, volume.Value, 0.001);

            volume.SetValueFromString("1cm³");
            Assert.AreEqual(1.0e-6, volume.Value, 0.001);

            volume.SetValueFromString("1 cm3");
            Assert.AreEqual(1.0e-6, volume.Value, 0.001);

            volume.SetValueFromString("1 cucm");
            Assert.AreEqual(1.0e-6, volume.Value, 0.001);

            volume.SetValueFromString("1 m³");
            Assert.AreEqual(1, volume.Value, 0.001);

            volume.SetValueFromString("1m³");
            Assert.AreEqual(1, volume.Value, 0.001);

            volume.SetValueFromString("1 m3");
            Assert.AreEqual(1, volume.Value, 0.001);

            volume.SetValueFromString("1 cum");
            Assert.AreEqual(1, volume.Value, 0.001);

            volume.SetValueFromString("1 in³");
            Assert.AreEqual(1.6387e-5, volume.Value, 0.001);

            volume.SetValueFromString("1in³");
            Assert.AreEqual(1.6387e-5, volume.Value, 0.001);

            volume.SetValueFromString("1 in3");
            Assert.AreEqual(1.6387e-5, volume.Value, 0.001);

            volume.SetValueFromString("1 cuin");
            Assert.AreEqual(1.6387e-5, volume.Value, 0.001);

            volume.SetValueFromString("1 ft³");
            Assert.AreEqual(0.0283168, volume.Value, 0.001);

            volume.SetValueFromString("1ft³");
            Assert.AreEqual(0.0283168, volume.Value, 0.001);

            volume.SetValueFromString("1 ft3");
            Assert.AreEqual(0.0283168, volume.Value, 0.001);

            volume.SetValueFromString("1 cuft");
            Assert.AreEqual(0.0283168, volume.Value, 0.001);
        }
コード例 #13
0
ファイル: UnitsOfMeasureTests.cs プロジェクト: parchjs/Dynamo
        public void SetLengthsFromString()
        {
            var units = new UnitsManager();

            //feet tests
            var length = new Dynamo.Units.Length(1.0,units);

            length.SetValueFromString("1' 3\"");
            Assert.AreEqual(0.381, length.Value, 0.001);

            length.SetValueFromString("1' 2\"");
            Assert.AreEqual(0.3556, length.Value, 0.001);

            length.SetValueFromString("30.48 cm");
            Assert.AreEqual(0.3048, length.Value, 0.001);

            length.SetValueFromString("1 ft");
            Assert.AreEqual(0.3048, length.Value, 0.001);

            length.SetValueFromString("12 in");
            Assert.AreEqual(0.3048, length.Value, 0.001);

            length.SetValueFromString("1' 0\"");
            Assert.AreEqual(0.3048, length.Value, 0.001);

            length.SetValueFromString("0.3 m");
            Assert.AreEqual(0.3, length.Value, 0.001);

            length.SetValueFromString("304.8 mm");
            Assert.AreEqual(0.3048, length.Value, 0.001);

            length.SetValueFromString("1' 2 1/2\"");
            Assert.AreEqual(0.3683, length.Value, 0.001);

            length.SetValueFromString("14 1/2\"");
            Assert.AreEqual(0.3683, length.Value, 0.001);
        }
コード例 #14
0
ファイル: UnitsOfMeasureTests.cs プロジェクト: parchjs/Dynamo
        public void SetAreaFromString()
        {
            var units = new UnitsManager();

            var area = new Area(1.0, units);

            area.SetValueFromString("1 mm²");
            Assert.AreEqual(1.0e-6 , area.Value, 0.001);

            area.SetValueFromString("1mm²");
            Assert.AreEqual(1.0e-6, area.Value, 0.001);

            area.SetValueFromString("1 mm2");
            Assert.AreEqual(1.0e-6, area.Value, 0.001);

            area.SetValueFromString("1 sqmm");
            Assert.AreEqual(1.0e-6, area.Value, 0.001);

            area.SetValueFromString("1 cm²");
            Assert.AreEqual(0.0001, area.Value, 0.001);

            area.SetValueFromString("1cm²");
            Assert.AreEqual(0.0001, area.Value, 0.001);

            area.SetValueFromString("1 cm2");
            Assert.AreEqual(0.0001, area.Value, 0.001);

            area.SetValueFromString("1 sqcm");
            Assert.AreEqual(0.0001, area.Value, 0.001);

            area.SetValueFromString("1 m²");
            Assert.AreEqual(1, area.Value, 0.001);

            area.SetValueFromString("1m²");
            Assert.AreEqual(1, area.Value, 0.001);

            area.SetValueFromString("1 m2");
            Assert.AreEqual(1, area.Value, 0.001);

            area.SetValueFromString("1 sqm");
            Assert.AreEqual(1, area.Value, 0.001);

            area.SetValueFromString("1 in²");
            Assert.AreEqual(0.00064516, area.Value, 0.001);

            area.SetValueFromString("1in²");
            Assert.AreEqual(0.00064516, area.Value, 0.001);

            area.SetValueFromString("1 in2");
            Assert.AreEqual(0.00064516, area.Value, 0.001);

            area.SetValueFromString("1 sqin");
            Assert.AreEqual(0.00064516, area.Value, 0.001);

            area.SetValueFromString("1 ft²");
            Assert.AreEqual(0.092903, area.Value, 0.001);

            area.SetValueFromString("1ft²");
            Assert.AreEqual(0.092903, area.Value, 0.001);

            area.SetValueFromString("1 ft2");
            Assert.AreEqual(0.092903, area.Value, 0.001);

            area.SetValueFromString("1 sqft");
            Assert.AreEqual(0.092903, area.Value, 0.001);
        }