1 // ArraySegmentTest.cs - NUnit Test Cases for the System.ArraySegment class
3 // Ankit Jain <jankit@novell.com>
4 // Raja R Harinath <rharinath@novell.com>
5 // Jensen Somers <jensen.somers@gmail.com>
7 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
11 using NUnit.Framework;
13 using System.Collections.Generic;
15 namespace MonoTests.System
19 public class ArraySegmentTest
21 public ArraySegmentTest() {}
24 public void CtorTest1 ()
26 byte [] b_arr = new byte [4096];
29 ArraySegment<byte> seg = new ArraySegment<byte> (b_arr, 0, b_arr.Length);
30 Assert.AreEqual (seg.Count, b_arr.Length, "#1");
31 Assert.AreEqual (seg.Offset, 0, "#2");
34 Assert.AreEqual (arr.Length, 4096, "#5");
36 seg = new ArraySegment<byte> (b_arr, 100, b_arr.Length - 100);
37 Assert.AreEqual (seg.Count, b_arr.Length - 100, "#3");
38 Assert.AreEqual (seg.Offset, 100, "#4");
41 Assert.AreEqual (arr.Length, 4096, "#5");
45 public void CtorTest2 ()
47 byte [] b_arr = new byte [4096];
48 ArraySegment<byte> seg = new ArraySegment<byte> (b_arr);
49 Assert.AreEqual (seg.Count, b_arr.Length, "#6");
50 Assert.AreEqual (seg.Offset, 0, "#7");
52 Array arr = seg.Array;
53 Assert.AreEqual (arr.Length, 4096, "#8");
57 public void CtorTest3 ()
59 EmptyArraySegTest (0);
60 EmptyArraySegTest (10);
63 private void EmptyArraySegTest (int len)
65 byte [] b_arr = new byte [len];
67 ArraySegment<byte> seg = new ArraySegment<byte> (b_arr, 0, b_arr.Length);
69 Assert.AreEqual (seg.Count, b_arr.Length, "#1 [array len {0}] ", len);
70 Assert.AreEqual (seg.Offset, 0, "#2 [array len {0}] ", len);
71 Array arr = seg.Array;
72 Assert.AreEqual (arr.Length, len, "#3 [array len {0}] ", len);
74 seg = new ArraySegment<byte> (b_arr, b_arr.Length, 0);
75 Assert.AreEqual (seg.Count, 0, "#4 [array len {0}] ", len);
76 Assert.AreEqual (seg.Offset, b_arr.Length, "#5 [array len {0}] ", len);
78 Assert.AreEqual (arr.Length, len, "#6 [array len {0}] ", len);
80 seg = new ArraySegment<byte> (b_arr);
81 Assert.AreEqual (seg.Count, b_arr.Length, "#7 [array len {0}] ", len);
82 Assert.AreEqual (seg.Offset, 0, "#8 [array len {0}] ", len);
84 Assert.AreEqual (arr.Length, len, "#9 [array len {0}] ", len);
88 [ExpectedException (typeof (ArgumentException))]
89 public void CtorErrorTest ()
91 byte [] arr = new byte [4096];
92 ArraySegment<byte> seg = new ArraySegment<byte> (arr, 1, arr.Length);
96 [ExpectedException (typeof (ArgumentException))]
97 public void CtorErrorTest2 ()
99 byte [] arr = new byte [4096];
100 ArraySegment<byte> seg = new ArraySegment<byte> (arr, 0, arr.Length + 2);
104 [ExpectedException (typeof (ArgumentOutOfRangeException))]
105 public void CtorErrorTest3 ()
107 byte [] arr = new byte [4096];
108 ArraySegment<byte> seg = new ArraySegment<byte> (arr, -1, arr.Length);
112 [ExpectedException (typeof (ArgumentOutOfRangeException))]
113 public void CtorErrorTest4 ()
115 byte [] arr = new byte [4096];
116 ArraySegment<byte> seg = new ArraySegment<byte> (arr, 2, -1);
120 [ExpectedException (typeof (ArgumentException))]
121 public void CtorErrorTest5 ()
123 byte [] arr = new byte [4096];
124 ArraySegment<byte> seg = new ArraySegment<byte> (arr, 0, arr.Length + 2);
128 [ExpectedException (typeof (ArgumentNullException))]
129 public void CtorNullTest1 ()
131 ArraySegment<byte> seg = new ArraySegment<byte> (null, 0 , 1);
135 [ExpectedException (typeof (ArgumentNullException))]
136 public void CtorNullTest2 ()
138 ArraySegment<byte> seg = new ArraySegment<byte> (null);
141 #pragma warning disable 1718
143 public void TestArraySegmentEqual ()
145 string[] myArr_1 = { "The", "good" };
146 string[] myArr_2 = { "The", "good" };
148 ArraySegment<string> myArrSeg_1 = new ArraySegment<string>(myArr_1);
149 ArraySegment<string> myArrSeg_2 = new ArraySegment<string>(myArr_2);
151 // Should return true.
152 Assert.AreEqual(myArrSeg_1.Equals(myArrSeg_1), true);
153 Assert.AreEqual(myArrSeg_1 == myArrSeg_1, true);
155 // Should return false. Allthough the strings are the same.
156 Assert.AreEqual(myArrSeg_1.Equals(myArrSeg_2), false);
157 Assert.AreEqual(myArrSeg_1 == myArrSeg_2, false);
159 // Should return true.
160 Assert.AreEqual(myArrSeg_1 != myArrSeg_2, true);
162 #pragma warning restore 1718