[libgee] Enhance the tests for the ReadOnly* implementations
- From: Didier Villevalois <dvillevalois src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [libgee] Enhance the tests for the ReadOnly* implementations
- Date: Wed, 23 Sep 2009 12:57:28 +0000 (UTC)
commit b8b7385914ef71c927f131a912bbc7b286563637
Author: Didier 'Ptitjes <ptitjes free fr>
Date: Sun Sep 20 03:03:00 2009 +0200
Enhance the tests for the ReadOnly* implementations
tests/Makefile.am | 2 +
tests/testmain.vala | 4 +
tests/testreadonlycollection.vala | 142 ++++++++++++++++++++-----
tests/testreadonlylist.vala | 205 ++++++++++++++++++++++++++++++++++-
tests/testreadonlymap.vala | 216 +++++++++++++++++++++++++++++++++++++
tests/testreadonlyset.vala | 46 ++++++++
6 files changed, 586 insertions(+), 29 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 8a91b63..d483fcb 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -35,6 +35,8 @@ tests_VALASOURCES = \
testqueue.vala \
testreadonlycollection.vala \
testreadonlylist.vala \
+ testreadonlymap.vala \
+ testreadonlyset.vala \
testset.vala \
testtreemap.vala \
testtreeset.vala \
diff --git a/tests/testmain.vala b/tests/testmain.vala
index 525d3cf..41709d5 100644
--- a/tests/testmain.vala
+++ b/tests/testmain.vala
@@ -25,6 +25,7 @@ void main (string[] args) {
Test.init (ref args);
TestSuite.get_root ().add_suite (new ArrayListTests ().get_suite ());
+ TestSuite.get_root ().add_suite (new ComparableTests ().get_suite ());
TestSuite.get_root ().add_suite (new HashMapTests ().get_suite ());
TestSuite.get_root ().add_suite (new HashMultiMapTests ().get_suite ());
TestSuite.get_root ().add_suite (new HashMultiSetTests ().get_suite ());
@@ -32,7 +33,10 @@ void main (string[] args) {
TestSuite.get_root ().add_suite (new LinkedListTests ().get_suite ());
TestSuite.get_root ().add_suite (new LinkedListAsDequeTests ().get_suite ());
TestSuite.get_root ().add_suite (new PriorityQueueTests ().get_suite ());
+ TestSuite.get_root ().add_suite (new ReadOnlyCollectionTests ().get_suite ());
TestSuite.get_root ().add_suite (new ReadOnlyListTests ().get_suite ());
+ TestSuite.get_root ().add_suite (new ReadOnlyMapTests ().get_suite ());
+ TestSuite.get_root ().add_suite (new ReadOnlySetTests ().get_suite ());
TestSuite.get_root ().add_suite (new TreeMapTests ().get_suite ());
TestSuite.get_root ().add_suite (new TreeSetTests ().get_suite ());
diff --git a/tests/testreadonlycollection.vala b/tests/testreadonlycollection.vala
index 6340abc..6c09f86 100644
--- a/tests/testreadonlycollection.vala
+++ b/tests/testreadonlycollection.vala
@@ -24,24 +24,40 @@
using Gee;
-public abstract class ReadOnlyCollectionTests : Gee.TestCase {
+public class ReadOnlyCollectionTests : Gee.TestCase {
- public ReadOnlyCollectionTests (string name) {
+ public ReadOnlyCollectionTests () {
+ this.with_name ("ReadOnlyCollection");
+ }
+
+ public ReadOnlyCollectionTests.with_name (string name) {
base (name);
add_test ("[ReadOnlyCollection] unique read-only view instance",
test_unique_read_only_view_instance);
- add_test ("[ReadOnlyCollection] add", test_add);
- add_test ("[ReadOnlyCollection] clear", test_clear);
- add_test ("[ReadOnlyCollection] remove", test_remove);
- add_test ("[ReadOnlyCollection] contains", test_contains);
- add_test ("[ReadOnlyCollection] size", test_size);
+ add_test ("[ReadOnlyCollection] immutable iterator", test_immutable_iterator);
+ add_test ("[ReadOnlyCollection] immutable", test_immutable);
+ add_test ("[ReadOnlyCollection] accurate view", test_accurate_view);
}
protected Collection<string> test_collection;
protected Collection<string> ro_collection;
+ public override void set_up () {
+ test_collection = new HashMultiSet<string> ();
+ ro_collection = get_ro_view (test_collection);
+ }
+
+ public override void tear_down () {
+ test_collection = null;
+ ro_collection = null;
+ }
+
+ protected virtual Collection<string> get_ro_view (Collection<string> collection) {
+ return collection.read_only_view;
+ }
+
public void test_unique_read_only_view_instance () {
- var another_ro_collection = test_collection.read_only_view;
+ var another_ro_collection = get_ro_view (test_collection);
assert (ro_collection == another_ro_collection);
ro_collection.set_data ("marker", new Object ());
@@ -50,30 +66,64 @@ public abstract class ReadOnlyCollectionTests : Gee.TestCase {
another_ro_collection = null;
ro_collection = null;
- another_ro_collection = test_collection.read_only_view;
+ another_ro_collection = get_ro_view (test_collection);
assert (another_ro_collection.get_data ("marker") == null);
+
+ // Check that the read-only view of the view is itself
+ assert (another_ro_collection == get_ro_view (another_ro_collection));
}
- public void test_add () {
+ public void test_immutable_iterator () {
assert (test_collection.add ("one"));
+ assert (test_collection.add ("two"));
- assert (ro_collection.size == 1);
+ assert (ro_collection.size == 2);
assert (ro_collection.contains ("one"));
+ assert (ro_collection.contains ("two"));
+
+ Iterator<string> iterator = ro_collection.iterator ();
+
+ assert (iterator.has_next ());
+ assert (iterator.next ());
+ assert (iterator.get () == "one");
+
+ assert (iterator.has_next ());
+ assert (iterator.next ());
+ assert (iterator.get () == "two");
+
+ assert (! iterator.has_next ());
+ assert (! iterator.next ());
+
+ assert (iterator.first ());
+ assert (iterator.get () == "one");
if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
TestTrapFlags.SILENCE_STDERR)) {
- assert (ro_collection.add ("two"));
+ iterator.remove ();
return;
}
Test.trap_assert_failed ();
- assert (ro_collection.size == 1);
+ assert (ro_collection.size == 2);
assert (ro_collection.contains ("one"));
+ assert (ro_collection.contains ("two"));
}
- public void test_clear () {
+ public void test_immutable () {
assert (test_collection.add ("one"));
+ assert (ro_collection.size == 1);
+ assert (ro_collection.contains ("one"));
+ Collection<string> dummy = new ArrayList<string> ();
+ assert (dummy.add ("one"));
+ assert (dummy.add ("two"));
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ assert (ro_collection.add ("two"));
+ return;
+ }
+ Test.trap_assert_failed ();
assert (ro_collection.size == 1);
assert (ro_collection.contains ("one"));
@@ -83,43 +133,81 @@ public abstract class ReadOnlyCollectionTests : Gee.TestCase {
return;
}
Test.trap_assert_failed ();
-
assert (ro_collection.size == 1);
assert (ro_collection.contains ("one"));
- }
- public void test_contains () {
- assert (! ro_collection.contains ("one"));
- assert (test_collection.add ("one"));
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ assert (ro_collection.remove ("one"));
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_collection.size == 1);
assert (ro_collection.contains ("one"));
- assert (test_collection.remove ("one"));
- assert (! ro_collection.contains ("one"));
- }
-
- public void test_remove () {
- assert (test_collection.add ("one"));
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ assert (ro_collection.add_all (dummy));
+ return;
+ }
+ Test.trap_assert_failed ();
assert (ro_collection.size == 1);
assert (ro_collection.contains ("one"));
if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
TestTrapFlags.SILENCE_STDERR)) {
- assert (ro_collection.remove ("one"));
+ assert (ro_collection.remove_all (dummy));
return;
}
Test.trap_assert_failed ();
+ assert (ro_collection.size == 1);
+ assert (ro_collection.contains ("one"));
+ assert (dummy.remove ("one"));
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ assert (ro_collection.retain_all (dummy));
+ return;
+ }
+ Test.trap_assert_failed ();
assert (ro_collection.size == 1);
assert (ro_collection.contains ("one"));
}
- public void test_size () {
+ public void test_accurate_view () {
+ Collection<string> dummy = new ArrayList<string> ();
+ assert (dummy.add ("one"));
+ assert (dummy.add ("two"));
+
+ assert (ro_collection.element_type == typeof (string));
+
assert (ro_collection.size == 0);
+ assert (ro_collection.is_empty);
+ assert (! ro_collection.contains ("one"));
+
assert (test_collection.add ("one"));
assert (ro_collection.size == 1);
+ assert (! ro_collection.is_empty);
+ assert (ro_collection.contains ("one"));
+
assert (test_collection.add ("two"));
assert (ro_collection.size == 2);
+ assert (! ro_collection.is_empty);
+ assert (ro_collection.contains ("one"));
+ assert (ro_collection.contains ("two"));
+ assert (ro_collection.contains_all (dummy));
+
+ assert (test_collection.remove ("one"));
+ assert (ro_collection.size == 1);
+ assert (! ro_collection.is_empty);
+ assert (! ro_collection.contains ("one"));
+ assert (ro_collection.contains ("two"));
+ assert (! ro_collection.contains_all (dummy));
+
test_collection.clear ();
assert (ro_collection.size == 0);
+ assert (ro_collection.is_empty);
+ assert (! ro_collection.contains ("one"));
+ assert (! ro_collection.contains ("two"));
}
}
diff --git a/tests/testreadonlylist.vala b/tests/testreadonlylist.vala
index 41482c5..f10d0f6 100644
--- a/tests/testreadonlylist.vala
+++ b/tests/testreadonlylist.vala
@@ -20,6 +20,7 @@
* Author:
* Tomaž Vajngerl <quikee gmail com>
* Julien Peeters <contact julienpeeters fr>
+ * Didier 'Ptitjes' Villevalois <ptitjes free fr>
*/
using Gee;
@@ -27,16 +28,216 @@ using Gee;
public class ReadOnlyListTests : ReadOnlyCollectionTests {
public ReadOnlyListTests () {
- base ("ReadOnlyList");
+ base.with_name ("ReadOnlyList");
+ add_test ("[ReadOnlyList] immutable iterator", test_immutable_iterator);
+ add_test ("[ReadOnlyList] immutable", test_immutable);
+ add_test ("[ReadOnlyList] accurate view", test_accurate_view);
}
public override void set_up () {
test_collection = new ArrayList<string> ();
- ro_collection = test_collection.read_only_view;
+ ro_collection = get_ro_view (test_collection);
}
public override void tear_down () {
test_collection = null;
ro_collection = null;
}
+
+ protected override Collection<string> get_ro_view (Collection<string> collection) {
+ return ((Gee.List) collection).read_only_view;
+ }
+
+ public new void test_immutable_iterator () {
+ var test_list = test_collection as Gee.List<string>;
+ var ro_list = ro_collection as Gee.List<string>;
+
+ assert (test_list.add ("one"));
+ assert (test_list.add ("two"));
+
+ assert (ro_list.size == 2);
+ assert (ro_list.get (0) == "one");
+ assert (ro_list.get (1) == "two");
+
+ ListIterator<string> iterator = ro_list.list_iterator ();
+
+ assert (iterator.has_next ());
+ assert (iterator.next ());
+ assert (iterator.get () == "one");
+ assert (iterator.index () == 0);
+
+ assert (iterator.has_next ());
+ assert (iterator.next ());
+ assert (iterator.get () == "two");
+ assert (iterator.index () == 1);
+
+ assert (! iterator.has_next ());
+ assert (! iterator.next ());
+
+ assert (iterator.has_previous ());
+ assert (iterator.previous ());
+ assert (iterator.get () == "one");
+ assert (iterator.index () == 0);
+
+ assert (iterator.last ());
+ assert (iterator.get () == "two");
+ assert (iterator.index () == 1);
+
+ assert (iterator.first ());
+ assert (iterator.get () == "one");
+ assert (iterator.index () == 0);
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ iterator.remove ();
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_list.size == 2);
+ assert (ro_list.get (0) == "one");
+ assert (ro_list.get (1) == "two");
+ assert (iterator.index () == 0);
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ iterator.set ("three");
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_list.size == 2);
+ assert (ro_list.get (0) == "one");
+ assert (ro_list.get (1) == "two");
+ assert (iterator.index () == 0);
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ iterator.insert ("three");
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_list.size == 2);
+ assert (ro_list.get (0) == "one");
+ assert (ro_list.get (1) == "two");
+ assert (iterator.index () == 0);
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ iterator.add ("three");
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_list.size == 2);
+ assert (ro_list.get (0) == "one");
+ assert (ro_list.get (1) == "two");
+ assert (iterator.index () == 0);
+ }
+
+ public new void test_immutable () {
+ var test_list = test_collection as Gee.List<string>;
+ var ro_list = ro_collection as Gee.List<string>;
+
+ assert (test_list.add ("one"));
+ assert (ro_list.size == 1);
+ assert (ro_list.contains ("one"));
+
+ Collection<string> dummy = new ArrayList<string> ();
+ assert (dummy.add ("one"));
+ assert (dummy.add ("two"));
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ ro_list.set (0, "two");
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_list.size == 1);
+ assert (ro_list.contains ("one"));
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ ro_list.insert (1, "two");
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_list.size == 1);
+ assert (ro_list.contains ("one"));
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ ro_list.remove_at (1);
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_list.size == 1);
+ assert (ro_list.contains ("one"));
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ ro_list.insert_all (1, dummy);
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_list.size == 1);
+ assert (ro_list.contains ("one"));
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ ro_list.sort ();
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_list.size == 1);
+ assert (ro_list.contains ("one"));
+ }
+
+ public new void test_accurate_view () {
+ var test_list = test_collection as Gee.List<string>;
+ var ro_list = ro_collection as Gee.List<string>;
+
+ Collection<string> dummy = new ArrayList<string> ();
+ assert (dummy.add ("one"));
+ assert (dummy.add ("two"));
+
+ assert (ro_list.element_type == typeof (string));
+
+ assert (ro_list.size == 0);
+ assert (ro_list.is_empty);
+ assert (! ro_list.contains ("one"));
+ assert (ro_list.index_of ("one") == -1);
+
+ assert (test_list.add ("one"));
+ assert (ro_list.size == 1);
+ assert (! ro_list.is_empty);
+ assert (ro_list.get (0) == "one");
+ assert (ro_list.index_of ("one") == 0);
+ assert (ro_list.first () == "one");
+ assert (ro_list.last () == "one");
+
+ assert (test_list.add ("two"));
+ assert (ro_list.size == 2);
+ assert (! ro_list.is_empty);
+ assert (ro_list.get (0) == "one");
+ assert (ro_list.index_of ("one") == 0);
+ assert (ro_list.get (1) == "two");
+ assert (ro_list.index_of ("two") == 1);
+ assert (ro_list.first () == "one");
+ assert (ro_list.last () == "two");
+
+ assert (test_list.remove ("one"));
+ assert (ro_list.size == 1);
+ assert (! ro_list.is_empty);
+ assert (! ro_list.contains ("one"));
+ assert (ro_list.index_of ("one") == -1);
+ assert (ro_list.contains ("two"));
+ assert (ro_list.get (0) == "two");
+ assert (ro_list.index_of ("two") == 0);
+ assert (ro_list.first () == "two");
+ assert (ro_list.last () == "two");
+
+ test_list.clear ();
+ assert (ro_list.size == 0);
+ assert (ro_list.is_empty);
+ assert (ro_list.index_of ("one") == -1);
+ assert (ro_list.index_of ("two") == -1);
+ }
}
diff --git a/tests/testreadonlymap.vala b/tests/testreadonlymap.vala
new file mode 100644
index 0000000..217079e
--- /dev/null
+++ b/tests/testreadonlymap.vala
@@ -0,0 +1,216 @@
+/* testreadonlymap.vala
+ *
+ * Copyright (C) 2008 Jürg Billeter
+ * Copyright (C) 2009 Didier Villevalois
+ *
+ * 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>
+ */
+
+using Gee;
+
+public class ReadOnlyMapTests : Gee.TestCase {
+
+ public ReadOnlyMapTests () {
+ base ("ReadOnlyMap");
+ add_test ("[ReadOnlyMap] unique read-only view instance",
+ test_unique_read_only_view_instance);
+ add_test ("[ReadOnlyMap] immutable iterator", test_immutable_iterator);
+ add_test ("[ReadOnlyMap] immutable", test_immutable);
+ add_test ("[ReadOnlyMap] accurate view", test_accurate_view);
+ }
+
+ protected Map<string,string> test_map;
+ protected Map<string,string> ro_map;
+
+ public override void set_up () {
+ test_map = new TreeMap<string,string> ();
+ ro_map = test_map.read_only_view;
+ }
+
+ public override void tear_down () {
+ test_map = null;
+ ro_map = null;
+ }
+
+ public void test_unique_read_only_view_instance () {
+ var another_ro_map = test_map.read_only_view;
+ assert (ro_map == another_ro_map);
+
+ ro_map.set_data ("marker", new Object ());
+ assert (another_ro_map.get_data ("marker") != null);
+
+ another_ro_map = null;
+ ro_map = null;
+
+ another_ro_map = test_map.read_only_view;
+ assert (another_ro_map.get_data ("marker") == null);
+
+ // Check that the read-only view of the view is itself
+ assert (another_ro_map == another_ro_map.read_only_view);
+ }
+
+ public void test_immutable_iterator () {
+ test_map.set ("one", "one");
+ test_map.set ("two", "two");
+
+ assert (ro_map.size == 2);
+ assert (ro_map.has_key ("one"));
+ assert (ro_map.has ("one", "one"));
+ assert (ro_map.has_key ("two"));
+ assert (ro_map.has ("two", "two"));
+
+ Iterator<string> iterator = ro_map.keys.iterator ();
+
+ assert (iterator.has_next ());
+ assert (iterator.next ());
+ assert (iterator.get () == "one");
+
+ assert (iterator.has_next ());
+ assert (iterator.next ());
+ assert (iterator.get () == "two");
+
+ assert (! iterator.has_next ());
+ assert (! iterator.next ());
+
+ assert (iterator.first ());
+ assert (iterator.get () == "one");
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ iterator.remove ();
+ return;
+ }
+ Test.trap_assert_failed ();
+
+ assert (ro_map.size == 2);
+ assert (ro_map.has_key ("one"));
+ assert (ro_map.has ("one", "one"));
+ assert (ro_map.has_key ("two"));
+ assert (ro_map.has ("two", "two"));
+ }
+
+ public void test_immutable () {
+ test_map.set ("one", "one");
+ assert (ro_map.size == 1);
+ assert (ro_map.has_key ("one"));
+ assert (ro_map.has ("one", "one"));
+
+ Map<string,string> dummy = new HashMap<string,string> ();
+ dummy.set ("one", "one");
+ dummy.set ("two", "two");
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ ro_map.set ("two", "two");
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_map.size == 1);
+ assert (ro_map.has_key ("one"));
+ assert (ro_map.has ("one", "one"));
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ ro_map.clear ();
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_map.size == 1);
+ assert (ro_map.has_key ("one"));
+ assert (ro_map.has ("one", "one"));
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ assert (ro_map.unset ("one"));
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_map.size == 1);
+ assert (ro_map.has_key ("one"));
+ assert (ro_map.has ("one", "one"));
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ ro_map.set_all (dummy);
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_map.size == 1);
+ assert (ro_map.has_key ("one"));
+ assert (ro_map.has ("one", "one"));
+
+ if (Test.trap_fork (0, TestTrapFlags.SILENCE_STDOUT |
+ TestTrapFlags.SILENCE_STDERR)) {
+ assert (ro_map.unset_all (dummy));
+ return;
+ }
+ Test.trap_assert_failed ();
+ assert (ro_map.size == 1);
+ assert (ro_map.has_key ("one"));
+ assert (ro_map.has ("one", "one"));
+ }
+
+ public void test_accurate_view () {
+ Map<string,string> dummy = new HashMap<string,string> ();
+ dummy.set ("one", "one");
+ dummy.set ("two", "two");
+
+ assert (ro_map.size == 0);
+ assert (ro_map.is_empty);
+ assert (! ro_map.has_key ("one"));
+ assert (! ro_map.has ("one", "one"));
+ assert (ro_map.get ("one") == null);
+
+ test_map.set ("one", "one");
+ assert (ro_map.size == 1);
+ assert (! ro_map.is_empty);
+ assert (ro_map.has_key ("one"));
+ assert (ro_map.has ("one", "one"));
+ assert (ro_map.get ("one") == "one");
+
+ test_map.set ("two", "two");
+ assert (ro_map.size == 2);
+ assert (! ro_map.is_empty);
+ assert (ro_map.has_key ("one"));
+ assert (ro_map.has ("one", "one"));
+ assert (ro_map.get ("one") == "one");
+ assert (ro_map.has_key ("two"));
+ assert (ro_map.has ("two", "two"));
+ assert (ro_map.get ("two") == "two");
+ assert (ro_map.has_all (dummy));
+
+ assert (test_map.unset ("one"));
+ assert (ro_map.size == 1);
+ assert (! ro_map.is_empty);
+ assert (! ro_map.has_key ("one"));
+ assert (! ro_map.has ("one", "one"));
+ assert (ro_map.get ("one") == null);
+ assert (ro_map.has_key ("two"));
+ assert (ro_map.has ("two", "two"));
+ assert (ro_map.get ("two") == "two");
+ assert (! ro_map.has_all (dummy));
+
+ test_map.clear ();
+ assert (ro_map.size == 0);
+ assert (ro_map.is_empty);
+ assert (! ro_map.has ("one", "one"));
+ assert (! ro_map.has ("two", "two"));
+ assert (ro_map.get ("one") == null);
+ assert (ro_map.get ("two") == null);
+ }
+}
diff --git a/tests/testreadonlyset.vala b/tests/testreadonlyset.vala
new file mode 100644
index 0000000..a573cda
--- /dev/null
+++ b/tests/testreadonlyset.vala
@@ -0,0 +1,46 @@
+/* testreadonlyset.vala
+ *
+ * Copyright (C) 2008 Jürg Billeter
+ * Copyright (C) 2009 Didier Villevalois
+ *
+ * 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:
+ * Tomaž Vajngerl <quikee gmail com>
+ * Julien Peeters <contact julienpeeters fr>
+ */
+
+using Gee;
+
+public class ReadOnlySetTests : ReadOnlyCollectionTests {
+
+ public ReadOnlySetTests () {
+ base.with_name ("ReadOnlySet");
+ }
+
+ public override void set_up () {
+ test_collection = new HashSet<string> ();
+ ro_collection = get_ro_view (test_collection);
+ }
+
+ public override void tear_down () {
+ test_collection = null;
+ ro_collection = null;
+ }
+
+ protected override Collection<string> get_ro_view (Collection<string> collection) {
+ return ((Gee.Set) collection).read_only_view;
+ }
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]