1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
/* testarraylist.vala
*
* Copyright (C) 2008 Jürg Billeter
* Copyright (C) 2009 Didier Villevalois, Julien Peeters
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Author:
* Jürg Billeter <j@bitron.ch>
* Didier 'Ptitjes Villevalois <ptitjes@free.fr>
* Julien Peeters <contact@julienpeeters.fr>
*/
using Gee;
public class ArrayListTests : ListTests {
public ArrayListTests () {
base ("ArrayList");
add_test ("[ArrayList] selected functions", test_selected_functions);
add_test ("[ArrayList] GObject properties", test_gobject_properties);
add_test ("[ArrayList] small sort (insertion)", test_small_sort);
add_test ("[ArrayList] big sort (timsort)", test_big_sort);
add_test ("[ArrayList] typed to_array calls", test_typed_to_array);
}
private static const int BIG_SORT_SIZE = 1000000;
public override void set_up () {
test_collection = new ArrayList<string> ();
}
public override void tear_down () {
test_collection = null;
}
public void test_selected_functions () {
var test_list = test_collection as ArrayList<string>;
// Check the collection exists
assert (test_list != null);
// Check the selected equal function
assert (test_list.equal_func == str_equal);
}
public new void test_gobject_properties () {
var test_list = test_collection as ArrayList<string>;
// Check the list exists
assert (test_list != null);
Value value;
value = Value (typeof (EqualFunc));
test_list.get_property ("equal-func", ref value);
assert (value.get_pointer () == (void*) test_list.equal_func);
value.unset ();
}
private void test_small_sort () {
var test_list = test_collection as ArrayList<string>;
// Check the collection exists
assert (test_list != null);
test_list.add ("one");
test_list.add ("two");
test_list.add ("three");
test_list.add ("four");
test_list.add ("five");
test_list.add ("six");
test_list.add ("seven");
test_list.add ("eight");
test_list.add ("nine");
test_list.add ("ten");
test_list.add ("eleven");
test_list.add ("twelve");
test_list.sort ();
assert (test_list.get (0) == "eight");
assert (test_list.get (1) == "eleven");
assert (test_list.get (2) == "five");
assert (test_list.get (3) == "four");
assert (test_list.get (4) == "nine");
assert (test_list.get (5) == "one");
assert (test_list.get (6) == "seven");
assert (test_list.get (7) == "six");
assert (test_list.get (8) == "ten");
assert (test_list.get (9) == "three");
assert (test_list.get (10) == "twelve");
assert (test_list.get (11) == "two");
}
private void test_big_sort () {
Gee.List<int32> big_test_list = new ArrayList<int32> ();
for (int i = 0; i < BIG_SORT_SIZE; i++) {
big_test_list.add (GLib.Random.int_range (1, BIG_SORT_SIZE - 1));
}
big_test_list.sort ();
for (int i = 1; i < BIG_SORT_SIZE; i++) {
assert (big_test_list[i - 1] <= big_test_list[i]);
}
}
private void test_typed_to_array () {
// Test with a bool collection
Gee.List<bool> bool_list = new ArrayList<bool> ();
assert (bool_list.add (true));
assert (bool_list.add (true));
assert (bool_list.add (false));
bool[] bool_array = bool_list.to_array ();
int index = 0;
foreach (bool element in bool_list) {
assert (element == bool_array[index++]);
}
// Test with an int collection
Gee.List<int> int_list = new ArrayList<int> ();
assert (int_list.add (1));
assert (int_list.add (2));
assert (int_list.add (3));
int[] int_array = int_list.to_array ();
index = 0;
foreach (int element in int_list) {
assert (element == int_array[index++]);
}
// Test with a double collection
Gee.List<double?> double_list = new ArrayList<double?> ();
assert (double_list.add (1.0d));
assert (double_list.add (1.5d));
assert (double_list.add (2.0d));
#if VALA_0_16
double?[] double_array = double_list.to_array ();
#else
double[] double_array = double_list.to_array ();
#endif
index = 0;
foreach (double element in double_list) {
assert (element == double_array[index++]);
}
}
}
|