[libgee] Add generic tests for collections and lists and refactor ArrayListTests



commit ed893879bf0573cd056d9ccfd275bd6b097a38d7
Author: Julien Peeters <contact julienpeeters fr>
Date:   Sat Sep 5 18:29:58 2009 +0200

    Add generic tests for collections and lists and refactor ArrayListTests
    
    Fixes part of bug 594241.

 tests/Makefile.am         |   21 +-
 tests/testarraylist.vala  | 1121 +--------------------------------------------
 tests/testcollection.vala |  497 +++++++++++++++++++-
 tests/testlist.vala       |  550 ++++++++++++++++++++++
 tests/testmain.vala       |   30 ++
 5 files changed, 1093 insertions(+), 1126 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index f0c3c52..efa4c39 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -11,14 +11,23 @@ noinst_PROGRAMS = $(TEST_PROGS)
 
 progs_ldadd = $(GLIB_LIBS) ../gee/libgee.la
 
-TEST_PROGS += testarraylist
-testarraylist_VALASOURCES = testarraylist.vala testcollection.vala testcase.vala
-testarraylist_SOURCES = testarraylist.c testcollection.c testcase.c
-$(testarraylist_SOURCES): $(testarraylist_VALASOURCES)
+BUILT_SOURCES = tests.vala.stamp
+
+TEST_PROGS += tests
+tests_VALASOURCES = \
+       testarraylist.vala \
+       testcollection.vala \
+       testlist.vala \
+       testcase.vala \
+       testmain.vala \
+       $(NULL)
+
+tests_SOURCES = tests.vala.stamp $(tests_VALASOURCES:.vala=.c)
+tests.vala.stamp: $(tests_VALASOURCES)
 	$(VALAC) -C --basedir $(top_srcdir) --vapidir $(top_srcdir)/gee --pkg gee-1.0 $^
 	touch $@
-testarraylist_LDADD = $(progs_ldadd)
-EXTRA_DIST += $(testarraylist_VALASOURCES)
+tests_LDADD = $(progs_ldadd)
+EXTRA_DIST += $(tests_VALASOURCES)
 
 TEST_PROGS += testhashmap
 testhashmap_VALASOURCES = testhashmap.vala
diff --git a/tests/testarraylist.vala b/tests/testarraylist.vala
index 1e90a0d..f8e337d 100644
--- a/tests/testarraylist.vala
+++ b/tests/testarraylist.vala
@@ -1,6 +1,7 @@
-/* testhashmap.vala
+/* 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
@@ -18,1128 +19,34 @@
  *
  * Author:
  * 	Jürg Billeter <j bitron ch>
+ * 	Didier 'Ptitjes Villevalois <ptitjes free fr>
+ * 	Julien Peeters <contact julienpeeters fr>
  */
 
 using Gee;
 
-public class ArrayListTests : CollectionTests {
+public class ArrayListTests : ListTests {
 
 	public ArrayListTests () {
 		base ("ArrayList");
-
-		// Methods of List interface
-		add_test("get", test_arraylist_get);
-		add_test("set", test_arraylist_set);
-		add_test("insert", test_arraylist_insert);
-		add_test("remove_at", test_arraylist_remove_at);
-		add_test("index_of", test_arraylist_index_of);
-		add_test ("first", test_arraylist_first);
-		add_test ("last", test_arraylist_last);
-		add_test ("insert_all", test_arraylist_insert_all);
-
-		// Methods of Collection interface
-		add_test("add", test_arraylist_add);
-		add_test("clear", test_arraylist_clear);
-		add_test("contains", test_arraylist_contains);
-		add_test("remove", test_arraylist_remove);
-		add_test("size", test_arraylist_size);
-		add_test ("empty", test_arraylist_empty);
-		add_test ("add_all", test_arraylist_add_all);
-		add_test ("contains_all", test_arraylist_contains_all);
-		add_test ("remove_all", test_arraylist_remove_all);
-		add_test ("retain_all", test_arraylist_retain_all);
-
-		// Methods of Iterable interface
-		add_test("iterator", test_arraylist_iterator);
+		add_test ("[ArrayList] selected functions", test_selected_functions);
 	}
 
 	public override void set_up () {
-		int_collection = new ArrayList<int> ();
-		string_collection = new ArrayList<string> (str_equal);
-		object_collection = new ArrayList<Object> ();
+		test_collection = new Gee.ArrayList<string> ();
 	}
 
 	public override void tear_down () {
-		int_collection = null;
-		string_collection = null;
-		object_collection = null;
-	}
-
-	void test_arraylist_get () {
-		var arraylistOfString = string_collection as Gee.List<string>;
-
-		// Check get for empty list
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.get (0);
-			return;
-		}
-		Test.trap_assert_failed ();
-
-		// Check get for valid index in list with one element
-		arraylistOfString.add ("1");
-		assert (arraylistOfString.get (0) == "1");
-
-		// Check get for indexes out of range
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.get (1);
-			return;
-		}
-		Test.trap_assert_failed ();
-
-		// Check get for invalid index number
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.get (-1);
-			return;
-		}
-		Test.trap_assert_failed ();
-
-		// Check get for valid indexes in list with multiple element
-		arraylistOfString.add ("2");
-		arraylistOfString.add ("3");
-		assert (arraylistOfString.get (0) == "1");
-		assert (arraylistOfString.get (1) == "2");
-		assert (arraylistOfString.get (2) == "3");
-
-		// Check get if list is cleared and empty again
-		arraylistOfString.clear ();
-
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.get (0);
-			return;
-		}
-		Test.trap_assert_failed ();
-	}
-
-	void test_arraylist_set () {
-		var arraylistOfString = string_collection as Gee.List<string>;
-
-		// Check set when list is empty.
-		assert (arraylistOfString.size == 0);
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.set (0, "0");
-			return;
-		}
-		Test.trap_assert_failed ();
-		assert (arraylistOfString.size == 0);
-
-		// Check set when one item is in list
-		arraylistOfString.add ("1"); // Add item "1"
-		assert (arraylistOfString.size == 1);
-		assert (arraylistOfString.get (0) == "1");
-
-		arraylistOfString.set (0, "2"); // Set the item to value 2
-		assert (arraylistOfString.size == 1);
-		assert (arraylistOfString.get (0) == "2");
-
-		// Check set when index out of range
-		assert (arraylistOfString.size == 1);
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.set (1, "0");
-			return;
-		}
-		Test.trap_assert_failed ();
-		assert (arraylistOfString.size == 1);
-	}
-
-	void test_arraylist_insert () {
-		var arraylistOfString = string_collection as Gee.List<string>;
-
-		// Check inserting in empty list
-		// Inserting at index 1
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.insert (1, "0");
-			return;
-		}
-		Test.trap_assert_failed ();
-
-		// Inserting at index 0
-		assert (arraylistOfString.size == 0);
-		arraylistOfString.insert (0, "10");
-		assert (arraylistOfString.size == 1);
-		assert (arraylistOfString.get (0) == "10");
-
-		// Check insert to the beginning
-		arraylistOfString.insert (0, "5");
-		assert (arraylistOfString.get (0) == "5");
-		assert (arraylistOfString.get (1) == "10");
-
-		// Check insert in between
-		arraylistOfString.insert (1, "7");
-		assert (arraylistOfString.get (0) == "5");
-		assert (arraylistOfString.get (1) == "7");
-		assert (arraylistOfString.get (2) == "10");
-
-		// Check insert into index out of current range
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.insert (4, "20");
-			return;
-		}
-		Test.trap_assert_failed ();
-
-		// Check insert to the end
-		arraylistOfString.insert (3, "20");
-		assert (arraylistOfString.get (0) == "5");
-		assert (arraylistOfString.get (1) == "7");
-		assert (arraylistOfString.get (2) == "10");
-		assert (arraylistOfString.get (3) == "20");
-
-		// Check insert into invalid index
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.insert (-1, "0");
-			return;
-		}
-		Test.trap_assert_failed ();
-
-	}
-
-	void test_arraylist_remove_at () {
-		var arraylistOfString = string_collection as Gee.List<string>;
-
-		// Check removing in empty list
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.remove_at (0);
-			return;
-		}
-		Test.trap_assert_failed ();
-
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.remove_at (1);
-			return;
-		}
-		Test.trap_assert_failed ();
-
-		// add 5 items
-		arraylistOfString.add ("1");
-		arraylistOfString.add ("2");
-		arraylistOfString.add ("3");
-		arraylistOfString.add ("4");
-		arraylistOfString.add ("5");
-		assert (arraylistOfString.size == 5);
-
-		// Check remove_at first
-		arraylistOfString.remove_at (0);
-		assert (arraylistOfString.size == 4);
-		assert (arraylistOfString.get (0) == "2");
-		assert (arraylistOfString.get (1) == "3");
-		assert (arraylistOfString.get (2) == "4");
-		assert (arraylistOfString.get (3) == "5");
-
-		// Check remove_at last
-		arraylistOfString.remove_at (3);
-		assert (arraylistOfString.size == 3);
-		assert (arraylistOfString.get (0) == "2");
-		assert (arraylistOfString.get (1) == "3");
-		assert (arraylistOfString.get (2) == "4");
-
-		// Check remove_at in between
-		arraylistOfString.remove_at (1);
-		assert (arraylistOfString.size == 2);
-		assert (arraylistOfString.get (0) == "2");
-		assert (arraylistOfString.get (1) == "4");
-
-		// Check remove_at when index out of range
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.remove_at (2);
-			return;
-		}
-		Test.trap_assert_failed ();
-
-		// Check remove_at when invalid index
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.remove_at (-1);
-			return;
-		}
-		Test.trap_assert_failed ();
-	}
-
-	void test_arraylist_index_of () {
-		var arraylistOfString = string_collection as Gee.List<string>;
-		// Check empty list
-		assert (arraylistOfString.index_of ("one") == -1);
-
-		// Check one item
-		arraylistOfString.add ("one");
-		assert (arraylistOfString.index_of ("one") == 0);
-		assert (arraylistOfString.index_of ("two") == -1);
-
-		// Check more items
-		arraylistOfString.add ("two");
-		arraylistOfString.add ("three");
-		arraylistOfString.add ("four");
-		assert (arraylistOfString.index_of ("one") == 0);
-		assert (arraylistOfString.index_of ("two") == 1);
-		assert (arraylistOfString.index_of ("three") == 2);
-		assert (arraylistOfString.index_of ("four") == 3);
-		assert (arraylistOfString.index_of ("five") == -1);
-
-		// Check list of ints
-		var arraylistOfInt = int_collection as Gee.List<int>;
-
-		// Check more items
-		arraylistOfInt.add (1);
-		arraylistOfInt.add (2);
-		arraylistOfInt.add (3);
-		assert (arraylistOfInt.index_of (1) == 0);
-		assert (arraylistOfInt.index_of (2) == 1);
-		assert (arraylistOfInt.index_of (3) == 2);
-		assert (arraylistOfInt.index_of (4) == -1);
-
-		// Check list of objects
-		var arraylistOfObjects = object_collection as Gee.List<Object>;
-
-		var object1 = new Object ();
-		var object2 = new Object ();
-		var object3 = new Object ();
-
-		arraylistOfObjects.add (object1);
-		arraylistOfObjects.add (object2);
-		arraylistOfObjects.add (object3);
-
-		assert (arraylistOfObjects.index_of (object1) == 0);
-		assert (arraylistOfObjects.index_of (object2) == 1);
-		assert (arraylistOfObjects.index_of (object3) == 2);
-
-	}
-
-	void test_arraylist_add () {
-		var arraylistOfString = string_collection as Gee.List<string>;
-
-		arraylistOfString.add ("42");
-		assert (arraylistOfString.contains ("42"));
-		assert (arraylistOfString.size == 1);
-
-		// check for correct order of elements
-		arraylistOfString.add ("43");
-		arraylistOfString.add ("44");
-		arraylistOfString.add ("45");
-		assert (arraylistOfString.get (0) == "42");
-		assert (arraylistOfString.get (1) == "43");
-		assert (arraylistOfString.get (2) == "44");
-		assert (arraylistOfString.get (3) == "45");
-		assert (arraylistOfString.size == 4);
-
-		// check adding of ints
-		var arrayListOfInt = int_collection as Gee.List<int>;
-
-		arrayListOfInt.add (42);
-		assert (arrayListOfInt.contains (42));
-		assert (arrayListOfInt.size == 1);
-
-		// check adding of objects
-		var arrayListOfGLibObject = new ArrayList<Object> ();
-
-		var fooObject = new Object();
-		arrayListOfGLibObject.add (fooObject);
-		assert (arrayListOfGLibObject.contains (fooObject));
-		assert (arrayListOfGLibObject.size == 1);
-
+		test_collection = null;
 	}
 
-	void test_arraylist_clear () {
-		var arraylistOfString = string_collection as Collection<string>;
-		assert (arraylistOfString.size == 0);
+	public void test_selected_functions () {
+		var test_list = test_collection as ArrayList<string>;
 
-		// Check clear on empty list
-		arraylistOfString.clear();
-		assert (arraylistOfString.size == 0);
+		// Check the collection exists
+		assert (test_list != null);
 
-		// Check clear one item
-		arraylistOfString.add ("1");
-		assert (arraylistOfString.size == 1);
-		arraylistOfString.clear();
-		assert (arraylistOfString.size == 0);
-
-		// Check clear multiple items
-		arraylistOfString.add ("1");
-		arraylistOfString.add ("2");
-		arraylistOfString.add ("3");
-		assert (arraylistOfString.size == 3);
-		arraylistOfString.clear();
-		assert (arraylistOfString.size == 0);
+		// Check the selected equal function
+		assert (test_list.equal_func == str_equal);
 	}
-
-	void test_arraylist_contains () {
-		var arraylistOfString = string_collection as Gee.List<string>;
-
-		// Check on empty list
-		assert (!arraylistOfString.contains("1"));
-
-		// Check items
-		arraylistOfString.add ("10");
-		assert (arraylistOfString.contains("10"));
-		assert (!arraylistOfString.contains("20"));
-		assert (!arraylistOfString.contains("30"));
-
-		arraylistOfString.add ("20");
-		assert (arraylistOfString.contains("10"));
-		assert (arraylistOfString.contains("20"));
-		assert (!arraylistOfString.contains("30"));
-
-		arraylistOfString.add ("30");
-		assert (arraylistOfString.contains("10"));
-		assert (arraylistOfString.contains("20"));
-		assert (arraylistOfString.contains("30"));
-
-		// Clear and recheck
-		arraylistOfString.clear();
-		assert (!arraylistOfString.contains("10"));
-		assert (!arraylistOfString.contains("20"));
-		assert (!arraylistOfString.contains("30"));
-
-		var arraylistOfInt = int_collection as Gee.List<int>;
-
-		// Check items
-		arraylistOfInt.add (10);
-		assert (arraylistOfInt.contains(10));
-		assert (!arraylistOfInt.contains(20));
-		assert (!arraylistOfInt.contains(30));
-
-		arraylistOfInt.add (20);
-		assert (arraylistOfInt.contains(10));
-		assert (arraylistOfInt.contains(20));
-		assert (!arraylistOfInt.contains(30));
-
-		arraylistOfInt.add (30);
-		assert (arraylistOfInt.contains(10));
-		assert (arraylistOfInt.contains(20));
-		assert (arraylistOfInt.contains(30));
-
-		// Clear and recheck
-		arraylistOfInt.clear();
-		assert (!arraylistOfInt.contains(10));
-		assert (!arraylistOfInt.contains(20));
-		assert (!arraylistOfInt.contains(30));
-	}
-
-	void test_arraylist_remove () {
-		var arraylistOfString = string_collection as Gee.List<string>;
-
-		// Add 5 same elements
-		arraylistOfString.add ("42");
-		arraylistOfString.add ("42");
-		arraylistOfString.add ("42");
-		arraylistOfString.add ("42");
-		arraylistOfString.add ("42");
-
-		// Check remove one element
-		arraylistOfString.remove ("42");
-		assert (arraylistOfString.size == 4);
-		assert (arraylistOfString.contains ("42"));
-
-		// Check remove another one element
-		arraylistOfString.remove ("42");
-		assert (arraylistOfString.size == 3);
-		assert (arraylistOfString.contains ("42"));
-
-		// Clear the list to start from scratch
-		arraylistOfString.clear();
-
-		// Add 5 different elements
-		arraylistOfString.add ("42");
-		arraylistOfString.add ("43");
-		arraylistOfString.add ("44");
-		arraylistOfString.add ("45");
-		arraylistOfString.add ("46");
-		assert (arraylistOfString.size == 5);
-
-		// Check remove first
-		arraylistOfString.remove("42");
-		assert (arraylistOfString.size == 4);
-		assert (arraylistOfString.get (0) == "43");
-		assert (arraylistOfString.get (1) == "44");
-		assert (arraylistOfString.get (2) == "45");
-		assert (arraylistOfString.get (3) == "46");
-
-		// Check remove last
-		arraylistOfString.remove("46");
-		assert (arraylistOfString.size == 3);
-		assert (arraylistOfString.get (0) == "43");
-		assert (arraylistOfString.get (1) == "44");
-		assert (arraylistOfString.get (2) == "45");
-
-		// Check remove in between
-		arraylistOfString.remove("44");
-		assert (arraylistOfString.size == 2);
-		assert (arraylistOfString.get (0) == "43");
-		assert (arraylistOfString.get (1) == "45");
-
-		// Check removing of int element
-		var arraylistOfInt = int_collection as Gee.List<int>;
-
-		// Add 5 different elements
-		arraylistOfInt.add (42);
-		arraylistOfInt.add (43);
-		arraylistOfInt.add (44);
-		arraylistOfInt.add (45);
-		arraylistOfInt.add (46);
-		assert (arraylistOfInt.size == 5);
-
-		// Remove first
-		arraylistOfInt.remove(42);
-		assert (arraylistOfInt.size == 4);
-		assert (arraylistOfInt.get (0) == 43);
-		assert (arraylistOfInt.get (1) == 44);
-		assert (arraylistOfInt.get (2) == 45);
-		assert (arraylistOfInt.get (3) == 46);
-
-		// Remove last
-		arraylistOfInt.remove(46);
-		assert (arraylistOfInt.size == 3);
-		assert (arraylistOfInt.get (0) == 43);
-		assert (arraylistOfInt.get (1) == 44);
-		assert (arraylistOfInt.get (2) == 45);
-
-		// Remove in between
-		arraylistOfInt.remove(44);
-		assert (arraylistOfInt.size == 2);
-		assert (arraylistOfInt.get (0) == 43);
-		assert (arraylistOfInt.get (1) == 45);
-	}
-
-	void test_arraylist_size () {
-		var arraylist = string_collection as Gee.List<string>;
-
-		// Check empty list
-		assert (arraylist.size == 0);
-
-		// Check when one item
-		arraylist.add ("1");
-		assert (arraylist.size == 1);
-
-		// Check when more items
-		arraylist.add ("2");
-		assert (arraylist.size == 2);
-
-		// Check when items cleared
-		arraylist.clear();
-		assert (arraylist.size == 0);
-	}
-
-	void test_arraylist_iterator () {
-		var arraylistOfString = string_collection as Gee.List<string>;
-
-		// Check iterate empty list
-		var iterator = arraylistOfString.iterator ();
-		assert (!iterator.next());
-
-		// Check iterate list
-		arraylistOfString.add ("42");
-		arraylistOfString.add ("43");
-		arraylistOfString.add ("44");
-
-		iterator = arraylistOfString.iterator ();
-		assert (iterator.next());
-		assert (iterator.get () == "42");
-		assert (iterator.next());
-		assert (iterator.get () == "43");
-		assert (iterator.next());
-		assert (iterator.get () == "44");
-		assert (!iterator.next());
-	}
-
-	void test_arraylist_empty () {
-		var arraylist = new ArrayList<int> ();
-
-		// Check empty list
-		assert (arraylist.is_empty);
-
-		// Check when one item
-		arraylist.add (1);
-		assert (!arraylist.is_empty);
-
-		// Check when more items
-		arraylist.add (2);
-		assert (!arraylist.is_empty);
-
-		// Check when items cleared
-		arraylist.clear ();
-		assert (arraylist.is_empty);
-	}
-
-	void test_arraylist_add_all () {
-		var list1 = new ArrayList<int> ();
-		var list2 = new ArrayList<int> ();
-
-		// Check lists empty
-		list1.add_all (list2);
-
-		assert (list1.is_empty);
-		assert (list2.is_empty);
-
-		// Check list1 not empty, list2 is empty
-		list1.add (1);
-		list1.add_all (list2);
-
-		assert (list1.size == 1);
-		assert (list1.contains (1));
-		assert (list2.is_empty);
-
-		list1.clear ();
-		list2.clear ();
-
-		// Check list1 empty, list2 contains 1 element
-		list2.add (1);
-		list1.add_all (list2);
-
-		assert (list1.size == 1);
-		assert (list1.contains (1));
-		assert (list2.size == 1);
-		assert (list2.contains (1));
-
-		list1.clear ();
-		list2.clear ();
-
-		// Check correct order with more elements
-		list1.add (0);
-		list1.add (1);
-		list1.add (2);
-		list2.add (3);
-		list2.add (4);
-		list2.add (5);
-		list1.add_all (list2);
-
-		assert (list1.size == 6);
-		assert (list1.get (0) == 0);
-		assert (list1.get (1) == 1);
-		assert (list1.get (2) == 2);
-		assert (list1.get (3) == 3);
-		assert (list1.get (4) == 4);
-		assert (list1.get (5) == 5);
-
-		assert (list2.size == 3);
-		assert (list2.get (0) == 3);
-		assert (list2.get (1) == 4);
-		assert (list2.get (2) == 5);
-
-		list1.clear ();
-		list2.clear ();
-
-		// Add large collections
-		list1.add (0);
-		list1.add (1);
-		list1.add (2);
-
-		for (int i = 3; i < 103; i++) {
-			list2.add (i);
-		}
-
-		list1.add_all (list2);
-
-		assert (list1.size == 103);
-		assert (list1.get (0) == 0);
-		assert (list1.get (1) == 1);
-		assert (list1.get (2) == 2);
-		assert (list1.get (3) == 3);
-		assert (list1.get (4) == 4);
-		assert (list1.get (99) == 99);
-		assert (list1.get (100) == 100);
-		assert (list1.get (101) == 101);
-		assert (list1.get (102) == 102);
-
-		assert (list2.size == 100);
-
-		list1.clear ();
-		list2.clear ();
-	}
-
-	void test_arraylist_contains_all () {
-		var list1 = new ArrayList<int> ();
-		var list2 = new ArrayList<int> ();
-
-		// Check empty
-		assert (list1.contains_all (list2));
-
-		// list1 has elements, list2 is empty
-		list1.add (1);
-
-		assert (list1.contains_all (list2));
-
-		list1.clear ();
-		list2.clear ();
-
-		// list1 is empty, list2 has elements
-		list2.add (1);
-
-		assert (!list1.contains_all (list2));
-
-		list1.clear ();
-		list2.clear ();
-
-		// list1 and list2 are the same
-		list1.add (1);
-		list1.add (2);
-		list2.add (1);
-		list1.add (2);
-
-		assert (list1.contains_all (list2));
-
-		list1.clear ();
-		list2.clear ();
-
-		// list1 and list2 are the same
-		list1.add (1);
-		list2.add (2);
-
-		assert (!list1.contains_all (list2));
-
-		list1.clear ();
-		list2.clear ();
-
-		// list1 has a subset of list2
-		list1.add (1);
-		list1.add (2);
-		list1.add (3);
-		list1.add (4);
-		list1.add (5);
-		list1.add (6);
-
-		list2.add (2);
-		list2.add (4);
-		list2.add (6);
-
-		assert (list1.contains_all (list2));
-
-		list1.clear ();
-		list2.clear ();
-
-		// list1 has a subset of in all but one element list2
-		list1.add (1);
-		list1.add (2);
-		list1.add (3);
-		list1.add (4);
-		list1.add (5);
-		list1.add (6);
-
-		list2.add (2);
-		list2.add (4);
-		list2.add (6);
-		list2.add (7);
-
-		assert (!list1.contains_all (list2));
-
-		list1.clear ();
-		list2.clear ();
-
-	}
-
-	void test_arraylist_remove_all () {
-		var arraylist1 = new ArrayList<int> ();
-		var arraylist2 = new ArrayList<int> ();
-
-		// Check empty
-		arraylist1.remove_all (arraylist2);
-		assert (arraylist1.is_empty);
-		assert (arraylist2.is_empty);
-
-		// Arraylist1 and arraylist2 have no common elements -> nothing is removed in arraylist1
-		arraylist1.add (1);
-		arraylist1.add (2);
-		arraylist1.add (3);
-		arraylist2.add (4);
-		arraylist2.add (5);
-		arraylist2.add (6);
-
-		arraylist1.remove_all (arraylist2);
-
-		assert (arraylist1.size == 3);
-		assert (arraylist2.size == 3);
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-
-		// Arraylist1 and arraylist2 have all elements the same -> everything is removed in arraylist1 but not arraylist2
-		arraylist1.add (1);
-		arraylist1.add (2);
-		arraylist1.add (3);
-		arraylist2.add (1);
-		arraylist2.add (2);
-		arraylist2.add (3);
-
-		arraylist1.remove_all (arraylist2);
-
-		assert (arraylist1.is_empty);
-		assert (arraylist2.size == 3);
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-
-		// Removing of same elements
-
-		arraylist1.add (1);
-		arraylist1.add (1);
-		arraylist1.add (1);
-		arraylist1.add (1);
-
-		arraylist2.add (1);
-		arraylist2.add (1);
-
-		arraylist1.remove_all (arraylist2);
-
-		assert (arraylist1.size == 0);
-		assert (arraylist2.size == 2);
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-	}
-
-	void test_arraylist_retain_all () {
-		var arraylist1 = new ArrayList<int> ();
-		var arraylist2 = new ArrayList<int> ();
-
-		// Check empty
-
-		assert (arraylist1.is_empty);
-		assert (arraylist2.is_empty);
-
-		arraylist1.retain_all (arraylist2);
-
-		assert (arraylist1.is_empty);
-		assert (arraylist2.is_empty);
-
-
-		// Arraylist1 has elements, arraylist2 is empty -> everything in arraylist1 is removed
-		arraylist1.add (1);
-		arraylist1.add (2);
-		arraylist1.add (3);
-
-		assert (arraylist1.size == 3);
-		assert (arraylist2.size == 0);
-
-		arraylist1.retain_all (arraylist2);
-
-		assert (arraylist1.size == 0);
-		assert (arraylist2.size == 0);
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-
-		// Arraylist1 is empty and arraylist2 has elements -> nothing changes
-		arraylist2.add (4);
-		arraylist2.add (5);
-		arraylist2.add (6);
-
-		assert (arraylist1.size == 0);
-		assert (arraylist2.size == 3);
-
-		arraylist1.retain_all (arraylist2);
-
-		assert (arraylist1.size == 0);
-		assert (arraylist2.size == 3);
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-
-		// Arraylist1 and arraylist2 have no common elements -> everything is removed in arraylist1
-		arraylist1.add (1);
-		arraylist1.add (2);
-		arraylist1.add (3);
-		arraylist2.add (4);
-		arraylist2.add (5);
-		arraylist2.add (6);
-
-		assert (arraylist1.size == 3);
-		assert (arraylist2.size == 3);
-
-		arraylist1.retain_all (arraylist2);
-
-		assert (arraylist1.size == 0);
-		assert (arraylist2.size == 3);
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-
-		// Arraylist1 and arraylist2 have all elements the same -> nothing is removed in arraylist1
-		arraylist1.add (1);
-		arraylist1.add (2);
-		arraylist1.add (3);
-		arraylist2.add (1);
-		arraylist2.add (2);
-		arraylist2.add (3);
-
-		assert (arraylist1.size == 3);
-		assert (arraylist2.size == 3);
-
-		arraylist1.retain_all (arraylist2);
-
-		assert (arraylist1.size == 3);
-		assert (arraylist2.size == 3);
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-
-		// Arraylist1 and arraylist2 have 2 common elements but each also has his own elements -> arraylist1 only retains what is in arraylist2
-		arraylist1.add (1);
-		arraylist1.add (2);
-		arraylist1.add (3);
-		arraylist1.add (4);
-		arraylist1.add (5);
-
-		arraylist2.add (0);
-		arraylist2.add (2);
-		arraylist2.add (3);
-		arraylist2.add (7);
-
-		assert (arraylist1.size == 5);
-		assert (arraylist2.size == 4);
-
-		arraylist1.retain_all (arraylist2);
-
-		assert (arraylist1.size == 2);
-		assert (arraylist2.size == 4);
-
-		assert (arraylist1.contains (2));
-		assert (arraylist2.contains (3));
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-
-		// Removing of same elements when arraylist2 has the same element -> nothing changes
-
-		arraylist1.add (1);
-		arraylist1.add (1);
-		arraylist1.add (1);
-		arraylist1.add (1);
-
-		arraylist2.add (1);
-
-		assert (arraylist1.size == 4);
-		assert (arraylist2.size == 1);
-
-		arraylist1.retain_all (arraylist2);
-
-		assert (arraylist1.size == 4);
-		assert (arraylist2.size == 1);
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-
-		// Removing of same elements when arraylist2 has the NOT same element -> everything is removed
-
-		arraylist1.add (1);
-		arraylist1.add (1);
-		arraylist1.add (1);
-		arraylist1.add (1);
-
-		arraylist2.add (2);
-
-		assert (arraylist1.size == 4);
-		assert (arraylist2.size == 1);
-
-		arraylist1.retain_all (arraylist2);
-
-		assert (arraylist1.size == 0);
-		assert (arraylist2.size == 1);
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-	}
-
-	void test_arraylist_first () {
-		var arraylistOfString = new ArrayList<string> ();
-
-		// Check first for empty list
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.first ();
-			return;
-		}
-		Test.trap_assert_failed ();
-
-		// Check first for list with one element
-		arraylistOfString.add ("1");
-		assert (arraylistOfString.first () == "1");
-		assert (arraylistOfString.first () == arraylistOfString.get (0));
-
-		// Check first for for list with multiple element
-		arraylistOfString.add ("2");
-		arraylistOfString.add ("3");
-		assert (arraylistOfString.first () == "1");
-		assert (arraylistOfString.first () == arraylistOfString.get (0));
-
-		// Check first if list is cleared and empty again
-		arraylistOfString.clear ();
-
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.first ();
-			return;
-		}
-		Test.trap_assert_failed ();
-	}
-
-	void test_arraylist_last () {
-		var arraylistOfString = new ArrayList<string> ();
-
-		// Check last for empty list
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.last ();
-			return;
-		}
-		Test.trap_assert_failed ();
-
-		// Check last for list with one element
-		arraylistOfString.add ("1");
-		assert (arraylistOfString.last () == "1");
-		assert (arraylistOfString.last () == arraylistOfString.get (arraylistOfString.size - 1));
-
-		// Check last for for list with multiple element
-		arraylistOfString.add ("2");
-		arraylistOfString.add ("3");
-		assert (arraylistOfString.last () == "3");
-		assert (arraylistOfString.last () == arraylistOfString.get (arraylistOfString.size - 1));
-
-		// Check last if list is cleared and empty again
-		arraylistOfString.clear ();
-
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylistOfString.last ();
-			return;
-		}
-		Test.trap_assert_failed ();
-	}
-
-	void test_arraylist_insert_all () {
-		var arraylist1 = new ArrayList<int> ();
-		var arraylist2 = new ArrayList<int> ();
-
-		// Insert an empty list
-		arraylist1.add (0);
-		arraylist1.add (1);
-		arraylist1.add (2);
-
-		assert (arraylist1.size == 3);
-		assert (arraylist2.is_empty);
-
-		arraylist1.insert_all (0, arraylist2);
-
-		assert (arraylist1.size == 3);
-		assert (arraylist2.is_empty);
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-
-		// Insert into an empty list at index 0
-		arraylist2.add (0);
-		arraylist2.add (1);
-		arraylist2.add (2);
-
-		assert (arraylist1.is_empty);
-		assert (arraylist2.size == 3);
-
-		arraylist1.insert_all (0, arraylist2);
-
-		assert (arraylist1.size == 3);
-		assert (arraylist2.size == 3);
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-
-		// Insert all into empty list as index 1
-		arraylist2.add (0);
-		arraylist2.add (1);
-		arraylist2.add (2);
-
-		assert (arraylist1.is_empty);
-
-		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT | TestTrapFlags.SILENCE_STDERR)) {
-			arraylist1.insert_all (1, arraylist2);
-			return;
-		}
-		Test.trap_assert_failed ();
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-
-		// Insert all in the beginnig
-		arraylist1.add (3);
-		arraylist1.add (4);
-		arraylist1.add (5);
-
-		arraylist2.add (0);
-		arraylist2.add (1);
-		arraylist2.add (2);
-
-		assert (arraylist1.size == 3);
-		assert (arraylist2.size == 3);
-
-		arraylist1.insert_all (0, arraylist2);
-
-		assert (arraylist1.size == 6);
-		assert (arraylist2.size == 3);
-
-		assert (arraylist1.get (0) == 0);
-		assert (arraylist1.get (1) == 1);
-		assert (arraylist1.get (2) == 2);
-		assert (arraylist1.get (3) == 3);
-		assert (arraylist1.get (4) == 4);
-		assert (arraylist1.get (5) == 5);
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-
-		// Insert all in the middle
-		arraylist1.add (0);
-		arraylist1.add (1);
-		arraylist1.add (5);
-		arraylist1.add (6);
-
-		arraylist2.add (2);
-		arraylist2.add (3);
-		arraylist2.add (4);
-
-		assert (arraylist1.size == 4);
-		assert (arraylist2.size == 3);
-
-		arraylist1.insert_all (2, arraylist2);
-
-		assert (arraylist1.size == 7);
-		assert (arraylist2.size == 3);
-
-		assert (arraylist1.get (0) == 0);
-		assert (arraylist1.get (1) == 1);
-		assert (arraylist1.get (2) == 2);
-		assert (arraylist1.get (3) == 3);
-		assert (arraylist1.get (4) == 4);
-		assert (arraylist1.get (5) == 5);
-		assert (arraylist1.get (6) == 6);
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-
-		// Insert all in at the end
-		arraylist1.add (0);
-		arraylist1.add (1);
-		arraylist1.add (2);
-
-		arraylist2.add (3);
-		arraylist2.add (4);
-		arraylist2.add (5);
-
-		assert (arraylist1.size == 3);
-		assert (arraylist2.size == 3);
-
-		arraylist1.insert_all (3, arraylist2);
-
-		assert (arraylist1.size == 6);
-		assert (arraylist2.size == 3);
-
-		assert (arraylist1.get (0) == 0);
-		assert (arraylist1.get (1) == 1);
-		assert (arraylist1.get (2) == 2);
-		assert (arraylist1.get (3) == 3);
-		assert (arraylist1.get (4) == 4);
-		assert (arraylist1.get (5) == 5);
-
-		arraylist1.clear ();
-		arraylist2.clear ();
-	}
-}
-
-void main (string[] args) {
-	Test.init (ref args);
-
-	ArrayListTests tests = new ArrayListTests ();
-
-	TestSuite.get_root ().add_suite (tests.get_suite ());
-
-	Test.run ();
 }
-
diff --git a/tests/testcollection.vala b/tests/testcollection.vala
index 406448a..88a1b67 100644
--- a/tests/testcollection.vala
+++ b/tests/testcollection.vala
@@ -1,7 +1,7 @@
 /* testcollection.vala
  *
  * Copyright (C) 2008  Jürg Billeter
- * Copyright (C) 2009  Didier Villevalois
+ * 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
@@ -18,7 +18,9 @@
  * 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;
@@ -27,21 +29,490 @@ public abstract class CollectionTests : Gee.TestCase {
 
 	public CollectionTests (string name) {
 		base(name);
-		add_test ("Collection.to_array", test_to_array);
+		add_test ("[Collection] type correctness", test_type_correctness);
+		add_test ("[Collection] iterator returns all elements once",
+		          test_iterator_returns_all_elements_once);
+		add_test ("[Collection] contains, size and is_empty",
+		          test_contains_size_and_is_empty);
+		add_test ("[Collection] add_all", test_add_all);
+		add_test ("[Collection] contains_all", test_contains_all);
+		add_test ("[Collection] remove_all", test_remove_all);
+		add_test ("[Collection] retain_all", test_retain_all);
+		add_test ("[Collection] to_array", test_to_array);
 	}
 
-	protected Collection<int> int_collection;
-	protected Collection<string> string_collection;
-	protected Collection<Object> object_collection;
+	protected Collection<string> test_collection;
+
+	public void test_type_correctness () {
+		// Check the collection exists
+		assert (test_collection != null);
+
+		// Check the advertised element type
+		assert (test_collection.element_type == typeof (string));
+	}
+
+	public void test_iterator_returns_all_elements_once () {
+		// Check the collection exists
+		assert (test_collection != null);
+
+		assert (test_collection.add ("one"));
+		assert (test_collection.add ("two"));
+		assert (test_collection.add ("three"));
+
+		bool one_found = false;
+		bool two_found = false;
+		bool three_found = false;
+		bool one_found_once = true;
+		bool two_found_once = true;
+		bool three_found_once = true;
+		foreach (string element in test_collection) {
+			if (element == "one") {
+				if (one_found) {
+					one_found_once = false;
+				}
+				one_found = true;
+			} else if (element == "two") {
+				if (two_found) {
+					two_found_once = false;
+				}
+				two_found = true;
+			} else if (element == "three") {
+				if (three_found) {
+					three_found_once = false;
+				}
+				three_found = true;
+			}
+		}
+		assert (one_found);
+		assert (one_found_once);
+		assert (two_found);
+		assert (two_found_once);
+		assert (three_found);
+		assert (three_found_once);
+	}
+
+	public void test_contains_size_and_is_empty () {
+		// Check the collection exists
+		assert (test_collection != null);
+
+		// Check the collection is initially empty
+		assert (! test_collection.contains("one"));
+		assert (! test_collection.contains("two"));
+		assert (! test_collection.contains("three"));
+		assert (test_collection.size == 0);
+		assert (test_collection.is_empty);
+
+		// Add an element
+		assert (test_collection.add ("one"));
+		assert (test_collection.contains("one"));
+		assert (! test_collection.contains("two"));
+		assert (! test_collection.contains("three"));
+		assert (test_collection.size == 1);
+		assert (! test_collection.is_empty);
+
+		// Remove the added element
+		assert (test_collection.remove ("one"));
+		assert (! test_collection.contains("one"));
+		assert (! test_collection.contains("two"));
+		assert (! test_collection.contains("three"));
+		assert (test_collection.size == 0);
+		assert (test_collection.is_empty);
+
+		// Add more elements
+		assert (test_collection.add ("one"));
+		assert (test_collection.contains("one"));
+		assert (! test_collection.contains("two"));
+		assert (! test_collection.contains("three"));
+		assert (test_collection.size == 1);
+		assert (! test_collection.is_empty);
+		
+		assert (test_collection.add ("two"));
+		assert (test_collection.contains("one"));
+		assert (test_collection.contains("two"));
+		assert (! test_collection.contains("three"));
+		assert (test_collection.size == 2);
+		assert (! test_collection.is_empty);
+		
+		assert (test_collection.add ("three"));
+		assert (test_collection.contains("one"));
+		assert (test_collection.contains("two"));
+		assert (test_collection.contains("three"));
+		assert (test_collection.size == 3);
+		assert (! test_collection.is_empty);
+
+		// Remove one element
+		assert (test_collection.remove ("two"));
+		assert (test_collection.contains("one"));
+		assert (! test_collection.contains("two"));
+		assert (test_collection.contains("three"));
+		assert (test_collection.size == 2);
+		assert (! test_collection.is_empty);
+
+		// Remove the same element again
+		assert (! test_collection.remove ("two"));
+		assert (test_collection.contains("one"));
+		assert (! test_collection.contains("two"));
+		assert (test_collection.contains("three"));
+		assert (test_collection.size == 2);
+		assert (! test_collection.is_empty);
+
+		// Remove all elements
+		test_collection.clear ();
+		assert (! test_collection.contains("one"));
+		assert (! test_collection.contains("two"));
+		assert (! test_collection.contains("three"));
+		assert (test_collection.size == 0);
+		assert (test_collection.is_empty);
+	}
+
+	public void test_add_all () {
+		// Check the collection exists
+		assert (test_collection != null);
+
+		// Creating a dummy collection
+		var dummy = new ArrayList<string> ();
+
+		// Check when the test collection is initially empty and
+		// dummy collection is empty
+		assert (! test_collection.add_all (dummy));
+
+		assert (test_collection.is_empty);
+		assert (dummy.is_empty);
+
+		// Check when test collection is not empty but dummy is
+		assert (test_collection.add ("hello"));
+		assert (! test_collection.add_all (dummy));
+
+		assert (test_collection.size == 1);
+		assert (test_collection.contains ("hello"));
+
+		test_collection.clear ();
+		dummy.clear ();
+
+		// Check when the test collection is initially empty and
+		// dummy collection is not empty
+		assert (dummy.add ("hello1"));
+		assert (dummy.add ("hello2"));
+		assert (dummy.add ("hello3"));
+
+		assert (test_collection.add_all (dummy));
+
+		assert (test_collection.size == 3);
+		assert (test_collection.contains ("hello1"));
+		assert (test_collection.contains ("hello2"));
+		assert (test_collection.contains ("hello3"));
+		assert (dummy.size == 3);
+		assert (dummy.contains ("hello1"));
+		assert (dummy.contains ("hello2"));
+		assert (dummy.contains ("hello3"));
+
+		test_collection.clear ();
+		dummy.clear ();
+
+		// Check when the test collection is not empty and both
+		// collections does not intersect
+		assert (dummy.add ("hello1"));
+		assert (dummy.add ("hello2"));
+		assert (dummy.add ("hello3"));
+
+		assert (test_collection.add ("hello"));
+
+		assert (test_collection.add_all (dummy));
+
+		assert (test_collection.size == 4);
+		assert (test_collection.contains ("hello"));
+		assert (test_collection.contains ("hello1"));
+		assert (test_collection.contains ("hello2"));
+		assert (test_collection.contains ("hello3"));
+		assert (dummy.size == 3);
+		assert (dummy.contains ("hello1"));
+		assert (dummy.contains ("hello2"));
+		assert (dummy.contains ("hello3"));
+
+		test_collection.clear ();
+		dummy.clear ();
+
+		// Check when the test collection is not empty and both
+		// collection intersect
+		assert (dummy.add ("hello1"));
+		assert (dummy.add ("hello2"));
+		assert (dummy.add ("hello3"));
+
+		assert (test_collection.add ("hello1"));
+
+		assert (test_collection.add_all (dummy));
+
+		assert (test_collection.size == 4);
+		assert (test_collection.contains ("hello1"));
+		assert (test_collection.contains ("hello2"));
+		assert (test_collection.contains ("hello3"));
+		assert (dummy.size == 3);
+		assert (dummy.contains ("hello1"));
+		assert (dummy.contains ("hello2"));
+		assert (dummy.contains ("hello3"));
+	}
+
+	public void test_contains_all () {
+		// Check the collection exists
+		assert (test_collection != null);
+
+		// Creating a dummy collection
+		var dummy = new ArrayList<string> ();
+		assert (dummy.add ("hello1"));
+		assert (dummy.add ("hello2"));
+		assert (dummy.add ("hello3"));
+
+		// Check when the test collection is initially empty
+		assert (test_collection.is_empty);
+		assert (! test_collection.contains_all (dummy));
+
+		// Check when the test collection is not empty and both
+		// collections does not intersect
+		assert (test_collection.add ("hello4"));
+		assert (test_collection.add ("hello5"));
+		assert (! test_collection.contains_all (dummy));
+
+		// Check when the test collection is not empty and both
+		// collections intersect but are not equal
+		assert (test_collection.add ("hello1"));
+		assert (test_collection.add ("hello2"));
+		assert (! test_collection.contains_all (dummy));
+
+		// Check when the test collection is not empty and the
+		// dummy collection is contained in the test one
+		assert (test_collection.add ("hello3"));
+		assert (test_collection.contains_all (dummy));
+		assert (! dummy.contains_all (test_collection));
+	}
+
+	public void test_remove_all () {
+		// Check the collection exists
+		assert (test_collection != null);
+
+		// Creating a dummy collection
+		var dummy = new ArrayList<string> ();
+
+		// Check when both collection are intially empty
+		assert (! test_collection.remove_all (dummy));
+
+		assert (test_collection.is_empty);
+		assert (dummy.is_empty);
+
+		// Check when the test collection is initially empty and
+		// dummy collection is not empty
+		assert (dummy.add ("hello1"));
+		assert (dummy.add ("hello2"));
+		assert (dummy.add ("hello3"));
+
+		assert (! test_collection.remove_all (dummy));
+
+		assert (test_collection.is_empty);
+
+		test_collection.clear ();
+		dummy.clear ();
+
+		// Check when the test collection is not empty and both
+		// collections does not intersect
+		assert (dummy.add ("hello1"));
+		assert (dummy.add ("hello2"));
+		assert (dummy.add ("hello3"));
+		assert (test_collection.add ("hello4"));
+		assert (test_collection.add ("hello5"));
+
+		assert (! test_collection.remove_all (dummy));
+
+		assert (test_collection.size == 2);
+		assert (dummy.size == 3);
+
+		test_collection.clear ();
+		dummy.clear ();
+
+		// Check when the test collection is not empty and both
+		// collections intersect
+		assert (dummy.add ("hello1"));
+		assert (dummy.add ("hello2"));
+		assert (dummy.add ("hello3"));
+		assert (test_collection.add ("hello1"));
+		assert (test_collection.add ("hello2"));
+		assert (test_collection.add ("hello3"));
+
+		assert (test_collection.remove_all (dummy));
+
+		assert (test_collection.is_empty);
+		assert (dummy.size == 3);
+
+		test_collection.clear ();
+		dummy.clear ();
+
+		// Check removing the same element
+		assert (test_collection.add ("hello1"));
+		assert (test_collection.add ("hello1"));
+		assert (test_collection.add ("hello1"));
+		assert (test_collection.add ("hello1"));
+
+		assert (dummy.add ("hello1"));
+		assert (dummy.add ("hello1"));
+
+		assert (test_collection.remove_all (dummy));
+
+		assert (test_collection.is_empty);
+		assert (dummy.size == 2);
+	}
+
+	public void test_retain_all () {
+		// Check the collection exists
+		assert (test_collection != null);
+
+		// Creating a dummy collection
+		var dummy = new ArrayList<string> ();
+
+		// Check when the test collection is initially empty and
+		// dummy collection is empty
+		assert (! test_collection.retain_all (dummy));
+
+		assert (test_collection.is_empty);
+		assert (dummy.is_empty);
+
+		// Check when the test collection is not empty and
+		// the dummy one is
+		assert (test_collection.add ("hello1"));
+		assert (test_collection.add ("hello2"));
+
+		assert (test_collection.retain_all (dummy));
+
+		assert (test_collection.is_empty);
+		assert (dummy.is_empty);
+
+		test_collection.clear ();
+		dummy.clear ();
+
+		// Check when the test collection is initially empty and
+		// dummy collection is not empty
+		assert (dummy.add ("hello1"));
+		assert (dummy.add ("hello2"));
+		assert (dummy.add ("hello3"));
+
+		assert (! test_collection.retain_all (dummy));
+
+		assert (test_collection.is_empty);
+		assert (dummy.size == 3);
+		assert (dummy.contains ("hello1"));
+		assert (dummy.contains ("hello2"));
+		assert (dummy.contains ("hello3"));
+
+		test_collection.clear ();
+		dummy.clear ();
+
+		// Check when the test collection is not empty and both
+		// collection does not intersect
+		assert (dummy.add ("hello1"));
+		assert (dummy.add ("hello2"));
+		assert (dummy.add ("hello3"));
+		assert (test_collection.add ("hello4"));
+		assert (test_collection.add ("hello5"));
+
+		assert (test_collection.retain_all (dummy));
+
+		assert (test_collection.is_empty);
+		assert (dummy.size == 3);
+		assert (dummy.contains ("hello1"));
+		assert (dummy.contains ("hello2"));
+		assert (dummy.contains ("hello3"));
+
+		test_collection.clear ();
+		dummy.clear ();
+
+		// Check when both collections have the same elements
+		assert (dummy.add ("hello1"));
+		assert (dummy.add ("hello2"));
+		assert (dummy.add ("hello3"));
+		assert (test_collection.add ("hello1"));
+		assert (test_collection.add ("hello2"));
+		assert (test_collection.add ("hello3"));
+
+		assert (! test_collection.retain_all (dummy));
+
+		assert (test_collection.size == 3);
+		assert (test_collection.contains ("hello1"));
+		assert (test_collection.contains ("hello2"));
+		assert (test_collection.contains ("hello3"));
+		assert (dummy.size == 3);
+		assert (dummy.contains ("hello1"));
+		assert (dummy.contains ("hello2"));
+		assert (dummy.contains ("hello3"));
+
+		test_collection.clear ();
+		dummy.clear ();
+
+		// Check when the test collection is not empty and both
+		// collections intersect but are not equal
+		assert (dummy.add ("hello1"));
+		assert (dummy.add ("hello2"));
+		assert (dummy.add ("hello3"));
+		assert (test_collection.add ("hello2"));
+		assert (test_collection.add ("hello3"));
+		assert (test_collection.add ("hello4"));
+
+		assert (test_collection.retain_all (dummy));
+
+		assert (test_collection.size == 2);
+		assert (test_collection.contains ("hello2"));
+		assert (test_collection.contains ("hello3"));
+		assert (dummy.size == 3);
+		assert (dummy.contains ("hello1"));
+		assert (dummy.contains ("hello2"));
+		assert (dummy.contains ("hello3"));
+
+		test_collection.clear ();
+		dummy.clear ();
+
+		// Check when the test collection contains the same elements several
+		// times and the dummy collection contains the element too
+		assert (dummy.add ("hello1"));
+		assert (test_collection.add ("hello1"));
+		assert (test_collection.add ("hello1"));
+		assert (test_collection.add ("hello1"));
+		assert (test_collection.add ("hello1"));
+
+		assert (! test_collection.retain_all (dummy));
+
+		assert (test_collection.size == 4);
+		assert (dummy.size == 1);
+
+		test_collection.clear ();
+		dummy.clear ();
+
+		// Check when the test collection contains the same elements several
+		// times and the dummy collection contains the element too
+		assert (dummy.add ("hello2"));
+		assert (test_collection.add ("hello1"));
+		assert (test_collection.add ("hello1"));
+		assert (test_collection.add ("hello1"));
+		assert (test_collection.add ("hello1"));
+
+		assert (test_collection.retain_all (dummy));
+
+		assert (test_collection.is_empty);
+		assert (dummy.size == 1);
+	}
 
 	public void test_to_array() {
-		string_collection.add ("42");
-		string_collection.add ("43");
-		string_collection.add ("44");
-
-		string[] array = (string[]) string_collection.to_array ();
-		assert (array[0] == "42");
-		assert (array[1] == "43");
-		assert (array[2] == "44");	
+		// Check the collection exists
+		assert (test_collection != null);
+
+		// Check the collection is empty
+		assert (test_collection.is_empty);
+
+		// Add some elements
+		assert (test_collection.add ("hello1"));
+		assert (test_collection.add ("hello2"));
+		assert (test_collection.add ("hello3"));
+
+		// Check the conversion to array
+		string[] array = (string[]) test_collection.to_array ();
+		int index = 0;
+		foreach (string element in test_collection) {
+			assert (element == array[index++]);
+		}
 	}
 }
diff --git a/tests/testlist.vala b/tests/testlist.vala
new file mode 100644
index 0000000..25cd83b
--- /dev/null
+++ b/tests/testlist.vala
@@ -0,0 +1,550 @@
+/* testlist.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 GLib;
+using Gee;
+
+public abstract class ListTests : CollectionTests {
+
+	public ListTests (string name) {
+		base (name);
+		add_test ("[List] iterator is ordered", test_iterator_is_ordered);
+		add_test ("[List] duplicates are retained",
+		          test_duplicates_are_retained);
+		add_test ("[List] get", test_get);
+		add_test ("[List] set", test_set);
+		add_test ("[List] insert", test_insert);
+		add_test ("[List] remove_at", test_remove_at);
+		add_test ("[List] index_of", test_index_of);
+		add_test ("[List] first", test_first);
+		add_test ("[List] last", test_last);
+		add_test ("[List] insert_all", test_insert_all);
+	}
+
+	public void test_iterator_is_ordered () {
+		var test_list = test_collection as Gee.List<string>;
+
+		// Check the test list is not null
+		assert (test_list != null);
+
+		// Check iterate empty list
+		var iterator = test_list.iterator ();
+		assert (! iterator.next());
+
+		// Check iterate list
+		assert (test_list.add ("one"));
+		assert (test_list.add ("two"));
+		assert (test_list.add ("three"));
+		assert (test_list.add ("one"));
+
+		iterator = test_list.iterator ();
+		assert (iterator.next());
+		assert (iterator.get () == "one");
+		assert (iterator.next());
+		assert (iterator.get () == "two");
+		assert (iterator.next());
+		assert (iterator.get () == "three");
+		assert (iterator.next());
+		assert (iterator.get () == "one");
+		assert (! iterator.next());
+	}
+
+	public virtual void test_duplicates_are_retained () {
+		var test_list = test_collection as Gee.List<string>;
+
+		// Check the test list is not null
+		assert (test_list != null);
+
+		assert (test_list.add ("one"));
+		assert (test_list.contains ("one"));
+		assert (test_list.size == 1);
+
+		assert (test_list.add ("one"));
+		assert (test_list.contains ("one"));
+		assert (test_list.size == 2);
+
+		assert (test_list.add ("one"));
+		assert (test_list.contains ("one"));
+		assert (test_list.size == 3);
+
+		assert (test_list.remove ("one"));
+		assert (test_list.contains ("one"));
+		assert (test_list.size == 2);
+
+		assert (test_list.remove ("one"));
+		assert (test_list.contains ("one"));
+		assert (test_list.size == 1);
+
+		assert (test_list.remove ("one"));
+		assert (!test_list.contains ("one"));
+		assert (test_list.size == 0);
+	}
+
+	public void test_get () {
+		var test_list = test_collection as Gee.List<string>;
+
+		// Check the test list is not null
+		assert (test_list != null);
+
+		// Check get for empty list
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.get (0);
+			return;
+		}
+		Test.trap_assert_failed ();
+
+		// Check get for valid index in list with one element
+		assert (test_list.add ("one"));
+		assert (test_list.get (0) == "one");
+
+		// Check get for indexes out of range
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.get (1);
+			return;
+		}
+		Test.trap_assert_failed ();
+
+		// Check get for invalid index number
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.get (-1);
+			return;
+		}
+		Test.trap_assert_failed ();
+
+		// Check get for valid indexes in list with multiple element
+		assert (test_list.add ("two"));
+		assert (test_list.add ("three"));
+		assert (test_list.get (0) == "one");
+		assert (test_list.get (1) == "two");
+		assert (test_list.get (2) == "three");
+
+		// Check get if list is cleared and empty again
+		test_list.clear ();
+
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.get (0);
+			return;
+		}
+		Test.trap_assert_failed ();
+	}
+
+	public void test_set () {
+		var test_list = test_collection as Gee.List<string>;
+
+		// Check the test list is not null
+		assert (test_list != null);
+
+		// Check set when list is empty
+		assert (test_list.size == 0);
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.set (0, "zero");
+			return;
+		}
+		Test.trap_assert_failed ();
+		assert (test_list.size == 0);
+
+		// Check set when one item is in list
+		assert (test_list.add ("one")); // Add item "one"
+		assert (test_list.size == 1);
+		assert (test_list.get (0) == "one");
+
+		test_list.set (0, "two"); // Set the item to value 2
+		assert (test_list.size == 1);
+		assert (test_list.get (0) == "two");
+
+		// Check set when index out of range
+		assert (test_list.size == 1);
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.set (1, "zero");
+			return;
+		}
+		Test.trap_assert_failed ();
+		assert (test_list.size == 1);
+	}
+
+	public void test_insert () {
+		var test_list = test_collection as Gee.List<string>;
+
+		// Check the test list is not null
+		assert (test_list != null);
+
+		// Check inserting in empty list
+		// Inserting at index 1
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.insert (1, "zero");
+			return;
+		}
+		Test.trap_assert_failed ();
+
+		// Inserting at index 0
+		assert (test_list.size == 0);
+		test_list.insert (0, "one");
+		assert (test_list.size == 1);
+		assert (test_list.get (0) == "one");
+
+		// Check insert to the beginning
+		test_list.insert (0, "two");
+		assert (test_list.get (0) == "two");
+		assert (test_list.get (1) == "one");
+
+		// Check insert in between
+		test_list.insert (1, "three");
+		assert (test_list.get (0) == "two");
+		assert (test_list.get (1) == "three");
+		assert (test_list.get (2) == "one");
+
+		// Check insert into index out of current range
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.insert (4, "four");
+			return;
+		}
+		Test.trap_assert_failed ();
+
+		// Check insert to the end
+		test_list.insert (3, "four");
+		assert (test_list.get (0) == "two");
+		assert (test_list.get (1) == "three");
+		assert (test_list.get (2) == "one");
+		assert (test_list.get (3) == "four");
+
+		// Check insert into invalid index
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.insert (-1, "zero");
+			return;
+		}
+		Test.trap_assert_failed ();
+	}
+
+	public void test_remove_at () {
+		var test_list = test_collection as Gee.List<string>;
+
+		// Check the test list is not null
+		assert (test_list != null);
+
+		// Check removing in empty list
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.remove_at (0);
+			return;
+		}
+		Test.trap_assert_failed ();
+
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.remove_at (1);
+			return;
+		}
+		Test.trap_assert_failed ();
+
+		// add 5 items
+		assert (test_list.add ("one"));
+		assert (test_list.add ("two"));
+		assert (test_list.add ("three"));
+		assert (test_list.add ("four"));
+		assert (test_list.add ("five"));
+		assert (test_list.size == 5);
+
+		// Check remove_at first
+		test_list.remove_at (0);
+		assert (test_list.size == 4);
+		assert (test_list.get (0) == "two");
+		assert (test_list.get (1) == "three");
+		assert (test_list.get (2) == "four");
+		assert (test_list.get (3) == "five");
+
+		// Check remove_at last
+		test_list.remove_at (3);
+		assert (test_list.size == 3);
+		assert (test_list.get (0) == "two");
+		assert (test_list.get (1) == "three");
+		assert (test_list.get (2) == "four");
+
+		// Check remove_at in between
+		test_list.remove_at (1);
+		assert (test_list.size == 2);
+		assert (test_list.get (0) == "two");
+		assert (test_list.get (1) == "four");
+
+		// Check remove_at when index out of range
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.remove_at (2);
+			return;
+		}
+		Test.trap_assert_failed ();
+
+		// Check remove_at when invalid index
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.remove_at (-1);
+			return;
+		}
+		Test.trap_assert_failed ();
+	}
+
+	public void test_index_of () {
+		var test_list = test_collection as Gee.List<string>;
+
+		// Check the test list is not null
+		assert (test_list != null);
+
+		// Check empty list
+		assert (test_list.index_of ("one") == -1);
+
+		// Check one item
+		assert (test_list.add ("one"));
+		assert (test_list.index_of ("one") == 0);
+		assert (test_list.index_of ("two") == -1);
+
+		// Check more items
+		assert (test_list.add ("two"));
+		assert (test_list.add ("three"));
+		assert (test_list.add ("four"));
+		assert (test_list.index_of ("one") == 0);
+		assert (test_list.index_of ("two") == 1);
+		assert (test_list.index_of ("three") == 2);
+		assert (test_list.index_of ("four") == 3);
+		assert (test_list.index_of ("five") == -1);
+	}
+
+	public void test_first () {
+		var test_list = test_collection as Gee.List<string>;
+
+		// Check the test list is not null
+		assert (test_list != null);
+
+		// Check first for empty list
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.first ();
+			return;
+		}
+		Test.trap_assert_failed ();
+
+		// Check first for list with one element
+		assert (test_list.add ("one"));
+		assert (test_list.first () == "one");
+		assert (test_list.first () == test_list.get (0));
+
+		// Check first for for list with multiple element
+		assert (test_list.add ("two"));
+		assert (test_list.add ("three"));
+		assert (test_list.first () == "one");
+		assert (test_list.first () == test_list.get (0));
+
+		// Check first if list is cleared and empty again
+		test_list.clear ();
+
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.first ();
+			return;
+		}
+		Test.trap_assert_failed ();
+	}
+
+	public void test_last () {
+		var test_list = test_collection as Gee.List<string>;
+
+		// Check the test list is not null
+		assert (test_list != null);
+
+		// Check last for empty list
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.last ();
+			return;
+		}
+		Test.trap_assert_failed ();
+
+		// Check last for list with one element
+		assert (test_list.add ("one"));
+		assert (test_list.last () == "one");
+		assert (test_list.last () == test_list.get (test_list.size - 1));
+
+		// Check last for for list with multiple element
+		assert (test_list.add ("two"));
+		assert (test_list.add ("three"));
+		assert (test_list.last () == "three");
+		assert (test_list.last () == test_list.get (test_list.size - 1));
+
+		// Check last if list is cleared and empty again
+		test_list.clear ();
+
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.last ();
+			return;
+		}
+		Test.trap_assert_failed ();
+	}
+
+	public void test_insert_all () {
+		var test_list = test_collection as Gee.List<string>;
+
+		// Check the test list is not null
+		assert (test_list != null);
+
+		var dummy = new ArrayList<string> ();
+
+		// Insert an empty list
+		assert (test_list.add ("zero"));
+		assert (test_list.add ("one"));
+		assert (test_list.add ("two"));
+
+		assert (test_list.size == 3);
+		assert (dummy.is_empty);
+
+		test_list.insert_all (0, dummy);
+
+		assert (test_list.size == 3);
+		assert (dummy.is_empty);
+
+		test_list.clear ();
+		dummy.clear ();
+
+		// Insert into an empty list at index 0
+		assert (dummy.add ("zero"));
+		assert (dummy.add ("one"));
+		assert (dummy.add ("two"));
+
+		assert (test_list.is_empty);
+		assert (dummy.size == 3);
+
+		test_list.insert_all (0, dummy);
+
+		assert (test_list.size == 3);
+		assert (dummy.size == 3);
+
+		test_list.clear ();
+		dummy.clear ();
+
+		// Insert all into empty list as index 1
+		assert (dummy.add ("zero"));
+		assert (dummy.add ("one"));
+		assert (dummy.add ("two"));
+
+		assert (test_list.is_empty);
+
+		if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+		                       TestTrapFlags.SILENCE_STDERR)) {
+			test_list.insert_all (1, dummy);
+			return;
+		}
+		Test.trap_assert_failed ();
+
+		test_list.clear ();
+		dummy.clear ();
+
+		// Insert all in the beginnig
+		assert (test_list.add ("three"));
+		assert (test_list.add ("four"));
+		assert (test_list.add ("five"));
+
+		assert (dummy.add ("zero"));
+		assert (dummy.add ("one"));
+		assert (dummy.add ("two"));
+
+		assert (test_list.size == 3);
+		assert (dummy.size == 3);
+
+		test_list.insert_all (0, dummy);
+
+		assert (test_list.size == 6);
+		assert (dummy.size == 3);
+
+		assert (test_list.get (0) == "zero");
+		assert (test_list.get (1) == "one");
+		assert (test_list.get (2) == "two");
+		assert (test_list.get (3) == "three");
+		assert (test_list.get (4) == "four");
+		assert (test_list.get (5) == "five");
+
+		test_list.clear ();
+		dummy.clear ();
+
+		// Insert all in the middle
+		assert (test_list.add ("zero"));
+		assert (test_list.add ("one"));
+		assert (test_list.add ("five"));
+		assert (test_list.add ("six"));
+
+		assert (dummy.add ("two"));
+		assert (dummy.add ("three"));
+		assert (dummy.add ("four"));
+
+		assert (test_list.size == 4);
+		assert (dummy.size == 3);
+
+		test_list.insert_all (2, dummy);
+
+		assert (test_list.size == 7);
+		assert (dummy.size == 3);
+
+		assert (test_list.get (0) == "zero");
+		assert (test_list.get (1) == "one");
+		assert (test_list.get (2) == "two");
+		assert (test_list.get (3) == "three");
+		assert (test_list.get (4) == "four");
+		assert (test_list.get (5) == "five");
+		assert (test_list.get (6) == "six");
+
+		test_list.clear ();
+		dummy.clear ();
+
+		// Insert all in at the end
+		assert (test_list.add ("zero"));
+		assert (test_list.add ("one"));
+		assert (test_list.add ("two"));
+
+		assert (dummy.add ("three"));
+		assert (dummy.add ("four"));
+		assert (dummy.add ("five"));
+
+		assert (test_list.size == 3);
+		assert (dummy.size == 3);
+
+		test_list.insert_all (3, dummy);
+
+		assert (test_list.size == 6);
+		assert (dummy.size == 3);
+
+		assert (test_list.get (0) == "zero");
+		assert (test_list.get (1) == "one");
+		assert (test_list.get (2) == "two");
+		assert (test_list.get (3) == "three");
+		assert (test_list.get (4) == "four");
+		assert (test_list.get (5) == "five");
+	}
+}
diff --git a/tests/testmain.vala b/tests/testmain.vala
new file mode 100644
index 0000000..58ff20d
--- /dev/null
+++ b/tests/testmain.vala
@@ -0,0 +1,30 @@
+/* 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:
+ * 	Didier 'Ptitjes' Villevalois <ptitjes free fr>
+ */
+
+void main (string[] args) {
+	Test.init (ref args);
+
+	TestSuite.get_root ().add_suite (new ArrayListTests ().get_suite ());
+
+	Test.run ();
+}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]