public ToggleSuffix ToggleFirst()
 {
     ToggleSuffix list = new ToggleSuffix();
     list.Toggle(40);
     list.Toggle(10);
     list.Toggle(20);
     list.Update();
     list.Toggle(40);
     Assert.AreEqual(0, DataUtil.Length(list.selects));
     return list;
 }
 public ToggleSuffix ToggleDifferent()
 {
     ToggleSuffix list = new ToggleSuffix();
     list.Toggle(20);
     list.Update();
     list.Toggle(40);
     Assert.AreEqual(2, DataUtil.Length(list.selects));
     Assert.AreEqual(20, list.selects[0]);
     Assert.AreEqual(40, list.selects[1]);
     return list;
 }
 public void PopTwo()
 {
     ToggleSuffix list = new ToggleSuffix();
     list.Toggle(40);
     Assert.AreEqual(1, DataUtil.Length(list.selects));
     list.Toggle(20);
     Assert.AreEqual(2, DataUtil.Length(list.selects));
     Assert.AreEqual(20, list.Pop());
     Assert.AreEqual(1, DataUtil.Length(list.selects));
     Assert.AreEqual(40, list.Pop());
     Assert.AreEqual(0, DataUtil.Length(list.selects));
     Assert.AreEqual(-1, list.Pop());
 }
 public void AddDuplicate()
 {
     ToggleSuffix list = new ToggleSuffix();
     list.Add(100);
     list.Add(100);
     Assert.AreEqual(0, DataUtil.Length(list.removesNow));
     Assert.AreEqual(2, DataUtil.Length(list.selectsNow));
     Assert.AreEqual(100, list.selectsNow[0]);
     Assert.AreEqual(100, list.selectsNow[1]);
     Assert.AreEqual(2, DataUtil.Length(list.selects));
     Assert.AreEqual(100, list.selects[0]);
     Assert.AreEqual(100, list.selects[1]);
     AssertUpdateClear(list);
 }
 private static void AssertUpdateClear(ToggleSuffix list)
 {
     list.Update();
     Assert.AreEqual(0, DataUtil.Length(list.removesNow),
         "Expected update clears removes now");
     Assert.AreEqual(0, DataUtil.Length(list.selectsNow),
         "Expected update clears selects now");
     Assert.AreEqual(-1, list.removeNow);
     Assert.AreEqual(-1, list.selectNow);
 }