1 module ArrayListDemo;
2 
3 import common;
4 
5 import hunt.collection.AbstractList;
6 import hunt.collection.ArrayList;
7 import hunt.collection.Collections;
8 import hunt.collection.List;
9 
10 import std.stdio;
11 import std.conv;
12 import std.range;
13 
14 // http://www.java2novice.com/java-collections-and-util/arraylist/
15 class ArrayListDemo
16 {
17     void testBasicOperations()
18     {
19         ArrayList!(string) al = new ArrayList!(string)();
20         //add elements to the ArrayList
21         al.add("JAVA");
22         al.add("C++");
23         al.add("PERL");
24         al.add("PHP");
25         writeln(al);
26         assert(al.size() == 4);
27         writeln("\nIterating...");
28         foreach (string v; al)
29         {
30             writeln(v);
31         }
32 
33         //get elements by index
34         writeln("\nIndexing...");
35         writeln("Element at index 0: " ~ al[0]);
36         writeln("Element at index 1: " ~ al.get(1));
37         writeln("Does list contains JAVA? " ~ al.contains("JAVA").to!string());
38 
39         //add elements at a specific index
40         writeln("\nAdding...");
41         al.add(2, "PLAY");
42 
43         assert(al.size() == 5);
44         assert(al[2] == "PLAY");
45 
46         writeln(al);
47         writeln("Is arraylist empty? " ~ al.isEmpty().to!string());
48         writeln("Index of PERL is " ~ al.indexOf("PERL").to!string());
49         writeln("Size of the arraylist is: " ~ al.size().to!string());
50 
51         writeln("\nRemoving...");
52         al.removeAt(2);
53         assert(al.size() == 4);
54         assert(al[2] != "PLAY");
55         writeln(al);
56 
57         writeln("\nClearing...");
58         al.clear();
59         writeln("After clear ArrayList:" ~ al.toString());
60         assert(al.size() == 0);
61 
62     }
63 
64     void testAddListElements()
65     {
66         ArrayList!(string) arrl = new ArrayList!(string)();
67         //adding elements to the end
68         arrl.add("First");
69         arrl.add("Second");
70         arrl.add("Third");
71         arrl.add("Random");
72         writeln("Actual ArrayList:" ~ arrl.toString());
73         List!(string) list = new ArrayList!(string)();
74         list.add("one");
75         list.add("two");
76         arrl.addAll(list);
77         writeln("After Copy: " ~ arrl.toString());
78     }
79 
80     void testContains()
81     {
82         ArrayList!(string) arrl = new ArrayList!(string)();
83         //adding elements to the end
84         arrl.add("First");
85         arrl.add("Second");
86         arrl.add("Third");
87         arrl.add("Random");
88         writeln("Actual ArrayList:" ~ arrl.toString());
89 
90         List!(string) list = new ArrayList!(string)();
91         list.add("Second");
92         list.add("Random");
93         writeln("Does ArrayList contains all list elements?: " ~ arrl.containsAll(list)
94                 .to!string());
95         list.add("one");
96         writeln("Does ArrayList contains all list elements?: " ~ arrl.containsAll(list)
97                 .to!string());
98     }
99 
100     // void testSubList()
101     // {
102     //     ArrayList!(string) arrl = new ArrayList!(string)();
103     //     //adding elements to the end
104     //     arrl.add("First");
105     //     arrl.add("Second");
106     //     arrl.add("Third");
107     //     arrl.add("Random");
108     //     arrl.add("Click");
109     //     writeln("Actual ArrayList:" ~ arrl.toString());
110     //     List!(string) list = arrl.subList(2, 4);
111     //     writeln("Sub List: " ~ list.toString());
112     // }
113 
114     // void testReverse()
115     // {
116     //     ArrayList!(string) list = new ArrayList!(string)();
117     // 	list.add("Java");
118     // 	list.add("Cric");
119     // 	list.add("Play");
120     // 	list.add("Watch");
121     // 	list.add("Glass");
122     // 	Collections.reverse(list);
123     // 	writeln("Results after reverse operation:");
124     // 	foreach(string str; list){
125     // 		writeln(str);
126     // 	}
127     // }
128 
129     // void testShuffle()
130     // {
131     //     ArrayList!(string) list = new ArrayList!(string)();
132     //     list.add("Java");
133     //     list.add("Cric");
134     //     list.add("Play");
135     //     list.add("Watch");
136     //     list.add("Glass");
137     //     list.add("Movie");
138     //     list.add("Girl");
139 
140     //     Collections.shuffle(list);
141     //     writeln("Results after shuffle operation:");
142     //     foreach(string str; list){
143     //         writeln(str);
144     //     }
145 
146     //     Collections.shuffle(list);
147     //     writeln("Results after shuffle operation:");
148     //     foreach(string str; list){
149     //         writeln(str);
150     //     }
151     // }
152 
153     // void testSwap()
154     // {
155     //     ArrayList!(string) list = new ArrayList!(string)();
156     // 	list.add("Java");
157     // 	list.add("Cric");
158     // 	list.add("Play");
159     // 	list.add("Watch");
160     // 	list.add("Glass");
161     // 	list.add("Movie");
162     // 	list.add("Girl");
163 
164     // 	Collections.swap(list, 2, 5);
165     // 	writeln("Results after swap operation:");
166     // 	foreach(string str; list){
167     // 		writeln(str);
168     // 	}
169     // }
170 
171 }