public void VerifyAllEnums()
 {
     var acceleration = new Acceleration(1, AccelerationUnit.BaseUnit);
     var angle = new Angle(1, AngleUnit.BaseUnit);
     var angularAcceleration = new AngularAcceleration(1, AngularAccelerationUnit.BaseUnit);
     var area = new Area(1, AreaUnit.BaseUnit);
     var density = new MassDensity(1, MassDensityUnit.BaseUnit);
     var electricCurrent = new ElectricCurrent(1, ElectricCurrentUnit.BaseUnit);
     var electricResistance = new ElectricResistance(1, ElectricResistanceUnit.BaseUnit);
     var electricVoltage = new ElectricPotential(1, ElectricPotentialUnit.BaseUnit);
     var energy = new Energy(1, EnergyUnit.BaseUnit);
     var force = new Force(1, ForceUnit.BaseUnit);
     var frequency = new Frequency(1, FrequencyUnit.BaseUnit);
     var jerk = new Jerk(1, JerkUnit.BaseUnit);
     var length = new Length(1, LengthUnit.BaseUnit);
     var mass = new Mass(1, MassUnit.BaseUnit);
     var massFlowRate = new MassFlowRate(1, MassFlowRateUnit.BaseUnit);
     var momentum = new Momentum(1, MomentumUnit.BaseUnit);
     var numeric = new Numeric(1, NumericUnit.BaseUnit);
     var power = new Power(1, PowerUnit.BaseUnit);
     var pressure = new Pressure(1, PressureUnit.BaseUnit);
     var speed = new Speed(1, SpeedUnit.BaseUnit);
     var temperature = new Temperature(1, TemperatureUnit.BaseUnit);
     var time = new Time(1, TimeUnit.BaseUnit);
     var torque = new Torque(1, TorqueUnit.BaseUnit);
     var volume = new Volume(1, VolumeUnit.BaseUnit);
     var volumetricFlowRate = new VolumetricFlowRate(1, VolumetricFlowRateUnit.BaseUnit);
 }
 public void OpAddition()
 {
     var jerk1 = new Jerk(1000, JerkUnit.MetersPerSecondCubed);
     var jerk2 = new Jerk(1, JerkUnit.KiloMetersPerSecondCubed);
     var expected = new Jerk(2000, JerkUnit.MetersPerSecondCubed);
     (jerk1 + jerk2).ShouldEqual(expected);
     (jerk2 + jerk1).ShouldEqual(expected);
 }
        public void OpDivision()
        {
            var jerk1 = new Jerk(1000, JerkUnit.MetersPerSecondCubed);
            var jerk2 = new Jerk(1, JerkUnit.KiloMetersPerSecondCubed);
            (jerk1 / jerk2).ShouldBeWithinEpsilonOf(1);
            (jerk2 / jerk1).ShouldBeWithinEpsilonOf(1);

            (jerk1 / 2).ShouldEqual(new Jerk(500, JerkUnit.MetersPerSecondCubed));
            (jerk2 / 2).ShouldEqual(new Jerk(.5, JerkUnit.KiloMetersPerSecondCubed));
        }
 public void OpGreaterThanOrEqual()
 {
     var jerk1 = new Jerk(3000, JerkUnit.MetersPerSecondCubed);
     var jerk2 = new Jerk(3, JerkUnit.KiloMetersPerSecondCubed);
     var jerk3 = new Jerk(4, JerkUnit.KiloMetersPerSecondCubed);
     (jerk1 >= jerk3).ShouldBeFalse();
     (jerk3 >= jerk1).ShouldBeTrue();
     (jerk1 >= jerk2).ShouldBeTrue();
     (jerk2 >= jerk1).ShouldBeTrue();
 }
 public void OpInverseEquals()
 {
     var jerk1 = new Jerk(3000, JerkUnit.MetersPerSecondCubed);
     var jerk2 = new Jerk(3, JerkUnit.KiloMetersPerSecondCubed);
     var jerk3 = new Jerk(4, JerkUnit.KiloMetersPerSecondCubed);
     (jerk1 != jerk2).ShouldBeFalse();
     (jerk2 != jerk1).ShouldBeFalse();
     (jerk1 != jerk3).ShouldBeTrue();
     (jerk3 != jerk1).ShouldBeTrue();
 }
예제 #6
0
        /// <summary>
        /// Dynamically constructs a quantity of the given <see cref="QuantityInfo"/> with the value in the quantity's base units.
        /// </summary>
        /// <param name="quantityInfo">The <see cref="QuantityInfo"/> of the quantity to create.</param>
        /// <param name="value">The value to construct the quantity with.</param>
        /// <returns>The created quantity.</returns>
        public static IQuantity FromQuantityInfo(QuantityInfo quantityInfo, QuantityValue value)
        {
            switch (quantityInfo.Name)
            {
            case "Depth":
                return(Depth.From(value, Depth.BaseUnit));

            case "Jerk":
                return(Jerk.From(value, Jerk.BaseUnit));

            default:
                throw new ArgumentException($"{quantityInfo.Name} is not a supported quantity.");
            }
        }
 public void OpEquals()
 {
     var jerk1 = new Jerk(3000, JerkUnit.MetersPerSecondCubed);
     var jerk2 = new Jerk(3, JerkUnit.KiloMetersPerSecondCubed);
     var jerk3 = new Jerk(4, JerkUnit.KiloMetersPerSecondCubed);
     (jerk1 == jerk2).ShouldBeTrue();
     (jerk2 == jerk1).ShouldBeTrue();
     (jerk1 == jerk3).ShouldBeFalse();
     (jerk3 == jerk1).ShouldBeFalse();
     jerk1.Equals(jerk2)
          .ShouldBeTrue();
     jerk1.Equals((object)jerk2)
          .ShouldBeTrue();
     jerk2.Equals(jerk1)
          .ShouldBeTrue();
     jerk2.Equals((object)jerk1)
          .ShouldBeTrue();
 }
예제 #8
0
    //Function to create new Enemes
    public TownsPeople GetTownsPeople(TownsPeopleType type)
    {
        switch (type)
        {
        case TownsPeopleType.Hero:
            TownsPeople hero = new Hero();
            return(hero);

        case TownsPeopleType.Jerk:
            TownsPeople jerk = new Jerk();
            return(jerk);

        case TownsPeopleType.Toast:
            TownsPeople toast = new Toast();
            return(toast);
        }
        return(null);
    }
예제 #9
0
        /// <summary>
        ///     Try to dynamically construct a quantity.
        /// </summary>
        /// <param name="value">Numeric value.</param>
        /// <param name="unit">Unit enum value.</param>
        /// <param name="quantity">The resulting quantity if successful, otherwise <c>default</c>.</param>
        /// <returns><c>True</c> if successful with <paramref name="quantity"/> assigned the value, otherwise <c>false</c>.</returns>
        public static bool TryFrom(QuantityValue value, Enum unit, out IQuantity quantity)
        {
            switch (unit)
            {
            case DepthUnit depthUnit:
                quantity = Depth.From(value, depthUnit);
                return(true);

            case JerkUnit jerkUnit:
                quantity = Jerk.From(value, jerkUnit);
                return(true);

            default:
            {
                quantity = default(IQuantity);
                return(false);
            }
            }
        }
예제 #10
0
 public void OpLessThan()
 {
     var jerk1 = new Jerk(3000, JerkUnit.MetersPerSecondCubed);
     var jerk2 = new Jerk(3, JerkUnit.KiloMetersPerSecondCubed);
     var jerk3 = new Jerk(4, JerkUnit.KiloMetersPerSecondCubed);
     (jerk1 < jerk3).ShouldBeTrue();
     (jerk3 < jerk1).ShouldBeFalse();
     (jerk1 < jerk2).ShouldBeFalse();
     (jerk2 < jerk1).ShouldBeFalse();
 }
예제 #11
0
 public static Jerk FeetPerSecondCubed <T>(this T value) =>
 Jerk.FromFeetPerSecondCubed(Convert.ToDouble(value));
예제 #12
0
 public void NumberToInchesPerSecondCubedTest() =>
 Assert.Equal(Jerk.FromInchesPerSecondCubed(2), 2.InchesPerSecondCubed());
예제 #13
0
 public void NumberToFeetPerSecondCubedTest() =>
 Assert.Equal(Jerk.FromFeetPerSecondCubed(2), 2.FeetPerSecondCubed());
예제 #14
0
 public void NumberToNanometersPerSecondCubedTest() =>
 Assert.Equal(Jerk.FromNanometersPerSecondCubed(2), 2.NanometersPerSecondCubed());
예제 #15
0
 public void NumberToMillimetersPerSecondCubedTest() =>
 Assert.Equal(Jerk.FromMillimetersPerSecondCubed(2), 2.MillimetersPerSecondCubed());
예제 #16
0
 public void OpMultiplicationScaler()
 {
     var jerk = new Jerk(1, JerkUnit.KiloMetersPerSecondCubed);
     var expected = new Jerk(2, JerkUnit.KiloMetersPerSecondCubed);
     (jerk * 2).ShouldEqual(expected);
     (2 * jerk).ShouldEqual(expected);
 }
 protected void SetScalarValue(DependencyProperty property, Jerk? quantity)
 {
     // we set this flag to prevent from setting scalar value changing quantity values.
     this.isUpdatingScalarValue = true;
     var value = quantity != null
         ? this.Unit.GetScalarValue(quantity.Value)
         : (double?)null;
     this.SetCurrentValue(property, value);
     this.isUpdatingScalarValue = false;
 }
        public override object ReadJson(JsonReader reader, Type objectType, object?existingValue, JsonSerializer serializer)
        {
            var stringValue = (string)reader.Value !;

            return(Jerk.Parse(stringValue, serializer.Culture));
        }
예제 #19
0
 public void NumberToDecimetersPerSecondCubedTest() =>
 Assert.Equal(Jerk.FromDecimetersPerSecondCubed(2), 2.DecimetersPerSecondCubed());
예제 #20
0
 public static Jerk StandardGravitiesPerSecond <T>(this T value) =>
 Jerk.FromStandardGravitiesPerSecond(Convert.ToDouble(value));
예제 #21
0
 public void NumberToStandardGravitiesPerSecondTest() =>
 Assert.Equal(Jerk.FromStandardGravitiesPerSecond(2), 2.StandardGravitiesPerSecond());
 protected virtual void OnMaxValueChanged(Jerk? oldValue, Jerk? newValue)
 {
     this.SetScalarValue(ScalarMaxValueProperty, newValue);
 }
예제 #23
0
 public static Jerk InchesPerSecondCubed <T>(this T value) =>
 Jerk.FromInchesPerSecondCubed(Convert.ToDouble(value));
예제 #24
0
 public void OpSubtraction()
 {
     var jerk1 = new Jerk(2000, JerkUnit.MetersPerSecondCubed);
     var jerk2 = new Jerk(1, JerkUnit.KiloMetersPerSecondCubed);
     (jerk1 - jerk2).ShouldEqual(new Jerk(1000, JerkUnit.MetersPerSecondCubed));
     (jerk2 - jerk1).ShouldEqual(new Jerk(-1, JerkUnit.KiloMetersPerSecondCubed));
 }
예제 #25
0
 public static Jerk NanometersPerSecondCubed <T>(this T value) =>
 Jerk.FromNanometersPerSecondCubed(Convert.ToDouble(value));
예제 #26
0
        /// <inheritdoc />
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (!this.initialized)
            {
                this.Initialize();
            }

            var message = this.errorText.ToString();

            if (!(targetType == typeof(Jerk) || targetType == typeof(Jerk?)))
            {
                message += $"{this.GetType().Name} does not support converting to {targetType.Name}";
            }

            if (message != string.Empty)
            {
                message = message.TrimEnd('\r', '\n');
                if (Is.DesignMode)
                {
                    throw new InvalidOperationException(message);
                }

                return(message);
            }

            if (value == null)
            {
                return(null);
            }

            if (value is double)
            {
                return(new Jerk((double)value, this.unit.Value));
            }

            var text = value as string;

            if (string.IsNullOrEmpty(text))
            {
                return(null);
            }

            var unitInput = this.UnitInput ?? Wpf.UnitInput.ScalarOnly;

            switch (unitInput)
            {
            case Wpf.UnitInput.ScalarOnly:
            {
                double d;
                if (double.TryParse(text, NumberStyles.Float, culture, out d))
                {
                    return(new Jerk(d, this.unit.Value));
                }

                Jerk result;
                if (Jerk.TryParse(text, NumberStyles.Float, culture, out result))
                {
                    return($"#{text}#");        // returning modified text so that TypeConverter fails and we get an error
                }

                return(text);        // returning raw to trigger error
            }

            case Wpf.UnitInput.SymbolAllowed:
            {
                double d;
                int    pos = 0;
                WhiteSpaceReader.TryRead(text, ref pos);
                if (DoubleReader.TryRead(text, ref pos, NumberStyles.Float, culture, out d))
                {
                    WhiteSpaceReader.TryRead(text, ref pos);
                    if (pos == text.Length)
                    {
                        return(new Jerk(d, this.unit.Value));
                    }
                }

                goto case Wpf.UnitInput.SymbolRequired;
            }

            case Wpf.UnitInput.SymbolRequired:
            {
                Jerk result;
                if (Jerk.TryParse(text, NumberStyles.Float, culture, out result))
                {
                    return(result);
                }

                return(text);
            }

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
예제 #27
0
        public void AccelerationDividedByDurationEqualsJerk()
        {
            Jerk jerk = Acceleration.FromMetersPerSecondSquared(10) / Duration.FromSeconds(2);

            Assert.Equal(Jerk.FromMetersPerSecondCubed(5), jerk);
        }
예제 #28
0
            public void Update(double deltaTime)
            {
                if (CurrentNotch != InNotch)
                {
                    CurrentTime  = 0.0;
                    CurrentNotch = InNotch;
                }


                if (CurrentTime < TransitionDuration)
                {
                    OutFuelCurrent = MinimumFuelCurrent;
                    CurrentTime   += deltaTime;

                    return;
                }


                var notch = Math.Max(Math.Min(CurrentNotch, FuelTable.Length), 0);


                if ((LastNotch > 0) && (CurrentNotch == 0))
                {
                    IsCutOffFuel = true;
                }
                else if (CurrentNotch > 0)
                {
                    IsCutOffFuel = false;
                }


                if (IsCutOffFuel)
                {
                    if (InRpm >= FuelTable[0] * MaximumRpm)
                    {
                        CurrentTimeForCutOff = 0.0;
                    }

                    if (CurrentTimeForCutOff < TransitonDurationForCutOff)
                    {
                        CurrentTimeForCutOff += deltaTime;
                    }
                    else
                    {
                        IsCutOffFuel = false;
                    }
                }


                if (InFuelInjectionCurrent == 0.0)
                {
                    Jerk.U = IsCutOffFuel ? FuelValueOnCutOff : FuelTable[notch];

                    if (CurrentNotch > LastNotch)
                    {
                        Jerk.Tp = ((LastNotch == 0) && (CurrentNotch == 1)) ? 1.0 : 9000.0;
                    }
                    else if (CurrentNotch < LastNotch)
                    {
                        Jerk.Tp = 3500.0;
                    }
                }
                else
                {
                    Jerk.U  = InFuelInjectionCurrent;
                    Jerk.Tp = 1000.0;
                }

                Jerk.Calculate(deltaTime);


                OutFuelCurrent = Jerk.Y;

                LastNotch = CurrentNotch;
            }
예제 #29
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Gu.Units.Wpf.JerkExtension"/> class.
 /// </summary>
 /// <param name="value"><see cref="Gu.Units.Jerk"/>.</param>
 public JerkExtension(Jerk value)
 {
     this.Value = value;
 }
예제 #30
0
 public void NumberToCentimetersPerSecondCubedTest() =>
 Assert.Equal(Jerk.FromCentimetersPerSecondCubed(2), 2.CentimetersPerSecondCubed());