[libgee] Implement TreeMultiSet



commit 0318ab70d32ca1cfffbcea11e0f656c967d5d1fc
Author: Didier 'Ptitjes <ptitjes free fr>
Date:   Wed Sep 23 23:08:16 2009 +0200

    Implement TreeMultiSet
    
    Fixes bug 594940.

 gee/Makefile.am             |    1 +
 gee/treemultiset.vala       |   37 ++++++++++++++++++++++++++++++++
 tests/Makefile.am           |    1 +
 tests/testmain.vala         |    1 +
 tests/testtreemultiset.vala |   49 +++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 89 insertions(+), 0 deletions(-)
---
diff --git a/gee/Makefile.am b/gee/Makefile.am
index ea989ae..044bc89 100644
--- a/gee/Makefile.am
+++ b/gee/Makefile.am
@@ -48,6 +48,7 @@ libgee_la_VALASOURCES = \
 	set.vala \
 	timsort.vala \
 	treemap.vala \
+	treemultiset.vala \
 	treeset.vala \
 	$(NULL)
 
diff --git a/gee/treemultiset.vala b/gee/treemultiset.vala
new file mode 100644
index 0000000..0feebe9
--- /dev/null
+++ b/gee/treemultiset.vala
@@ -0,0 +1,37 @@
+/* treemultiset.vala
+ *
+ * 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>
+ */
+
+/**
+ * A tree based implementation of the { link Gee.MultiSet} interface.
+ */
+public class Gee.TreeMultiSet<G> : AbstractMultiSet<G> {
+	public CompareFunc compare_func {
+		get { return ((TreeMap<G, int>) _storage_map).key_compare_func; }
+	}
+
+	/**
+	 * Constructs a new, empty tree multi set.
+	 */
+	public TreeMultiSet (CompareFunc? compare_func = null) {
+		base (new TreeMap<G, int> (compare_func, int_equal));
+	}
+}
diff --git a/tests/Makefile.am b/tests/Makefile.am
index d483fcb..a57bdf1 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -39,6 +39,7 @@ tests_VALASOURCES = \
        testreadonlyset.vala \
        testset.vala \
        testtreemap.vala \
+       testtreemultiset.vala \
        testtreeset.vala \
        $(NULL)
 
diff --git a/tests/testmain.vala b/tests/testmain.vala
index 41709d5..ed66fb0 100644
--- a/tests/testmain.vala
+++ b/tests/testmain.vala
@@ -38,6 +38,7 @@ void main (string[] args) {
 	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 TreeMultiSetTests ().get_suite ());
 	TestSuite.get_root ().add_suite (new TreeSetTests ().get_suite ());
 
 	Test.run ();
diff --git a/tests/testtreemultiset.vala b/tests/testtreemultiset.vala
new file mode 100644
index 0000000..d5cb0e2
--- /dev/null
+++ b/tests/testtreemultiset.vala
@@ -0,0 +1,49 @@
+/* testtreemultiset.vala
+ *
+ * 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 TreeMultiSetTests : MultiSetTests {
+
+	public TreeMultiSetTests () {
+		base ("TreeMultiSet");
+		add_test ("[TreeMultiSet] selected functions", test_selected_functions);
+	}
+
+	public override void set_up () {
+		test_collection = new TreeMultiSet<string> ();
+	}
+
+	public override void tear_down () {
+		test_collection = null;
+	}
+
+	private void test_selected_functions () {
+		var test_multi_set = test_collection as TreeMultiSet<string>;
+
+		// Check the collection exists
+		assert (test_multi_set != null);
+
+		// Check the selected compare functions
+		assert (test_multi_set.compare_func == strcmp);
+	}
+}



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