public void Can_Serialize_And_Deserialize_Simple_Emitter() { var trigger = new TimeElapsedTrigger { Frequency = 1.2f }; var initializer = new StaticPositionInitializer { XOffset = 1.1f, YOffset = 2.2f }; var modifier = new ConstantSizeModifier { WidthChangePerSecond = 10, HeightChangePerSecond = 11 }; var emitter = new EmitterSettings { Trigger = trigger, Initializers = new [] { initializer }, Modifiers = new[] { modifier }, MaxParticleLifeTime = 5.5f, PositionModifier = new AltitudeBouncePositionModifier { MinBounceAcceleration = 190, MaxBounceAcceleration = 300, Elasticity = 0.9f, Gravity = -200, } }; var json = emitter.ToJson(); var deserializedEmitter = EmitterSettings.FromJson(json); deserializedEmitter.ShouldNotBeNull(); deserializedEmitter.MaxParticleLifeTime.ShouldBe(5.5f); deserializedEmitter.Trigger.ShouldNotBeNull(); deserializedEmitter.Trigger.ShouldBeOfType <TimeElapsedTrigger>(); ((TimeElapsedTrigger)deserializedEmitter.Trigger).Frequency.ShouldBe(1.2f); deserializedEmitter.Initializers.ShouldNotBeNull(); deserializedEmitter.Initializers.Count.ShouldBe(1); deserializedEmitter.Initializers[0].ShouldNotBeNull(); deserializedEmitter.Initializers[0].ShouldBeOfType <StaticPositionInitializer>(); ((StaticPositionInitializer)deserializedEmitter.Initializers[0]).XOffset.ShouldBe(1.1f); ((StaticPositionInitializer)deserializedEmitter.Initializers[0]).YOffset.ShouldBe(2.2f); deserializedEmitter.Modifiers.ShouldNotBeNull(); deserializedEmitter.Modifiers.Count.ShouldBe(1); deserializedEmitter.Modifiers[0].ShouldNotBeNull(); deserializedEmitter.Modifiers[0].ShouldBeOfType <ConstantSizeModifier>(); ((ConstantSizeModifier)deserializedEmitter.Modifiers[0]).WidthChangePerSecond.ShouldBe(10); ((ConstantSizeModifier)deserializedEmitter.Modifiers[0]).HeightChangePerSecond.ShouldBe(11); deserializedEmitter.PositionModifier.ShouldNotBeNull(); deserializedEmitter.PositionModifier.ShouldBeOfType <AltitudeBouncePositionModifier>(); ((AltitudeBouncePositionModifier)deserializedEmitter.PositionModifier).Gravity.ShouldBe(-200); ((AltitudeBouncePositionModifier)deserializedEmitter.PositionModifier).MinBounceAcceleration.ShouldBe(190); ((AltitudeBouncePositionModifier)deserializedEmitter.PositionModifier).MaxBounceAcceleration.ShouldBe(300); ((AltitudeBouncePositionModifier)deserializedEmitter.PositionModifier).Elasticity.ShouldBe(0.9f); }
/// <summary> /// Constructor for initializing a new instance with a custom instance of <see cref="TimeElapsedTrigger"/>. /// <para>SyncTrigger is set to false by default</para> /// </summary> /// <param name="apiClient">The <see cref="MtApiClient"/> which will be used to communicate with MetaTrader.</param> /// <param name="timeElapsedTrigger">The custom instance of <see cref="TimeElapsedTrigger"/> which will be used to trigger this instance of <see cref="TradeMonitor"/>.</param> public TimerTradeMonitor(MtApiClient apiClient, TimeElapsedTrigger timeElapsedTrigger) : base(apiClient, timeElapsedTrigger) { _timeElapsedTrigger = timeElapsedTrigger; }