// // MonoTests.System.Security.Policy.EvidenceTest // // Author(s): // Jackson Harper (Jackson@LatitudeGeo.com) // // (C) 2001 Jackson Harper, All rights reserved. using System; using System.Collections; using System.Security.Policy; using NUnit.Framework; namespace MonoTests.System.Security.Policy { public class EvidenceTest : TestCase { protected override void SetUp() { } public void TestDefaultConstructor() { Evidence evidence = new Evidence (); AssertEquals ("Default constructor count should be zero", evidence.Count, 0); AssertEquals ("Default constructor host enumerator MoveNext() should be false", evidence.GetHostEnumerator().MoveNext(), false); AssertEquals ("Default constructor assembly enumerator MoveNext() should be false", evidence.GetAssemblyEnumerator().MoveNext(), false); AssertEquals ("Default constructor enumerator MoveNext() should be false", evidence.GetEnumerator().MoveNext(), false); } public void TestMultipleConstructor() { Evidence evidence; object[] hostarray = new object[10]; object[] assemarray = new object[10]; evidence = new Evidence ( hostarray, assemarray ); AssertEquals ( "Count of multiple arg constructor should equal 20", evidence.Count, 20 ); } public void TestCopyConstructor() { Evidence evidence1, evidence2; object[] hostlist = { "host-1", "host-2", "host-3", "host-4" }; object[] asmblist = { "asmb-1", "asmb-2", "asmb-3", "asmb-4" }; evidence1 = new Evidence (hostlist, asmblist); evidence2 = new Evidence (evidence1); AssertEquals("Copy constructor counts do not match", evidence1.Count, evidence2.Count); } public void TestAddAssembly() { Evidence evidence = new Evidence (); object[] comparray = new object[100]; string obj; int index; for (int i=0; i<100; i++) { obj = String.Format ("asmb-{0}", i+1); comparray[i] = obj; evidence.AddAssembly (obj); AssertEquals (evidence.Count, i+1); } index = 0; foreach (object compobj in evidence) { AssertEquals ("Comparison object does not equal evidence assembly object", comparray[index++], compobj); } } public void TestAddHost() { Evidence evidence = new Evidence (); object[] comparray = new object[100]; string obj; int index; for (int i=0; i<100; i++) { obj = String.Format ("asmb-{0}", i+1); comparray[i] = obj; evidence.AddAssembly ( obj ); AssertEquals (evidence.Count, i+1); } index = 0; foreach (object compobj in evidence) { AssertEquals ("Comparison object does not equal evidence host object", comparray[index++], compobj); } } public void TestMultiArgConstructorForEach() { object[] hostarray = { "host-1", "host-2", "host-3", "host-4" }; object[] asmbarray = { "asmb-1", "asmb-2", "asmb-3", "asmb-4" }; ArrayList compare = new ArrayList (); Evidence evidence = new Evidence (hostarray, asmbarray); int i; compare.AddRange (hostarray); compare.AddRange (asmbarray); i = 0; foreach (object obj in evidence) { AssertEquals (obj, compare[i++]); } } public void TestEnumeratorReset() { object[] hostarray = { "host-1", "host-2", "host-3", "host-4" }; object[] asmbarray = { "asmb-1", "asmb-2", "asmb-3", "asmb-4" }; ArrayList compare = new ArrayList (); Evidence evidence = new Evidence (hostarray, asmbarray); IEnumerator enumerator; int i; compare.AddRange (hostarray); compare.AddRange (asmbarray); i = 0; enumerator = evidence.GetEnumerator (); while (enumerator.MoveNext ()) { AssertEquals (enumerator.Current, compare[i++]); } enumerator.Reset (); i = 0; while (enumerator.MoveNext ()) { AssertEquals (enumerator.Current, compare[i++]); } } public void TestGetHostEnumerator() { object[] hostarray = { "host-1", "host-2", "host-3", "host-4" }; object[] asmbarray = { "asmb-1", "asmb-2" }; Evidence evidence; IEnumerator enumerator; int i; evidence = new Evidence (hostarray, asmbarray); enumerator = evidence.GetHostEnumerator (); i = 0; while (enumerator.MoveNext ()) { AssertEquals (enumerator.Current, hostarray[i++]); } } public void TestGetHostAssemblyEnumerator() { object[] hostarray = { "host-1", "host-2", "host-3", "host-4" }; object[] asmbarray = { "asmb-1", "asmb-2", "asmb-3", "asmb-4" }; Evidence evidence; IEnumerator enumerator; int i; evidence = new Evidence (hostarray, asmbarray); enumerator = evidence.GetAssemblyEnumerator (); i = 0; while (enumerator.MoveNext()) { AssertEquals (enumerator.Current, asmbarray[i++]); } } public void TestCount() { object[] hostarray = { "host-1", "host-2", "host-3", "host-4" }; object[] asmbarray = { "asmb-1", "asmb-2", "asmb-3", "asmb-4" }; Evidence evidence; evidence = new Evidence (hostarray, asmbarray); Assertion.AssertEquals (evidence.Count, 8); for( int i=0; i<100; i++ ) { if ( 0 == i%2 ) { evidence.AddHost (String.Format ("host-{0}", i + 5) ); } else { evidence.AddAssembly (String.Format ("asmb-{0}", i + 5)); } AssertEquals (evidence.Count, 9 + i); } } public void TestNullCopyToException() { Evidence evidence; evidence = new Evidence (); evidence.AddHost ("host-1"); try { evidence.CopyTo (null, 100); Fail ("CopyTo should throw exception when recieving a null array"); } catch (Exception e) { Assert ("Should have caught an ArgumentNull Exception", e is ArgumentNullException); } } /// /// No Exception will be generated because the copy won't run because the evidence list is empty /// public void TestCopyToNoException() { Evidence evidence = new Evidence ();; evidence.CopyTo (null, 100); } public void TestArgOutOfRangeCopyToException() { Evidence evidence = new Evidence (new object[10], new object[10]); try { evidence.CopyTo (new object[10], -100); Fail ("CopyTo should throw exception when recieving a negative index"); } catch (Exception e) { Assert("Should have caught an ArgumentOutOfRangeException Exception", e is ArgumentOutOfRangeException); } } /// /// No Exception will be generated because the copy won't run because the evidence list is empty /// public void TestArgOutOfRangeCopyToNoException() { Evidence evidence = new Evidence (); evidence.CopyTo (new object[10], -100); } public void BadMergeTest() { Evidence evidence, evidence2; evidence = new Evidence (null, null); evidence2 = new Evidence (); } public void MergeTest() { Evidence evidence, evidence2; evidence = new Evidence (new object[10], new object[10]); evidence2 = new Evidence (); evidence2.Merge (evidence); } } }