| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988 |
- // ArrayTest.cs - NUnit Test Cases for the System.Array class
- //
- // David Brandt ([email protected])
- //
- // (C) Ximian, Inc. http://www.ximian.com
- //
- using NUnit.Framework;
- using System;
- using System.Collections;
- using System.Globalization;
- namespace MonoTests.System
- {
- public class ArrayTest : TestCase
- {
- public ArrayTest() {}
- protected override void SetUp()
- {
- }
- protected override void TearDown()
- {
- }
- public void TestIsFixedSize() {
- char[] a1 = {'a'};
- Assert("All arrays are fixed", a1.IsFixedSize);
- }
- public void TestIsReadOnly() {
- char[] a1 = {'a'};
- Assert("No array is readonly", !a1.IsReadOnly);
- }
- public void TestIsSynchronized() {
- char[] a1 = {'a'};
- Assert("No array is synchronized", !a1.IsSynchronized);
- }
- public void TestLength() {
- {
- char[] a1 = { };
- AssertEquals("Zero length array", 0, a1.Length);
- }
- {
- char[] a1 = {'c'};
- AssertEquals("One-length array", 1, a1.Length);
- }
- {
- char[] a1 = {'c', 'c'};
- AssertEquals("Two-length array", 2, a1.Length);
- }
- }
- public void TestRank() {
- char[] a1 = { 'c', 'd', 'e' };
- AssertEquals("Rank one", 1, a1.Rank);
- char[,] a2 = new Char[3,3];
- AssertEquals("Rank two", 2, a2.Rank);
- char[,,] a3 = new Char[3,3,3];
- AssertEquals("Rank three", 3, a3.Rank);
- }
- public void TestBinarySearch1() {
- bool errorThrown = false;
- try {
- Array.BinarySearch(null, "blue");
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#B01", errorThrown);
- errorThrown = false;
- try {
- char[,] c1 = new Char[2,2];
- Array.BinarySearch(c1, "needle");
- } catch (RankException) {
- errorThrown = true;
- }
- Assert("#B02", errorThrown);
- {
- char[] arr = {'a', 'b', 'b', 'c', 'c', 'c', 'd', 'd'};
- Assert("#B05",
- Array.BinarySearch(arr, 'c') >= 3);
- Assert("#B06",
- Array.BinarySearch(arr, 'c') < 6);
- }
- {
- char[] arr = {'a', 'b', 'b', 'd', 'd', 'd', 'e', 'e'};
- AssertEquals("#B07",
- -4, Array.BinarySearch(arr, 'c'));
- }
- {
- char[] arr = {'a', 'b', 'b', 'c', 'c', 'c', 'd', 'd'};
- AssertEquals("#B08",
- -9, Array.BinarySearch(arr, 'e'));
- }
- }
- public void TestBinarySearch2() {
- bool errorThrown = false;
- try {
- Array.BinarySearch(null, 0, 1, "blue");
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#B20", errorThrown);
- errorThrown = false;
- try {
- char[,] c1 = new Char[2,2];
- Array.BinarySearch(c1, 0, 1, "needle");
- } catch (RankException) {
- errorThrown = true;
- }
- Assert("#B21", errorThrown);
- errorThrown = false;
- try {
- char[] c1 = {'a'};
- Array.BinarySearch(c1, -1, 1, 'a');
- } catch (ArgumentOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#B22", errorThrown);
- errorThrown = false;
- try {
- char[] c1 = {'a'};
- Array.BinarySearch(c1, 0, -1, 'a');
- } catch (ArgumentOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#B23", errorThrown);
- errorThrown = false;
- try {
- char[] c1 = {'a'};
- Array.BinarySearch(c1, 0, 4, 'a');
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#B24", errorThrown);
- {
- char[] arr = {'z', 'z', 'a', 'b', 'b', 'c', 'c', 'c', 'd', 'd'};
- Assert("#B26",
- Array.BinarySearch(arr, 2, 8, 'c') >= 5);
- Assert("#B27",
- Array.BinarySearch(arr, 2, 8, 'c') < 8);
- }
- {
- char[] arr = {'z', 'z', 'a', 'b', 'b', 'd', 'd', 'd', 'e', 'e'};
- AssertEquals("#B28",
- -6, Array.BinarySearch(arr, 2, 8, 'c'));
- }
- {
- char[] arr = {'z', 'z', 'a', 'b', 'b', 'c', 'c', 'c', 'd', 'd'};
- AssertEquals("#B29",
- -11, Array.BinarySearch(arr, 2, 8, 'e'));
- }
- }
- // TODO - testBinarySearch with explicit IComparer args
- public void TestClear() {
- bool errorThrown = false;
- try {
- Array.Clear(null, 0, 1);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#C01", errorThrown);
- int[] i1 = { 1, 2, 3, 4 };
- {
- int[] compare = {1,2,3,4};
- AssertEquals("#C02", compare[0], i1[0]);
- AssertEquals("#C03", compare[1], i1[1]);
- AssertEquals("#C04", compare[2], i1[2]);
- AssertEquals("#C05", compare[3], i1[3]);
- }
- Array.Clear(i1, 3, 1);
- {
- int[] compare = {1,2,3,0};
- AssertEquals("#C06", compare[0], i1[0]);
- AssertEquals("#C07", compare[1], i1[1]);
- AssertEquals("#C08", compare[2], i1[2]);
- AssertEquals("#C09", compare[3], i1[3]);
- }
- Array.Clear(i1, 1, 1);
- {
- int[] compare = {1,0,3,0};
- AssertEquals("#C10", compare[0], i1[0]);
- AssertEquals("#C11", compare[1], i1[1]);
- AssertEquals("#C12", compare[2], i1[2]);
- AssertEquals("#C13", compare[3], i1[3]);
- }
- Array.Clear(i1, 1, 3);
- {
- int[] compare = {1,0,0,0};
- AssertEquals("#C14", compare[0], i1[0]);
- AssertEquals("#C15", compare[1], i1[1]);
- AssertEquals("#C16", compare[2], i1[2]);
- AssertEquals("#C17", compare[3], i1[3]);
- }
- string[] s1 = { "red", "green", "blue" };
- Array.Clear(s1, 0, 3);
- {
- string[] compare = {null, null, null};
- AssertEquals("#C18", compare[0], s1[0]);
- AssertEquals("#C19", compare[1], s1[1]);
- AssertEquals("#C20", compare[2], s1[2]);
- }
- }
- public void TestClone() {
- char[] c1 = {'a', 'b', 'c'};
- char[] c2 = (char[])c1.Clone();
- AssertEquals("#D01", c1[0], c2[0]);
- AssertEquals("#D02", c1[1], c2[1]);
- AssertEquals("#D03", c1[2], c2[2]);
- char[] d10 = {'a', 'b'};
- char[] d11 = {'a', 'c'};
- char[] d12 = {'b', 'c'};
- char[][] d1 = {d10, d11, d12};
- char[][] d2 = (char[][])d1.Clone();
- AssertEquals("#D04", d1[0], d2[0]);
- AssertEquals("#D05", d1[1], d2[1]);
- AssertEquals("#D06", d1[2], d2[2]);
- d1[0][0] = 'z';
- AssertEquals("#D07", d1[0], d2[0]);
- }
- public void TestCopy() {
- {
- bool errorThrown = false;
- try {
- Char[] c1 = {};
- Array.Copy(c1, null, 1);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#E01", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Char[] c1 = {};
- Array.Copy(null, c1, 1);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#E02", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Char[] c1 = new Char[1];
- Char[,] c2 = new Char[1,1];
- Array.Copy(c1, c2, 1);
- } catch (RankException) {
- errorThrown = true;
- }
- Assert("#E03", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Char[] c1 = new Char[1];
- string[] s1 = new String[1];
- Array.Copy(c1, s1, 1);
- } catch (ArrayTypeMismatchException) {
- errorThrown = true;
- }
- Assert("#E04", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Char[] c1 = new Char[1];
- Object[] o1 = new Object[1];
- o1[0] = "hello";
- Array.Copy(o1, c1, 1);
- } catch (InvalidCastException) {
- errorThrown = true;
- }
- Assert("#E05", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Char[] c1 = new Char[1];
- Char[] c2 = new Char[1];
- Array.Copy(c1, c2, -1);
- } catch (ArgumentOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#E06", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Char[] c1 = new Char[1];
- Char[] c2 = new Char[2];
- Array.Copy(c1, c2, 2);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#E07", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Char[] c1 = new Char[1];
- Char[] c2 = new Char[2];
- Array.Copy(c2, c1, 2);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#E08", errorThrown);
- }
- char[] orig = {'a', 'b', 'd', 'a'};
- char[] copy = new Char[4];
- Array.Copy(orig, copy, 4);
- for (int i = 0; i < orig.Length; i++) {
- AssertEquals("#E09(" + i + ")",
- orig[i], copy[i]);
- }
- Array.Clear(copy, 0, copy.Length);
- for (int i = 0; i < orig.Length; i++) {
- AssertEquals("#E10(" + i + ")",
- (char)0, copy[i]);
- }
- Array.Copy(orig, copy, 2);
- AssertEquals("#E11", orig[0], copy[0]);
- AssertEquals("#E12", orig[1], copy[1]);
- Assert("#E13", orig[2] != copy[2]);
- Assert("#E14", orig[3] != copy[3]);
- }
- public void TestCopy2() {
- {
- bool errorThrown = false;
- try {
- Char[] c1 = new Char[2];
- Char[] c2 = new Char[2];
- Array.Copy(c2, 1, c1, 0, 2);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#E31", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Char[] c1 = new Char[2];
- Char[] c2 = new Char[2];
- Array.Copy(c2, 0, c1, 1, 2);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#E32", errorThrown);
- }
-
- char[] orig = {'a', 'b', 'd', 'a'};
- char[] copy = new Char[4];
- Array.Copy(orig, 1, copy, 1, 3);
- Assert("#E33", copy[0] != orig[0]);
- for (int i = 1; i < orig.Length; i++) {
- AssertEquals("#E34(" + i + ")",
- orig[i], copy[i]);
- }
- Array.Clear(copy, 0, copy.Length);
- Array.Copy(orig, 1, copy, 0, 2);
- AssertEquals("#E35", orig[1], copy[0]);
- AssertEquals("#E36", orig[2], copy[1]);
- Assert("#E37", copy[2] != orig[2]);
- Assert("#E38", copy[3] != orig[3]);
- }
- public void TestCopyTo() {
- {
- bool errorThrown = false;
- try {
- Char[] c1 = new Char[2];
- c1.CopyTo(null, 2);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#E61", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Char[] c1 = new Char[2];
- Char[,] c2 = new Char[2,2];
- c1.CopyTo(c2, 2);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#E62", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Char[,] c1 = new Char[2,2];
- Char[] c2 = new Char[2];
- c1.CopyTo(c2, -1);
- } catch (RankException) {
- errorThrown = true;
- }
- Assert("#E63", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Char[,] c1 = new Char[2,2];
- Char[] c2 = new Char[2];
- c1.CopyTo(c2, 2);
- } catch (RankException) {
- errorThrown = true;
- }
- Assert("#E64", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Char[] c1 = new Char[2];
- Char[] c2 = new Char[2];
- c1.CopyTo(c2, -1);
- } catch (ArgumentOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#E65", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Char[] c1 = new Char[2];
- Char[] c2 = new Char[2];
- c1.CopyTo(c2, 3);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#E66", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Char[] c1 = new Char[2];
- Char[] c2 = new Char[2];
- c1.CopyTo(c2, 1);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#E67", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- String[] c1 = new String[2];
- Char[] c2 = new Char[2];
- c1.CopyTo(c2, 0);
- } catch (ArrayTypeMismatchException) {
- errorThrown = true;
- }
- Assert("#E68", errorThrown);
- }
- Char[] orig = {'a', 'b', 'c', 'd'};
- Char[] copy = new Char[10];
- Array.Clear(copy, 0, copy.Length);
- orig.CopyTo(copy, 3);
- AssertEquals("#E69", (char)0, copy[0]);
- AssertEquals("#E70", (char)0, copy[1]);
- AssertEquals("#E71", (char)0, copy[2]);
- AssertEquals("#E72", orig[0], copy[3]);
- AssertEquals("#E73", orig[1], copy[4]);
- AssertEquals("#E74", orig[2], copy[5]);
- AssertEquals("#E75", orig[3], copy[6]);
- AssertEquals("#E76", (char)0, copy[7]);
- AssertEquals("#E77", (char)0, copy[8]);
- AssertEquals("#E78", (char)0, copy[9]);
- {
- // The following is valid and must not throw an exception.
- bool errorThrown = false;
- try {
- int[] src = new int [0];
- int[] dest = new int [0];
- src.CopyTo (dest, 0);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#E79", !errorThrown);
- }
- }
- public void TestCreateInstance() {
- {
- bool errorThrown = false;
- try {
- Array.CreateInstance(null, 12);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#F01", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Array.CreateInstance(Type.GetType("System.Char"), -3);
- } catch (ArgumentOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#F02", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Array.CreateInstance(Type.GetType("System.Char"), null);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#F03", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Array.CreateInstance(Type.GetType("System.Char"), null, null);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#F04", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- int[] lengths = new int [0];
- Array.CreateInstance(Type.GetType("System.Char"), lengths);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#F05", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- int[] lengths = new int [1];
- int[] bounds = new int [2];
- Array.CreateInstance(Type.GetType("System.Char"), lengths, bounds);
- errorThrown = true;
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#F06", errorThrown);
- }
- char[] c1 = (char[])Array.CreateInstance(Type.GetType("System.Char"), 12);
- AssertEquals("#F07", 12, c1.Length);
- Array c2 = Array.CreateInstance(Type.GetType("System.Char"), 12, 5);
- AssertEquals("#F08", 2, c2.Rank);
- AssertEquals("#F09", 60, c2.Length);
- {
- int[] lengths = { 3 };
- int[] bounds = { 5 };
- int[] src = { 512, 718, 912 };
- Array array = Array.CreateInstance(typeof(int), lengths, bounds);
- AssertEquals("#F10", 3, array.Length);
- AssertEquals("#F11", 5, array.GetLowerBound(0));
- AssertEquals("#F12", 7, array.GetUpperBound(0));
- src.CopyTo (array, 5);
- for (int i = 0; i < src.Length; i++)
- AssertEquals("#F13(" + i + ")", src[i], array.GetValue(i+5));
- }
- }
- public void TestGetEnumerator() {
- String[] s1 = {"this", "is", "a", "test"};
- IEnumerator en = s1.GetEnumerator ();
- AssertNotNull ("#G01", en);
- Assert ("#G02", en.MoveNext ());
- AssertEquals ("#G03", "this", en.Current);
- Assert ("#G04", en.MoveNext ());
- AssertEquals ("#G05", "is", en.Current);
- Assert ("#G06", en.MoveNext ());
- AssertEquals ("#G07", "a", en.Current);
- Assert ("#G08", en.MoveNext ());
- AssertEquals ("#G09", "test", en.Current);
- Assert ("#G10", !en.MoveNext ());
- en.Reset ();
- Assert("#G11", en.MoveNext ());
- AssertEquals ("#G12", "this", en.Current);
- // mutation does not invalidate array enumerator!
- s1.SetValue ("change", 1);
- Assert ("#G13", en.MoveNext ());
- AssertEquals ("#G14", "change", en.Current);
- }
- public void TestGetEnumeratorMultipleDimension() {
- String[,] s1 = {{"this", "is"}, {"a", "test"}};
- IEnumerator en = s1.GetEnumerator ();
- AssertNotNull ("#AA01", en);
- Assert ("#AA02", en.MoveNext ());
- AssertEquals ("#AA03", "this", en.Current);
- Assert ("#AA04", en.MoveNext ());
- AssertEquals ("#AA05", "is", en.Current);
- Assert ("#AA06", en.MoveNext ());
- AssertEquals ("#AA07", "a", en.Current);
- Assert ("#AA08", en.MoveNext ());
- AssertEquals ("#AA09", "test", en.Current);
- Assert ("#AA10", !en.MoveNext ());
- en.Reset ();
- Assert("#AA11", en.MoveNext ());
- AssertEquals ("#AA12", "this", en.Current);
- int[] idxs = {0,1};
- // mutation does not invalidate array enumerator!
- s1.SetValue ("change", idxs);
- Assert ("#AA13", en.MoveNext ());
- AssertEquals ("#AA14", "change", en.Current);
- }
- public void TestGetEnumeratorNonZeroLowerBounds() {
- int[] myLengthsArray = new int[2] { 3, 5 };
- int[] myBoundsArray = new int[2] { 2, 3 };
- Array myArray=Array.CreateInstance( typeof(String), myLengthsArray, myBoundsArray );
- for ( int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++ )
- for ( int j = myArray.GetLowerBound(1); j <= myArray.GetUpperBound(1); j++ ) {
- int[] myIndicesArray = new int[2] { i, j };
- myArray.SetValue( Convert.ToString(i) + j, myIndicesArray );
- }
- IEnumerator en = myArray.GetEnumerator ();
- AssertNotNull ("#AB01", en);
- // check the first couple of values
- Assert ("#AB02", en.MoveNext ());
- AssertEquals ("#AB03", "23", en.Current);
- Assert ("#AB04", en.MoveNext ());
- AssertEquals ("#AB05", "24", en.Current);
- // then check the last element's value
- string lastElement;
- do {
- lastElement = (string)en.Current;
- } while (en.MoveNext());
- AssertEquals ("#AB06", "47", lastElement);
- }
- public void TestIList_Add () {
- int[] myLengthsArray = new int[2] { 3, 5 };
- int[] myBoundsArray = new int[2] { 2, 3 };
- Array myArray=Array.CreateInstance ( typeof(String), myLengthsArray, myBoundsArray );
- try {
- ((IList)myArray).Add ("can not");
- Fail ("IList.Add should throw");
- }
- catch (NotSupportedException) {
- return;
- }
- catch (Exception) {
- Fail ("IList.Add threw wrong exception type");
- }
- Fail("IList.Add shouldn't get this far");
- }
- public void TestIList_Insert () {
- int[] myLengthsArray = new int[2] { 3, 5 };
- int[] myBoundsArray = new int[2] { 2, 3 };
- Array myArray=Array.CreateInstance ( typeof(String), myLengthsArray, myBoundsArray );
- try {
- ((IList)myArray).Insert (0, "can not");
- Fail ("IList.Insert should throw");
- }
- catch (NotSupportedException) {
- return;
- }
- catch (Exception) {
- Fail ("IList.Insert threw wrong exception type");
- }
- Fail("IList.Insert shouldn't get this far");
- }
- public void TestIList_Remove () {
- int[] myLengthsArray = new int[2] { 3, 5 };
- int[] myBoundsArray = new int[2] { 2, 3 };
- Array myArray=Array.CreateInstance ( typeof(String), myLengthsArray, myBoundsArray );
- try {
- ((IList)myArray).Remove ("can not");
- Fail ("IList.Remove should throw");
- }
- catch (NotSupportedException) {
- return;
- }
- catch (Exception) {
- Fail ("IList.Remove threw wrong exception type");
- }
- Fail("IList.Remove shouldn't get this far");
- }
- public void TestIList_RemoveAt () {
- int[] myLengthsArray = new int[2] { 3, 5 };
- int[] myBoundsArray = new int[2] { 2, 3 };
- Array myArray=Array.CreateInstance ( typeof(String), myLengthsArray, myBoundsArray );
- try {
- ((IList)myArray).RemoveAt (0);
- Fail ("IList.RemoveAt should throw");
- }
- catch (NotSupportedException) {
- return;
- }
- catch (Exception) {
- Fail ("IList.RemoveAt threw wrong exception type");
- }
- Fail("IList.RemoveAt shouldn't get this far");
- }
- public void TestIList_Contains () {
- int[] myLengthsArray = new int[2] { 3, 5 };
- int[] myBoundsArray = new int[2] { 2, 3 };
- Array myArray=Array.CreateInstance ( typeof(String), myLengthsArray, myBoundsArray );
- try {
- bool b = ((IList)myArray).Contains ("23");
- Fail("IList.Contains should throw with multi-dimensional arrays");
- }
- catch (RankException) {
- int[] iArr = new int[3] { 1, 2, 3};
- // check the first and last items
- Assert("AC01", ((IList)iArr).Contains (1));
- Assert("AC02", ((IList)iArr).Contains (3));
- // and one that is definately not there
- Assert("AC03", !((IList)iArr).Contains (42));
- return;
- }
- Fail("Should not get here");
- }
- public void TestIList_IndexOf () {
- int[] myLengthsArray = new int[2] { 3, 5 };
- int[] myBoundsArray = new int[2] { 2, 3 };
- Array myArray=Array.CreateInstance ( typeof(String), myLengthsArray, myBoundsArray );
- try {
- bool b = ((IList)myArray).Contains ("23");
- Fail("IList.Contains should throw with multi-dimensional arrays");
- }
- catch (RankException) {
- int[] iArr = new int[3] { 1, 2, 3};
- // check the first and last items
- AssertEquals("AD01", 0, ((IList)iArr).IndexOf (1));
- AssertEquals("AD02", 2, ((IList)iArr).IndexOf (3));
- // and one that is definately not there
- AssertEquals("AD03", -1, ((IList)iArr).IndexOf (42));
- }
- catch (Exception e) {
- Fail("Unexpected exception: " + e.ToString());
- }
- // check that wierd case whem lowerbound is Int32.MinValue,
- // so that IndexOf() needs to return Int32.MaxValue when it cannot find the object
- int[] myLengthArray = new int[1] { 3 };
- int[] myBoundArray = new int[1] { Int32.MinValue };
- Array myExtremeArray=Array.CreateInstance ( typeof(String), myLengthArray, myBoundArray );
- AssertEquals("AD04", Int32.MaxValue, ((IList)myExtremeArray).IndexOf (42));
- }
- public void TestGetLength() {
- {
- bool errorThrown = false;
- try {
- char[] c1 = {'a', 'b', 'c'};
- c1.GetLength(-1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#H01", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c1 = {'a', 'b', 'c'};
- c1.GetLength(1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#H02", errorThrown);
- }
- char[] c2 = new Char[5];
- AssertEquals("#H03",
- 5, c2.GetLength(0));
- char[,] c3 = new Char[6,7];
- AssertEquals("#H04",
- 6, c3.GetLength(0));
- AssertEquals("#H05",
- 7, c3.GetLength(1));
- }
- public void TestGetLowerBound() {
- {
- bool errorThrown = false;
- try {
- char[] c = {'a', 'b', 'c'};
- c.GetLowerBound(-1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#H31", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c = {'a', 'b', 'c'};
- c.GetLowerBound(1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#H32", errorThrown);
- }
- char[] c1 = new Char[5];
- AssertEquals("#H33",
- 0, c1.GetLowerBound(0));
- char[,] c2 = new Char[4,4];
- AssertEquals("#H34",
- 0, c2.GetLowerBound(0));
- AssertEquals("#H35",
- 0, c2.GetLowerBound(1));
- }
- public void TestGetUpperBound() {
- {
- bool errorThrown = false;
- try {
- char[] c = {'a', 'b', 'c'};
- c.GetUpperBound(-1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#H61", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c = {'a', 'b', 'c'};
- c.GetUpperBound(1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#H62", errorThrown);
- }
- char[] c1 = new Char[5];
- AssertEquals("#H63",
- 4, c1.GetUpperBound(0));
- char[,] c2 = new Char[4,6];
- AssertEquals("#H64",
- 3, c2.GetUpperBound(0));
- AssertEquals("#H65",
- 5, c2.GetUpperBound(1));
- }
- public void TestGetValue1() {
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- c.GetValue(1);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#I01", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c = {'a', 'b', 'c'};
- c.GetValue(-1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#I02", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c = {'a', 'b', 'c'};
- c.GetValue(4);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#I03", errorThrown);
- }
- char[] c1 = {'a', 'b', 'c', 'd'};
- for (int i = 0; i < c1.Length; i++) {
- AssertEquals("#I04(" + i + ")", c1[i], c1.GetValue(i));
- }
- }
- public void TestGetValue2() {
- {
- bool errorThrown = false;
- try {
- char[] c = new Char[2];
- c.GetValue(1,1);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#I21", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- c.GetValue(-1, 1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#I22", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- c.GetValue(4,1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#I23", errorThrown);
- }
- char[,] c1 = new Char[4,6];
- for (int i = 0; i < 24; i++) {
- int first = i / 6;
- int second = i % 6;
- c1[first,second] = (char)(((int)'a')+i);
- }
- for (int i = 0; i < c1.GetLength(0); i++) {
- for (int j = 0; j < c1.GetLength(1); j++) {
- AssertEquals("#I24(" + i + "," + j + ")",
- c1[i,j], c1.GetValue(i, j));
- }
- }
- }
- public void TestGetValue3() {
- {
- bool errorThrown = false;
- try {
- char[] c = new Char[2];
- c.GetValue(1,1,1);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#I41", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,,] c = new Char[2,2,2];
- c.GetValue(-1, 1, 1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#I42", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,,] c = new Char[2,2,2];
- c.GetValue(4,1,1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#I43", errorThrown);
- }
- char[,,] c1 = new Char[4,2,3];
- for (int i = 0; i < 24; i++) {
- int first = i / 6;
- int remains = i % 6;
- int second = remains / 3;
- int third = remains % 3;
- c1[first,second, third] = (char)(((int)'a')+i);
- }
- for (int i = 0; i < c1.GetLength(0); i++) {
- for (int j = 0; j < c1.GetLength(1); j++) {
- for (int k = 0; k < c1.GetLength(2); k++) {
- AssertEquals("#I44(" + i + "," + j + ")",
- c1[i,j,k], c1.GetValue(i,j,k));
- }
- }
- }
- }
- public void TestGetValueN() {
- {
- bool errorThrown = false;
- try {
- char[] c = new Char[2];
- c.GetValue(null);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#I61", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c = new Char[2];
- int[] coords = {1, 1};
- c.GetValue(coords);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#I62", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- int[] coords = {-1, 1};
- c.GetValue(coords);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#I63", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- int[] coords = {4, 1};
- c.GetValue(coords);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#I64", errorThrown);
- }
- char[,] c1 = new Char[4,6];
- for (int i = 0; i < 24; i++) {
- int first = i / 6;
- int second = i % 6;
- c1[first,second] = (char)(((int)'a')+i);
- }
- for (int i = 0; i < c1.GetLength(0); i++) {
- for (int j = 0; j < c1.GetLength(1); j++) {
- int[] coords = {i, j};
- AssertEquals("#I65(" + i + "," + j + ")",
- c1[i,j], c1.GetValue(coords));
- }
- }
- }
- public void TestIndexOf1() {
- {
- bool errorThrown = false;
- try {
- Array.IndexOf(null, "huh?");
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#J01", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- Array.IndexOf(c, "huh?");
- } catch (RankException) {
- errorThrown = true;
- }
- Assert("#J02", errorThrown);
- }
- String[] s1 = {"this", "is", "a", "test"};
- AssertEquals("#J03", -1, Array.IndexOf(s1, null));
- AssertEquals("#J04", -1, Array.IndexOf(s1, "nothing"));
- AssertEquals("#J05", 0, Array.IndexOf(s1, "this"));
- AssertEquals("#J06", 3, Array.IndexOf(s1, "test"));
- }
- public void TestIndexOf2() {
- {
- bool errorThrown = false;
- try {
- Array.IndexOf(null, "huh?", 0);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#J21", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- Array.IndexOf(c, "huh?", 0);
- } catch (RankException) {
- errorThrown = true;
- }
- Assert("#J22", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c = new Char[2];
- Array.IndexOf(c, "huh?", 3);
- } catch (ArgumentOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#J23", errorThrown);
- }
- String[] s1 = {"this", "is", "really", "a", "test"};
- AssertEquals("#J24", -1, Array.IndexOf(s1, null, 1));
- AssertEquals("#J25", -1, Array.IndexOf(s1, "nothing", 1));
- AssertEquals("#J26", -1, Array.IndexOf(s1, "this", 1));
- AssertEquals("#J27", 1, Array.IndexOf(s1, "is", 1));
- AssertEquals("#J28", 4, Array.IndexOf(s1, "test", 1));
- }
- public void TestIndexOf3() {
- {
- bool errorThrown = false;
- try {
- Array.IndexOf(null, "huh?", 0, 1);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#J41", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- Array.IndexOf(c, "huh?", 0, 1);
- } catch (RankException) {
- errorThrown = true;
- }
- Assert("#J42", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c = new Char[2];
- Array.IndexOf(c, "huh?", 3, 1);
- } catch (ArgumentOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#J43", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c = new Char[2];
- Array.IndexOf(c, "huh?", 0, 5);
- } catch (ArgumentOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#J44", errorThrown);
- }
- String[] s1 = {"this", "is", "really", "a", "test"};
- AssertEquals("#J45", -1, Array.IndexOf(s1, null, 1, 3));
- AssertEquals("#J46", -1, Array.IndexOf(s1, "nothing", 1, 3));
- AssertEquals("#J47", -1, Array.IndexOf(s1, "this", 1, 3));
- AssertEquals("#J48", 1, Array.IndexOf(s1, "is", 1, 3));
- AssertEquals("#J49", -1, Array.IndexOf(s1, "test", 1, 3));
- AssertEquals("#J50", 3, Array.IndexOf(s1, "a", 1, 3));
- }
-
- public void TestLastIndexOf1() {
- {
- bool errorThrown = false;
- try {
- Array.LastIndexOf(null, "huh?");
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#K01", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- Array.LastIndexOf(c, "huh?");
- } catch (RankException) {
- errorThrown = true;
- }
- Assert("#K02", errorThrown);
- }
- String[] s1 = {"this", "is", "a", "a", "test"};
- AssertEquals("#K03", -1, Array.LastIndexOf(s1, null));
- AssertEquals("#K04", -1, Array.LastIndexOf(s1, "nothing"));
- AssertEquals("#K05", 0, Array.LastIndexOf(s1, "this"));
- AssertEquals("#K06", 4, Array.LastIndexOf(s1, "test"));
- AssertEquals("#K07", 3, Array.LastIndexOf(s1, "a"));
- }
- public void TestLastIndexOf2() {
- {
- bool errorThrown = false;
- try {
- Array.LastIndexOf(null, "huh?", 0);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#K21", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- Array.LastIndexOf(c, "huh?", 0);
- } catch (RankException) {
- errorThrown = true;
- }
- Assert("#K22", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c = new Char[2];
- Array.LastIndexOf(c, "huh?", 3);
- } catch (ArgumentOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#K23", errorThrown);
- }
- String[] s1 = {"this", "is", "really", "a", "test"};
- AssertEquals("#K24", -1, Array.LastIndexOf(s1, null, 3));
- AssertEquals("#K25", -1, Array.LastIndexOf(s1, "nothing", 3));
- AssertEquals("#K26", -1, Array.LastIndexOf(s1, "test", 3));
- AssertEquals("#K27", 3, Array.LastIndexOf(s1, "a", 3));
- AssertEquals("#K28", 0, Array.LastIndexOf(s1, "this", 3));
- }
- public void TestLastIndexOf3() {
- {
- bool errorThrown = false;
- try {
- Array.LastIndexOf(null, "huh?", 0, 1);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#K41", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- Array.LastIndexOf(c, "huh?", 0, 1);
- } catch (RankException) {
- errorThrown = true;
- }
- Assert("#K42", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c = new Char[2];
- Array.LastIndexOf(c, "huh?", 3, 1);
- } catch (ArgumentOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#K43", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c = new Char[2];
- Array.LastIndexOf(c, "huh?", 0, 5);
- } catch (ArgumentOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#K44", errorThrown);
- }
- String[] s1 = {"this", "is", "really", "a", "test"};
- AssertEquals("#K45",
- -1, Array.LastIndexOf(s1, null, 3, 3));
- AssertEquals("#K46",
- -1, Array.LastIndexOf(s1, "nothing", 3, 3));
- AssertEquals("#K47",
- -1, Array.LastIndexOf(s1, "this", 3, 3));
- AssertEquals("#K48",
- 1, Array.LastIndexOf(s1, "is", 3, 3));
- AssertEquals("#K49",
- -1, Array.LastIndexOf(s1, "test", 3, 3));
- AssertEquals("#K50",
- 3, Array.LastIndexOf(s1, "a", 3, 3));
- }
- public void TestReverse() {
- {
- bool errorThrown = false;
- try {
- Array.Reverse(null);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#L01", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- Array.Reverse(c);
- } catch (RankException) {
- errorThrown = true;
- }
- Assert("#L02", errorThrown);
- }
-
- char[] c1 = {'a', 'b', 'c', 'd'};
- Array.Reverse(c1);
- AssertEquals("#L03", 'd', c1[0]);
- AssertEquals("#L04", 'c', c1[1]);
- AssertEquals("#L05", 'b', c1[2]);
- AssertEquals("#L06", 'a', c1[3]);
- {
- bool errorThrown = false;
- try {
- Array.Reverse(null, 0, 0);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#L07", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- Array.Reverse(c, 0, 0);
- } catch (RankException) {
- errorThrown = true;
- }
- Assert("#L08", errorThrown);
- }
- //{
- //bool errorThrown = false;
- //try {
- // char[] c = new Char[2];
- // Array.Reverse(c, 0, 3);
- //} catch (ArgumentOutOfRangeException) {
- // errorThrown = true;
- //}
- //Assert("#L09", errorThrown);
- //}
- //{
- //bool errorThrown = false;
- //try {
- // char[] c = new Char[2];
- // Array.Reverse(c, 3, 0);
- //} catch (ArgumentOutOfRangeException) {
- // errorThrown = true;
- //}
- //Assert("#L10", errorThrown);
- //}
- char[] c2 = { 'a', 'b', 'c', 'd'};
- Array.Reverse(c2, 1, 2);
- AssertEquals("#L11", 'a', c2[0]);
- AssertEquals("#L12", 'c', c2[1]);
- AssertEquals("#L13", 'b', c2[2]);
- AssertEquals("#L14", 'd', c2[3]);
- }
- public void TestSetValue1() {
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- c.SetValue("buh", 1);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#M01", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c = {'a', 'b', 'c'};
- c.SetValue("buh", -1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#M02", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c = {'a', 'b', 'c'};
- c.SetValue("buh", 4);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#M03", errorThrown);
- }
- char[] c1 = {'a', 'b', 'c', 'd'};
- char[] c2 = new char[4];
- for (int i = 0; i < c1.Length; i++) {
- c2.SetValue(c1[i], i);
- }
- for (int i = 0; i < c1.Length; i++) {
- AssertEquals("#M04(" + i + ")", c1[i], c2[i]);
- }
- int[] c3 = { 1, 2, 3 };
- long[] c4 = new long [3];
- for (int i = 0; i < c3.Length; i++)
- c4.SetValue (c3 [i], i);
- try {
- c3.CopyTo (c4, 0);
- } catch (Exception e) {
- Fail ("c3.CopyTo(): e=" + e);
- }
- for (int i = 0; i < c3.Length; i++)
- Assert ("#M05(" + i + ")", c3[i] == c4[i]);
- Object[] c5 = new Object [3];
- long[] c6 = new long [3];
- try {
- c4.CopyTo (c5, 0);
- } catch (Exception e) {
- Fail ("c4.CopyTo(): e=" + e);
- }
- try {
- c5.CopyTo (c6, 0);
- } catch (Exception e) {
- Fail ("c5.CopyTo(): e=" + e);
- }
- // for (int i = 0; i < c5.Length; i++)
- // Assert ("#M06(" + i + ")", c5[i] == c6[i]);
- }
- public void TestSetValue2() {
- {
- bool errorThrown = false;
- try {
- char[] c = new Char[2];
- c.SetValue("buh", 1,1);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#M21", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- c.SetValue("buh", -1, 1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#M22", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- c.SetValue("buh", 4,1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#M23", errorThrown);
- }
- char[,] c1 = new Char[4,6];
- char[,] c2 = new Char[4,6];
- for (int i = 0; i < 24; i++) {
- int first = i / 6;
- int second = i % 6;
- c1[first,second] = (char)(((int)'a')+i);
- c2.SetValue(c1[first,second], first, second);
- }
- for (int i = 0; i < c1.GetLength(0); i++) {
- for (int j = 0; j < c1.GetLength(1); j++) {
- AssertEquals("#M24(" + i + "," + j + ")",
- c1[i,j], c2[i, j]);
- }
- }
- }
- public void TestSetValue3() {
- {
- bool errorThrown = false;
- try {
- char[] c = new Char[2];
- c.SetValue("buh", 1,1,1);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#M41", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,,] c = new Char[2,2,2];
- c.SetValue("buh", -1, 1, 1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#M42", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,,] c = new Char[2,2,2];
- c.SetValue("buh", 4,1,1);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#M43", errorThrown);
- }
- char[,,] c1 = new Char[4,2,3];
- char[,,] c2 = new Char[4,2,3];
- for (int i = 0; i < 24; i++) {
- int first = i / 6;
- int remains = i % 6;
- int second = remains / 3;
- int third = remains % 3;
- c1[first,second, third] = (char)(((int)'a')+i);
- c2.SetValue(c1[first, second, third], first, second, third);
- }
- for (int i = 0; i < c1.GetLength(0); i++) {
- for (int j = 0; j < c1.GetLength(1); j++) {
- for (int k = 0; k < c1.GetLength(2); k++) {
- AssertEquals("#M44(" + i + "," + j + " )",
- c1[i,j,k], c2[i,j,k]);
- }
- }
- }
- }
- public void TestSetValueN() {
- {
- bool errorThrown = false;
- try {
- char[] c = new Char[2];
- c.SetValue("buh", null);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#M61", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c = new Char[2];
- int[] coords = {1, 1};
- c.SetValue("buh", coords);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#M62", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- int[] coords = {-1, 1};
- c.SetValue("buh", coords);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#M63", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[,] c = new Char[2,2];
- int[] coords = {4, 1};
- c.SetValue("buh", coords);
- } catch (IndexOutOfRangeException) {
- errorThrown = true;
- }
- Assert("#M64", errorThrown);
- }
- char[,] c1 = new Char[4,6];
- char[,] c2 = new Char[4,6];
- for (int i = 0; i < 24; i++) {
- int first = i / 6;
- int second = i % 6;
- c1[first,second] = (char)(((int)'a')+i);
- int[] coords = {first, second};
- c2.SetValue(c1[first,second], coords);
- }
- for (int i = 0; i < c1.GetLength(0); i++) {
- for (int j = 0; j < c1.GetLength(1); j++) {
- AssertEquals("#M65(" + i + "," + j + ")",
- c1[i,j], c2[i,j]);
- }
- }
- }
- public void TestSetValue4() {
- {
- int[] c1 = { 1, 2, 3 };
- long[] c2 = new long [3];
- for (int i = 0; i < c1.Length; i++)
- c2.SetValue (c1 [i], i);
- for (int i = 0; i < c1.Length; i++) {
- Assert ("#M81(" + i + ")", c1[i] == c2[i]);
- AssertEquals ("#M82(" + i + ")", typeof (long), c2[i].GetType ());
- }
- }
- {
- long[] c1 = { 1, 2, 3 };
- int[] c2 = new int [3];
- bool errorThrown = false;
- try {
- c2.SetValue (c1 [0], 0);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- Assert("#M83", errorThrown);
- }
- {
- int[] c1 = { 1, 2, 3 };
- Object[] c2 = new Object [3];
- for (int i = 0; i < c1.Length; i++)
- c2.SetValue (c1 [i], i);
- for (int i = 0; i < c1.Length; i++)
- AssertEquals ("#M84(" + i + ")", c1[i], Convert.ToInt32 (c2[i]));
- }
- {
- Object[] c1 = new Object [3];
- Object[] c2 = new Object [3];
- c1[0] = new Object ();
- for (int i = 0; i < c1.Length; i++)
- c2.SetValue (c1 [i], i);
- for (int i = 0; i < c1.Length; i++)
- AssertEquals ("#M85(" + i + ")", c1[i], c2[i]);
- }
- {
- Object[] c1 = new Object [3];
- string[] c2 = new String [3];
- string test = "hello";
- c1[0] = test;
- c2.SetValue (c1 [0], 0);
- AssertEquals ("#M86", c1[0], c2[0]);
- AssertEquals ("#M87", "hello", c2[0]);
- }
- {
- char[] c1 = { 'a', 'b', 'c' };
- string[] c2 = new string [3];
- try {
- c2.SetValue (c1 [0], 0);
- Fail ("#M88");
- } catch (InvalidCastException) {}
- }
- {
- Single[] c1 = { 1.2F, 2.3F, 3.4F, 4.5F };
- long[] c2 = new long [3];
- try {
- c2.SetValue (c1 [0], 0);
- Fail ("#M89");
- } catch (ArgumentException) {}
- }
- {
- Type[] types = {
- typeof (Boolean),
- typeof (Byte),
- typeof (Char),
- typeof (Double),
- typeof (Int16),
- typeof (Int32),
- typeof (Int64),
- typeof (SByte),
- typeof (Single),
- typeof (UInt16),
- typeof (UInt32),
- typeof (UInt64)
- };
- bool v1 = true;
- Byte v2 = 1;
- Char v3 = 'a';
- Double v4 = -1.2;
- Int16 v5 = -32;
- Int32 v6 = -234;
- Int64 v7 = -34523;
- SByte v8 = -1;
- Single v9 = -4.8F;
- UInt16 v10 = 24234;
- UInt32 v11 = 235354;
- UInt64 v12 = 234552;
- Object[] va1 = { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12 };
- Object[] va2 = { "true", "1", "a", "-1.2", "-32", "-234", "-34523", "-1",
- "-4.8F", "24234", "235354", "234552" };
- Object[][] vt = { va1, va1, va1, va1, va1, va1, va1, va1, va1, va1, va1, va1 };
- int[] arg_ex = {
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
- 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1,
- 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1,
- 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1,
- 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,
- 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1,
- 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
- 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0,
- 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0
- };
- // SetValue
- for (int i = 0; i < types.Length; i++) {
- for (int j = 0; j < types.Length; j++) {
- Array array = Array.CreateInstance (types [j], 2);
- Object value = vt[j][i];
- bool errorThrown = false;
- try {
- array.SetValue (value, 0);
- } catch (ArgumentException) {
- errorThrown = true;
- }
- int ex_index = (i * types.Length) + j;
- AssertEquals ("#M90(" + types [i] + "," + types [j] + ")",
- errorThrown, arg_ex [ex_index] == 1);
- }
- }
- for (int i = 0; i < types.Length; i++) {
- String[] array = new String [2];
- Object value = va1 [i];
- bool errorThrown = false;
- try {
- array.SetValue (value, 0);
- } catch (InvalidCastException) {
- errorThrown = true;
- }
- Assert ("#M91(" + types [i] + ")", errorThrown);
- }
- for (int i = 0; i < types.Length; i++) {
- Array array = Array.CreateInstance (types [i], 2);
- Object value = va2 [i];
- bool errorThrown = false;
- try {
- array.SetValue (value, 0);
- } catch (InvalidCastException) {
- errorThrown = true;
- }
- Assert ("#M92(" + types [i] + ")", errorThrown);
- }
- for (int i = 0; i < types.Length; i++) {
- Array array = Array.CreateInstance (types [i], 2);
- Object value = null;
- bool errorThrown = false;
- try {
- array.SetValue (value, 0);
- } catch (InvalidCastException) {
- errorThrown = true;
- }
- Assert ("#M93(" + types [i] + ")", !errorThrown);
- }
- // Copy
- for (int i = 0; i < types.Length; i++) {
- for (int j = 0; j < types.Length; j++) {
- Array source = Array.CreateInstance (types [i], 2);
- Array array = Array.CreateInstance (types [j], 2);
- source.SetValue (vt[j][i], 0);
- source.SetValue (vt[j][i], 1);
- bool errorThrown = false;
- try {
- Array.Copy (source, array, 2);
- } catch (ArrayTypeMismatchException) {
- errorThrown = true;
- }
- int ex_index = (i * types.Length) + j;
- AssertEquals ("#M94(" + types [i] + "," + types [j] + ")",
- errorThrown, arg_ex [ex_index] == 1);
- }
- }
- for (int i = 0; i < types.Length; i++) {
- Array source = Array.CreateInstance (types [i], 2);
- String[] array = new String [2];
- source.SetValue (va1 [i], 0);
- source.SetValue (va1 [i], 1);
- bool errorThrown = false;
- try {
- Array.Copy (source, array, 2);
- } catch (ArrayTypeMismatchException) {
- errorThrown = true;
- }
- Assert ("#M95(" + types [i] + ")", errorThrown);
- }
- for (int i = 0; i < types.Length; i++) {
- String[] source = new String [2];
- Array array = Array.CreateInstance (types [i], 2);
- source.SetValue (va2 [i], 0);
- source.SetValue (va2 [i], 1);
- bool errorThrown = false;
- try {
- Array.Copy (source, array, 2);
- } catch (ArrayTypeMismatchException) {
- errorThrown = true;
- }
- Assert ("#M96(" + types [i] + ")", errorThrown);
- }
- }
- }
- public void TestSort() {
- {
- bool errorThrown = false;
- try {
- Array.Sort(null);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#N01", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- Array.Sort(null, 0, 1);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#N02", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c1 = new Char[2];
- Array.Sort(null, c1);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#N03", errorThrown);
- }
- {
- bool errorThrown = false;
- try {
- char[] c1 = new Char[2];
- Array.Sort(null, c1, 0, 1);
- } catch (ArgumentNullException) {
- errorThrown = true;
- }
- Assert("#N04", errorThrown);
- }
- // note: null second array => just sort first array
- char[] starter = {'d', 'b', 'f', 'e', 'a', 'c'};
- int[] starter1 = {1,2,3,4,5,6};
- {
- char[] c1 = (char[])starter.Clone();
- Array.Sort(c1);
- AssertEquals("#N21", 'a', c1[0]);
- AssertEquals("#N22", 'b', c1[1]);
- AssertEquals("#N23", 'c', c1[2]);
- AssertEquals("#N24", 'd', c1[3]);
- AssertEquals("#N25", 'e', c1[4]);
- AssertEquals("#N26", 'f', c1[5]);
- }
- {
- char[] c1 = (char[])starter.Clone();
- int[] i1 = (int[])starter1.Clone();
- Array.Sort(c1, i1);
- AssertEquals("#N41", 'a', c1[0]);
- AssertEquals("#N42", 'b', c1[1]);
- AssertEquals("#N43", 'c', c1[2]);
- AssertEquals("#N44", 'd', c1[3]);
- AssertEquals("#N45", 'e', c1[4]);
- AssertEquals("#N46", 'f', c1[5]);
- AssertEquals("#N47", 5, i1[0]);
- AssertEquals("#N48", 2, i1[1]);
- AssertEquals("#N49", 6, i1[2]);
- AssertEquals("#N50", 1, i1[3]);
- AssertEquals("#N51", 4, i1[4]);
- AssertEquals("#N52", 3, i1[5]);
- }
- {
- char[] c1 = (char[])starter.Clone();
- Array.Sort(c1, 1, 4);
- AssertEquals("#N61", 'd', c1[0]);
- AssertEquals("#N62", 'a', c1[1]);
- AssertEquals("#N63", 'b', c1[2]);
- AssertEquals("#N64", 'e', c1[3]);
- AssertEquals("#N65", 'f', c1[4]);
- AssertEquals("#N66", 'c', c1[5]);
- }
- {
- char[] c1 = (char[])starter.Clone();
- int[] i1 = (int[])starter1.Clone();
- Array.Sort(c1, i1, 1, 4);
- AssertEquals("#N81", 'd', c1[0]);
- AssertEquals("#N82", 'a', c1[1]);
- AssertEquals("#N83", 'b', c1[2]);
- AssertEquals("#N84", 'e', c1[3]);
- AssertEquals("#N85", 'f', c1[4]);
- AssertEquals("#N86", 'c', c1[5]);
- AssertEquals("#N87", 1, i1[0]);
- AssertEquals("#N88", 5, i1[1]);
- AssertEquals("#N89", 2, i1[2]);
- AssertEquals("#N90", 4, i1[3]);
- AssertEquals("#N91", 3, i1[4]);
- AssertEquals("#N92", 6, i1[5]);
- }
- }
- // TODO - TestSort passed-in IComparable versions
- }
- }
|