1 // Licensed to the .NET Foundation under one or more agreements. 2 // The .NET Foundation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 using System.Collections.Generic; 6 using Xunit; 7 8 namespace System.Collections.Tests 9 { 10 public class ArrayListBasicTests : ArrayListIListTestBase 11 { NonGenericIListFactory()12 protected override IList NonGenericIListFactory() => new ArrayList(); 13 } 14 15 public class ArrayListSynchronizedTests : ArrayListIListTestBase 16 { 17 protected override bool ExpectedIsSynchronized => true; 18 NonGenericIListFactory()19 protected override IList NonGenericIListFactory() => NonGenericIListFactory(0); NonGenericIListFactory(int count)20 protected override IList NonGenericIListFactory(int count) => ArrayList.Synchronized(Helpers.CreateIntArrayList(count)); 21 } 22 23 public class ArrayListSynchronizedILstTests : ArrayListIListTestBase 24 { 25 protected override bool ExpectedIsSynchronized => true; 26 NonGenericIListFactory()27 protected override IList NonGenericIListFactory() => NonGenericIListFactory(0); NonGenericIListFactory(int count)28 protected override IList NonGenericIListFactory(int count) => ArrayList.Synchronized((IList)Helpers.CreateIntArrayList(count)); 29 } 30 31 public class ArrayListFixedSizeTests : ArrayListIListTestBase 32 { 33 protected override bool ExpectedFixedSize => true; 34 NonGenericIListFactory()35 protected override IList NonGenericIListFactory() => NonGenericIListFactory(0); NonGenericIListFactory(int count)36 protected override IList NonGenericIListFactory(int count) => ArrayList.FixedSize(Helpers.CreateIntArrayList(count)); 37 } 38 39 public class ArrayListFixedIListSizeTests : ArrayListIListTestBase 40 { 41 protected override bool ExpectedFixedSize => true; 42 NonGenericIListFactory()43 protected override IList NonGenericIListFactory() => NonGenericIListFactory(0); NonGenericIListFactory(int count)44 protected override IList NonGenericIListFactory(int count) => ArrayList.FixedSize((IList)Helpers.CreateIntArrayList(count)); 45 } 46 47 public class ArrayListReadOnlyTests : ArrayListIListTestBase 48 { 49 protected override bool ExpectedFixedSize => true; 50 protected override bool IsReadOnly => true; 51 NonGenericIListFactory()52 protected override IList NonGenericIListFactory() => NonGenericIListFactory(0); NonGenericIListFactory(int count)53 protected override IList NonGenericIListFactory(int count) => ArrayList.ReadOnly(Helpers.CreateIntArrayList(count)); 54 } 55 56 public class ArrayListReadOnlyIListTests : ArrayListIListTestBase 57 { 58 protected override bool ExpectedFixedSize => true; 59 protected override bool IsReadOnly => true; 60 NonGenericIListFactory()61 protected override IList NonGenericIListFactory() => NonGenericIListFactory(0); NonGenericIListFactory(int count)62 protected override IList NonGenericIListFactory(int count) => ArrayList.ReadOnly((IList)Helpers.CreateIntArrayList(count)); 63 } 64 65 public class ArrayListAdapterTests : ArrayListIListTestBase 66 { NonGenericIListFactory()67 protected override IList NonGenericIListFactory() => NonGenericIListFactory(0); NonGenericIListFactory(int count)68 protected override IList NonGenericIListFactory(int count) => ArrayList.Adapter(Helpers.CreateIntArrayList(count)); 69 } 70 71 public class ArrayListRangeTests : ArrayListIListTestBase 72 { NonGenericIListFactory()73 protected override IList NonGenericIListFactory() => NonGenericIListFactory(0); NonGenericIListFactory(int count)74 protected override IList NonGenericIListFactory(int count) => Helpers.CreateIntArrayList(count).GetRange(0, count); 75 } 76 77 public abstract class ArrayListIListTestBase : IList_NonGeneric_Tests 78 { 79 protected override bool Enumerator_Current_UndefinedOperation_Throws => true; 80 81 protected override Type ICollection_NonGeneric_CopyTo_ArrayOfEnumType_ThrowType => typeof(InvalidCastException); 82 protected override Type ICollection_NonGeneric_CopyTo_ArrayOfIncorrectReferenceType_ThrowType => typeof(InvalidCastException); 83 protected override Type ICollection_NonGeneric_CopyTo_ArrayOfIncorrectValueType_ThrowType => typeof(InvalidCastException); 84 protected override Type ICollection_NonGeneric_CopyTo_NonZeroLowerBound_ThrowType => typeof(ArgumentOutOfRangeException); 85 CreateT(int seed)86 protected override object CreateT(int seed) 87 { 88 int stringLength = seed % 10 + 5; 89 Random rand = new Random(seed); 90 byte[] bytes = new byte[stringLength]; 91 rand.NextBytes(bytes); 92 return Convert.ToBase64String(bytes); 93 } 94 } 95 } 96