Beispiel #1
0
        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));
        }
Beispiel #2
0
 public LengthInput()
 {
     _measure = new Units.Length(0.0);
     OutPortData.Add(new PortData("length", "The length. Stored internally as decimal meters.", typeof(FScheme.Value.Container)));
     RegisterAllPorts();
 }
Beispiel #3
0
        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);
        }
        public void UnitsMath()
        {
            var length = new Units.Length(2.0);
            var area = new Units.Area(2.0);
            var volume = new Units.Volume(2.0);

            //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), length + 2.0);
            Assert.AreEqual(4.0, 2.0 + length);

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

            Assert.AreEqual(new Volume(volume.Value + 2.0), volume + 2.0);
            Assert.AreEqual(4.0, 2.0 + volume);
        }
        public void ToFractionalFootRepresentations()
        {
            //test just the fractional case
            var length = new Units.Length(0.0762); //.25"
            SIUnit.LengthUnit = DynamoLengthUnit.FractionalFoot;

            Assert.AreEqual("3\"", length.ToString());

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

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

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

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

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

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

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

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

            length.Value = -0.35560000000142239; //-1'2"
            Assert.AreEqual("-1' 2\"", length.ToString());
        }
Beispiel #6
0
 public LengthInput()
 {
     _measure = new Units.Length(0.0, dynSettings.Controller.UnitsManager);
     OutPortData.Add(new PortData("length", "The length. Stored internally as decimal meters.", typeof(FScheme.Value.Container)));
     RegisterAllPorts();
 }
Beispiel #7
0
 public LengthFromNumber()
 {
     _measure = new Units.Length(0.0);
 }
Beispiel #8
0
        public void UnitsNegatives()
        {
            //construction
            Assert.DoesNotThrow(() => { var test = new Units.Length(-2.0); });
            Assert.Throws<MathematicalArgumentException>(() => { var test = new Area(-2.0); });
            Assert.Throws<MathematicalArgumentException>(() => { var test = new Volume(-2.0); });

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

            Assert.Throws<MathematicalArgumentException>(() => { var test = new Area(10.0) - new Area(12.0); });
            Assert.Throws<MathematicalArgumentException>(() => { var test = new Volume(10.0) - new Volume(12.0); });
        }
Beispiel #9
0
        public void UnitsMath()
        {
            var length = new Units.Length(2.0);
            var area = new Units.Area(2.0);
            var volume = new Units.Volume(2.0);

            //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.Throws<UnitsException>(() => { var test = area * area; });
            Assert.Throws<UnitsException>(() => { var test = volume * area; });
            Assert.Throws<UnitsException>(() => { var test = length * 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; });
        }