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 AreaFromNumber() { _measure = new Units.Area(0.0); }
public AreaInput() { _measure = new Units.Area(0.0); OutPortData.Add(new PortData("area", "The area. Stored internally as decimal meters squared.", typeof(FScheme.Value.Container))); RegisterAllPorts(); }
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; }); }