public void Set <T>(int timeStep, string key, T value, bool force = false, bool clearFuture = false) where T : IEquatable <T> { if (!_dict.TryGetValue(key, out var timeline)) { timeline = _dict[key] = new VariableTimeline <T>(); } timeline.SetRaw(timeStep, value, force, clearFuture); }
public void VariableTimelineIntTest() { VariableTimeline <int> timeline = new VariableTimeline <int>(); Assert.AreEqual(0, timeline.Get(0)); // default is 0 timeline.Set(10, 55); Assert.AreEqual(0, timeline.Get(0)); // before point still 0 Assert.AreEqual(55, timeline.Get(10)); // at point is 55 Assert.AreEqual(55, timeline.Get(20)); // after point is 55 timeline.Set(25, 1111); Assert.AreEqual(55, timeline.Get(15)); Assert.AreEqual(1111, timeline.Get(25)); Assert.AreEqual(1111, timeline.Get(30)); }
public void VariableTimelineBoolTest() { VariableTimeline <bool> timeline = new VariableTimeline <bool>(); Assert.IsFalse(timeline.Get(0)); // default is false timeline.Set(10, true); Assert.IsFalse(timeline.Get(0)); // before point still false Assert.IsTrue(timeline.Get(10)); // at point is true Assert.IsTrue(timeline.Get(20)); // after point is true timeline.Set(25, false); Assert.IsTrue(timeline.Get(15)); Assert.IsFalse(timeline.Get(25)); Assert.IsFalse(timeline.Get(30)); }
public void VariableTimelineBoolWithForceTest() { VariableTimeline <bool> timeline = new VariableTimeline <bool>(); timeline.Set(0, true); timeline.Set(25, false); Assert.IsTrue(timeline.Get(15)); Assert.IsFalse(timeline.Get(25)); Assert.IsFalse(timeline.Get(30)); timeline.Set(30, false, force: true); // FORCE set future value to same as the propagated value from time=25 Assert.IsFalse(timeline.Get(30)); timeline.Set(27, true); // now set value between two 'false' data points Assert.IsFalse(timeline.Get(26)); Assert.IsTrue(timeline.Get(27)); Assert.IsTrue(timeline.Get(28)); Assert.IsFalse(timeline.Get(30)); // values should be affected by the 30 data point b/c it was forced Assert.IsFalse(timeline.Get(31)); }
public void VariableTimelineClearFutureTest() { VariableTimeline <int> timeline = new VariableTimeline <int>(); Assert.AreEqual(0, timeline.Get(0)); // default is 0 timeline.Set(10, 55); Assert.AreEqual(0, timeline.Get(0)); // before point still 0 Assert.AreEqual(55, timeline.Get(10)); // at point is 55 Assert.AreEqual(55, timeline.Get(20)); // after point is 55 timeline.Set(25, 1111); Assert.AreEqual(55, timeline.Get(15)); Assert.AreEqual(1111, timeline.Get(25)); Assert.AreEqual(1111, timeline.Get(30)); timeline.Set(5, 333, force: true, clearFuture: true); Assert.AreEqual(0, timeline.Get(0)); // before is still 0 Assert.AreEqual(333, timeline.Get(10)); // rest are 333 because of clearFuture Assert.AreEqual(333, timeline.Get(15)); Assert.AreEqual(333, timeline.Get(25)); Assert.AreEqual(333, timeline.Get(30)); }
public VariableTimeline(VariableTimeline <T> other) { valueHistory = new SortedList <int, T>(other.valueHistory); }