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