コード例 #1
0
    public void DropBefore_always_leaves_one_input(int start, int count, int dropPoint)
    {
        var inputHistory = new InputHistory <int>(0, (uint)start, Merger <int> .FromDelegate((a, b) => a));

        inputHistory.MergeWith(0, Enumerable.Range(start, count));

        inputHistory.DropBefore((uint)dropPoint);

        Assert.That(inputHistory.GetFullSequence().Count(), Is.GreaterThanOrEqualTo(1));
        AssertHistoryMaintainsOrder(inputHistory);
    }
コード例 #2
0
    public void DropBefore_updates_Current(int start, int count, int dropPoint)
    {
        var inputHistory = new InputHistory <int>(0, (uint)start, Merger <int> .FromDelegate((a, b) => a));

        inputHistory.MergeWith(0, Enumerable.Range(start, count));

        inputHistory.DropBefore((uint)dropPoint);

        Assert.That(inputHistory.Oldest.Timestep, Is.LessThanOrEqualTo(inputHistory.Current.Timestep));
        AssertHistoryMaintainsOrder(inputHistory);
    }
コード例 #3
0
    public void DropBefore_drops_inputs(int start, int count, int dropPoint)
    {
        var inputHistory = new InputHistory <int>(0, (uint)start, Merger <int> .FromDelegate((a, b) => a));

        inputHistory.MergeWith(0, Enumerable.Range(start, count));

        var expectedCount = dropPoint < start?inputHistory.GetFullSequence().Count() : start + count - dropPoint;

        inputHistory.DropBefore((uint)dropPoint);

        Assert.That(inputHistory.Oldest.Timestep, Is.GreaterThanOrEqualTo(dropPoint));
        Assert.That(inputHistory.GetFullSequence().Count(), Is.EqualTo(expectedCount));
        AssertHistoryMaintainsOrder(inputHistory);
    }
コード例 #4
0
    public void MergeWith_merges_stored_values()
    {
        var inputHistory = new InputHistory <int>(0, Merger <int> .FromDelegate((a, b) => a + b));

        inputHistory.Append(1);
        inputHistory.Append(2);
        inputHistory.Append(3);
        inputHistory.Append(4);
        inputHistory.Append(5);
        inputHistory.Append(6);

        inputHistory.MergeWith(2, new ArraySlice <int>(new[] { 5, 5, 5, 5 }));

        Assert.That(inputHistory.Select(i => i.Input).ToArray(),
                    Is.EqualTo(new[] { 0, 1, 7, 8, 9, 10, 6 }));
        AssertHistoryMaintainsOrder(inputHistory);
    }
コード例 #5
0
    public void Append_merges_with_existing_future_inputs()
    {
        var inputHistory = new InputHistory <int>(0, (uint)0, Merger <int> .FromDelegate((a, b) => a + b));

        inputHistory.MergeWith(0, Enumerable.Range(0, 20));

        var result = inputHistory.Append(5);

        Assert.AreEqual(6, result);
        result = inputHistory.Append(6);
        Assert.AreEqual(8, result);
        result = inputHistory.Append(7);
        Assert.AreEqual(10, result);
        result = inputHistory.Append(8);
        Assert.AreEqual(12, result);
        result = inputHistory.Append(9);
        Assert.AreEqual(14, result);
        AssertHistoryMaintainsOrder(inputHistory);
    }
コード例 #6
0
    public void MergeWith_ignores_inputs_before_oldest_local_input()
    {
        var inputHistory = new InputHistory <int>(0, 5, Merger <int> .FromDelegate((a, b) => a + b));

        inputHistory.Append(1);
        inputHistory.Append(2);
        inputHistory.Append(3);
        inputHistory.Append(4);
        inputHistory.Append(5);
        inputHistory.Append(6);

        inputHistory.MergeWith(2, new ArraySlice <int>(new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }));

        Assert.That(inputHistory.GetFullSequence().Select(i => i.Input).ToArray(),
                    Is.EqualTo(new[] { 4, 6, 8, 10, 12, 14, 16, 11 }));

        Assert.That(inputHistory.Select(i => i.Input).ToArray(),
                    Is.EqualTo(new[] { 4, 6, 8, 10, 12, 14, 16 }));
        AssertHistoryMaintainsOrder(inputHistory);
    }
コード例 #7
0
    public void MergeWith_appends_values_if_over_end_of_history()
    {
        var inputHistory = new InputHistory <int>(0, Merger <int> .FromDelegate((a, b) => a + b));

        inputHistory.Append(1);
        inputHistory.Append(2);
        inputHistory.Append(3);
        inputHistory.Append(4);
        inputHistory.Append(5);
        inputHistory.Append(6);

        inputHistory.MergeWith(5, new ArraySlice <int>(new[] { 5, 5, 5, 5 }));

        Assert.That(inputHistory.GetFullSequence().Select(i => i.Input).ToArray(),
                    Is.EqualTo(new[] { 0, 1, 2, 3, 4, 10, 11, 5, 5 }));

        Assert.That(inputHistory.Select(i => i.Input).ToArray(),
                    Is.EqualTo(new[] { 0, 1, 2, 3, 4, 10, 11 }));
        AssertHistoryMaintainsOrder(inputHistory);
    }