public void FailFastEnumerator() { Deque <string> deque1 = new Deque <string>(new string[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" }); int i = 0; try { foreach (string s in deque1) { ++i; Assert.IsTrue(i < 4); if (i == 3) { deque1.AddToBack("hi"); } } Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is InvalidOperationException); } i = 0; try { foreach (string s in deque1) { ++i; Assert.IsTrue(i < 4); if (i == 3) { deque1.AddToFront("hi"); } } Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is InvalidOperationException); } i = 0; try { foreach (string s in deque1) { ++i; Assert.IsTrue(i < 4); if (i == 3) { deque1.RemoveRange(2, 4); } } Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is InvalidOperationException); } i = 0; try { foreach (string s in deque1) { ++i; Assert.IsTrue(i < 4); if (i == 3) { deque1[5] = "hi"; } } Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is InvalidOperationException); } i = 0; try { foreach (string s in deque1) { ++i; Assert.IsTrue(i < 4); if (i == 3) { deque1.Clear(); } } Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is InvalidOperationException); } }
public void IndexerExceptions() { string s = "foo"; Deque <string> d = new Deque <string>(); d.AddToFront("c"); d.AddToFront("b"); d.AddToFront("a"); d.AddToBack("d"); d.AddToBack("e"); d.AddToBack("f"); try { s = d[-1]; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { s = d[6]; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { s = d[int.MaxValue]; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { s = d[int.MinValue]; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { d[-1] = s; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { d[6] = s; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { d[int.MaxValue] = s; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { d[int.MinValue] = s; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } d.Clear(); d.AddToBack("a"); d.AddToBack("b"); d.AddToBack("c"); d.AddToBack("d"); try { s = d[-1]; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { s = d[4]; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { s = d[int.MaxValue]; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { s = d[int.MinValue]; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { d[-1] = s; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { d[4] = s; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { d[int.MaxValue] = s; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { d[int.MinValue] = s; Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } }