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