From 1da1260af72b20126176e2b8f73f7b7fd5952ce1 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 12 Dec 2023 21:27:08 +0100 Subject: Split tests into unit and dw (graphical) Graphical tests for the dw (Dillo Widget) are moved to test/dw, while unit tests are placed into test/unit. All tests are compiled with "make check" but only the tests that can run without intervention and without a graphic display are executed. --- test/unit/containers.cc | 157 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 test/unit/containers.cc (limited to 'test/unit/containers.cc') diff --git a/test/unit/containers.cc b/test/unit/containers.cc new file mode 100644 index 00000000..af317d7e --- /dev/null +++ b/test/unit/containers.cc @@ -0,0 +1,157 @@ +#include "../lout/object.hh" +#include "../lout/container.hh" + +using namespace lout::object; +using namespace lout::container::typed; + +class ReverseComparator: public Comparator +{ +private: + Comparator *reversed; + +public: + ReverseComparator (Comparator *reversed) { this->reversed = reversed; } + int compare(Object *o1, Object *o2) { return - reversed->compare (o1, o2); } +}; + +void testHashSet () +{ + puts ("--- testHashSet ---"); + + HashSet h(true); + + h.put (new String ("one")); + h.put (new String ("two")); + h.put (new String ("three")); + + puts (h.toString()); +} + +void testHashTable () +{ + puts ("--- testHashTable ---"); + + HashTable h(true, true); + + h.put (new String ("one"), new Integer (1)); + h.put (new String ("two"), new Integer (2)); + h.put (new String ("three"), new Integer (3)); + + puts (h.toString()); + + h.put (new String ("one"), new Integer (4)); + h.put (new String ("two"), new Integer (5)); + h.put (new String ("three"), new Integer (6)); + + puts (h.toString()); +} + +void testVector1 () +{ + ReverseComparator reverse (&standardComparator); + + puts ("--- testVector (1) ---"); + + Vector v (true, 1); + + v.put (new String ("one")); + v.put (new String ("two")); + v.put (new String ("three")); + puts (v.toString()); + + v.sort (&reverse); + puts (v.toString()); + + v.sort (); + puts (v.toString()); +} + +void testVector2 () +{ + puts ("--- testVector (2) ---"); + + Vector v (true, 1); + + v.insertSorted (new String ("one")); + puts (v.toString()); + + v.insertSorted (new String ("two")); + puts (v.toString()); + + v.insertSorted (new String ("three")); + puts (v.toString()); + + v.insertSorted (new String ("five")); + puts (v.toString()); + + v.insertSorted (new String ("six")); + puts (v.toString()); + + v.insertSorted (new String ("four")); + puts (v.toString()); + + for (int b = 0; b < 2; b++) { + bool mustExist = b; + printf ("mustExist = %s\n", mustExist ? "true" : "false"); + + String k ("alpha"); + printf (" '%s' -> %d\n", k.chars(), v.bsearch (&k, mustExist)); + + for (Iterator it = v.iterator(); it.hasNext(); ) { + String *k1 = it.getNext(); + printf (" '%s' -> %d\n", k1->chars(), v.bsearch (k1, mustExist)); + + char buf[64]; + strcpy (buf, k1->chars()); + strcat (buf, "-var"); + String k2 (buf); + printf (" '%s' -> %d\n", k2.chars(), v.bsearch (&k2, mustExist)); + } + } +} + +void testVector3 () +{ + // Regression test: resulted once incorrently (0, 2, 3), should + // result in (1, 2, 3). + + puts ("--- testVector (3) ---"); + + Vector v (true, 1); + String k ("omega"); + + v.put (new String ("alpha")); + printf (" -> %d\n", v.bsearch (&k, false)); + v.put (new String ("beta")); + printf (" -> %d\n", v.bsearch (&k, false)); + v.put (new String ("gamma")); + printf (" -> %d\n", v.bsearch (&k, false)); +} + +void testStackAsQueue () +{ + puts ("--- testStackAsQueue ---"); + + Stack s (true); + + for (int i = 1; i <= 10; i++) + s.pushUnder (new Integer (i)); + + while (s.size () > 0) { + Integer *i = s.getTop (); + printf ("%d\n", i->getValue ()); + s.pop (); + } +} + +int main (int argc, char *argv[]) +{ + testHashSet (); + testHashTable (); + testVector1 (); + testVector2 (); + testVector3 (); + testStackAsQueue (); + + return 0; +} -- cgit v1.2.3