Exemplo n.º 1
0
    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));
        }
Exemplo n.º 6
0
 public VariableTimeline(VariableTimeline <T> other)
 {
     valueHistory = new SortedList <int, T>(other.valueHistory);
 }