public void TestAddMultipleSameStart() { var db = new RestrictionsDb(1024); db.Add(1, 2, 3); db.Add(1, 2, 3, 4); db.Add(1, 2, 3, 4, 5); var enumerator = db.GetEnumerator(); Assert.IsTrue(enumerator.MoveTo(1)); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(3, enumerator.Count); Assert.AreEqual(1, enumerator[0]); Assert.AreEqual(2, enumerator[1]); Assert.AreEqual(3, enumerator[2]); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(4, enumerator.Count); Assert.AreEqual(1, enumerator[0]); Assert.AreEqual(2, enumerator[1]); Assert.AreEqual(3, enumerator[2]); Assert.AreEqual(4, enumerator[3]); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(5, enumerator.Count); Assert.AreEqual(1, enumerator[0]); Assert.AreEqual(2, enumerator[1]); Assert.AreEqual(3, enumerator[2]); Assert.AreEqual(4, enumerator[3]); Assert.AreEqual(5, enumerator[4]); Assert.IsFalse(enumerator.MoveNext()); db.Switch(6, 1); Assert.IsTrue(enumerator.MoveTo(6)); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(3, enumerator.Count); Assert.AreEqual(6, enumerator[0]); Assert.AreEqual(2, enumerator[1]); Assert.AreEqual(3, enumerator[2]); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(4, enumerator.Count); Assert.AreEqual(6, enumerator[0]); Assert.AreEqual(2, enumerator[1]); Assert.AreEqual(3, enumerator[2]); Assert.AreEqual(4, enumerator[3]); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(5, enumerator.Count); Assert.AreEqual(6, enumerator[0]); Assert.AreEqual(2, enumerator[1]); Assert.AreEqual(3, enumerator[2]); Assert.AreEqual(4, enumerator[3]); Assert.AreEqual(5, enumerator[4]); Assert.IsFalse(enumerator.MoveNext()); }
public void TestSwitch() { var db = new RestrictionsDb(1024); db.Add(2, 1, 3); db.Switch(2, 1); var enumerator = db.GetEnumerator(); Assert.IsTrue(enumerator.MoveTo(1)); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(3, enumerator.Count); Assert.AreEqual(1, enumerator[0]); Assert.AreEqual(2, enumerator[1]); Assert.AreEqual(3, enumerator[2]); Assert.IsFalse(enumerator.MoveNext()); enumerator = db.GetEnumerator(); Assert.IsTrue(enumerator.MoveTo(3)); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(3, enumerator.Count); Assert.AreEqual(1, enumerator[0]); Assert.AreEqual(2, enumerator[1]); Assert.AreEqual(3, enumerator[2]); Assert.IsFalse(enumerator.MoveNext()); db = new RestrictionsDb(1024); db.Add(1, 2, 3); db.Add(1, 2, 3, 4); db.Switch(1, 10); enumerator = db.GetEnumerator(); Assert.IsTrue(enumerator.MoveTo(10)); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(3, enumerator.Count); Assert.AreEqual(10, enumerator[0]); Assert.AreEqual(2, enumerator[1]); Assert.AreEqual(3, enumerator[2]); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(4, enumerator.Count); Assert.AreEqual(10, enumerator[0]); Assert.AreEqual(2, enumerator[1]); Assert.AreEqual(3, enumerator[2]); Assert.AreEqual(4, enumerator[3]); db.Switch(2, 20); enumerator = db.GetEnumerator(); Assert.IsTrue(enumerator.MoveTo(10)); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(3, enumerator.Count); Assert.AreEqual(10, enumerator[0]); Assert.AreEqual(20, enumerator[1]); Assert.AreEqual(3, enumerator[2]); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(4, enumerator.Count); Assert.AreEqual(10, enumerator[0]); Assert.AreEqual(20, enumerator[1]); Assert.AreEqual(3, enumerator[2]); Assert.AreEqual(4, enumerator[3]); db.Switch(3, 30); enumerator = db.GetEnumerator(); Assert.IsTrue(enumerator.MoveTo(10)); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(3, enumerator.Count); Assert.AreEqual(10, enumerator[0]); Assert.AreEqual(20, enumerator[1]); Assert.AreEqual(30, enumerator[2]); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(4, enumerator.Count); Assert.AreEqual(10, enumerator[0]); Assert.AreEqual(20, enumerator[1]); Assert.AreEqual(30, enumerator[2]); Assert.AreEqual(4, enumerator[3]); db.Switch(4, 40); enumerator = db.GetEnumerator(); Assert.IsTrue(enumerator.MoveTo(10)); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(3, enumerator.Count); Assert.AreEqual(10, enumerator[0]); Assert.AreEqual(20, enumerator[1]); Assert.AreEqual(30, enumerator[2]); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(4, enumerator.Count); Assert.AreEqual(10, enumerator[0]); Assert.AreEqual(20, enumerator[1]); Assert.AreEqual(30, enumerator[2]); Assert.AreEqual(40, enumerator[3]); Assert.IsFalse(enumerator.MoveNext()); db = new RestrictionsDb(1024); db.Add(1, 2, 3); db.Add(3, 2, 1); db.Add(3, 2, 1, 4); db.Add(1, 2, 3, 4); db.Switch(1, 10); db.Switch(2, 20); db.Switch(3, 30); db.Switch(4, 40); enumerator = db.GetEnumerator(); Assert.IsTrue(enumerator.MoveTo(10)); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(3, enumerator.Count); Assert.AreEqual(10, enumerator[0]); Assert.AreEqual(20, enumerator[1]); Assert.AreEqual(30, enumerator[2]); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(3, enumerator.Count); Assert.AreEqual(30, enumerator[0]); Assert.AreEqual(20, enumerator[1]); Assert.AreEqual(10, enumerator[2]); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(4, enumerator.Count); Assert.AreEqual(30, enumerator[0]); Assert.AreEqual(20, enumerator[1]); Assert.AreEqual(10, enumerator[2]); Assert.AreEqual(40, enumerator[3]); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(4, enumerator.Count); Assert.AreEqual(10, enumerator[0]); Assert.AreEqual(20, enumerator[1]); Assert.AreEqual(30, enumerator[2]); Assert.AreEqual(40, enumerator[3]); Assert.IsFalse(enumerator.MoveNext()); enumerator = db.GetEnumerator(); Assert.IsTrue(enumerator.MoveTo(30)); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(3, enumerator.Count); Assert.AreEqual(10, enumerator[0]); Assert.AreEqual(20, enumerator[1]); Assert.AreEqual(30, enumerator[2]); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(3, enumerator.Count); Assert.AreEqual(30, enumerator[0]); Assert.AreEqual(20, enumerator[1]); Assert.AreEqual(10, enumerator[2]); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(4, enumerator.Count); Assert.AreEqual(30, enumerator[0]); Assert.AreEqual(20, enumerator[1]); Assert.AreEqual(10, enumerator[2]); Assert.AreEqual(40, enumerator[3]); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(4, enumerator.Count); Assert.AreEqual(10, enumerator[0]); Assert.AreEqual(20, enumerator[1]); Assert.AreEqual(30, enumerator[2]); Assert.AreEqual(40, enumerator[3]); Assert.IsFalse(enumerator.MoveNext()); db = new RestrictionsDb(1024); db.Add(2, 1, 3); db.Switch(4, 1); db.Switch(4, 8); enumerator = db.GetEnumerator(); Assert.IsTrue(enumerator.MoveTo(2)); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(3, enumerator.Count); Assert.AreEqual(2, enumerator[0]); Assert.AreEqual(8, enumerator[1]); Assert.AreEqual(3, enumerator[2]); Assert.IsFalse(enumerator.MoveNext()); enumerator = db.GetEnumerator(); Assert.IsTrue(enumerator.MoveTo(3)); Assert.IsTrue(enumerator.MoveNext()); Assert.AreEqual(3, enumerator.Count); Assert.AreEqual(2, enumerator[0]); Assert.AreEqual(8, enumerator[1]); Assert.AreEqual(3, enumerator[2]); Assert.IsFalse(enumerator.MoveNext()); }