[Aptitude-svn-commit] r3682 - in branches/aptitude-0.3/aptitude: . src/generic/tests

Daniel Burrows dburrows at costa.debian.org
Tue Jul 26 00:56:25 UTC 2005


Author: dburrows
Date: Tue Jul 26 00:56:22 2005
New Revision: 3682

Modified:
   branches/aptitude-0.3/aptitude/ChangeLog
   branches/aptitude-0.3/aptitude/src/generic/tests/test_tags.cc
Log:
Add more unit tests for tags.

Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog	(original)
+++ branches/aptitude-0.3/aptitude/ChangeLog	Tue Jul 26 00:56:22 2005
@@ -1,5 +1,9 @@
 2005-07-25  Daniel Burrows  <dburrows at debian.org>
 
+	* src/generic/tests/test_tags.cc:
+
+	  Test the tag parser more exhaustively.
+
 	* doc/en/aptitude.xml, src/generic/matchers.cc:
 
 	  Add a tag matcher, to match against the new Tags field.

Modified: branches/aptitude-0.3/aptitude/src/generic/tests/test_tags.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/generic/tests/test_tags.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/generic/tests/test_tags.cc	Tue Jul 26 00:56:22 2005
@@ -28,9 +28,10 @@
   CPPUNIT_TEST_SUITE(TagTest);
 
   CPPUNIT_TEST(testTagTraverse);
-  //CPPUNIT_TEST(testTagEqual);
-  //CPPUNIT_TEST(testTagOrder);
-  //CPPUNIT_TEST(testTagListTraverse);
+  CPPUNIT_TEST(testTagStr);
+  CPPUNIT_TEST(testTagEqual);
+  CPPUNIT_TEST(testTagOrder);
+  CPPUNIT_TEST(testTagListTraverse);
 
   CPPUNIT_TEST_SUITE_END();
 private:
@@ -90,15 +91,82 @@
 	++s;
       }
   }
+
+  void testTagStr()
+  {
+    const char **s=basicTagEntries;
+    while(*s)
+      {
+	tag parsed=parseTag(*s);
+	CPPUNIT_ASSERT(parsed.str() == "tag1::tag2::tag3");
+	++s;
+      }
+  }
+
+  void testTagEqual()
+  {
+    for(const char **s=basicTagEntries; *s; ++s)
+      for(const char **t=basicTagEntries; *t; ++t)
+	CPPUNIT_ASSERT(parseTag(*s) == parseTag(*t));
+  }
+
+  void testTagOrder()
+  {
+    for(const char **s = tagorder; *s; ++s)
+      {
+	tag ps = parseTag(*s);
+
+	CPPUNIT_ASSERT(ps == ps);
+
+	for(const char **t = s; *t; ++t)
+	  {
+	    tag pt = parseTag(*t);
+
+	    CPPUNIT_ASSERT(ps <= pt);
+	    CPPUNIT_ASSERT(pt >= ps);
+
+	    if(t != s)
+	      {
+		CPPUNIT_ASSERT(ps < pt);
+		CPPUNIT_ASSERT(ps > pt);
+	      }
+	  }
+      }
+  }
+
+  void testTagListTraverse()
+  {
+    for(const char **l = tagLists; *l; ++l)
+      {
+	tag_list lp(*l, (*l)+strlen(*l));
+
+	tag_list :: const_iterator i = lp.begin();
+
+	CPPUNIT_ASSERT(i != lp.end());
+	CPPUNIT_ASSERT((*i).str() == "a::b");
+
+	++i;
+
+	CPPUNIT_ASSERT(i != lp.end());
+	CPPUNIT_ASSERT((*i).str() == "c::d");
+
+	++i;
+
+	CPPUNIT_ASSERT(i != lp.end());
+	CPPUNIT_ASSERT((*i).str() == "e::f");
+
+	++i;
+
+	CPPUNIT_ASSERT(i == lp.end());
+      }
+  }
 };
 
 const char *TagTest::basicTagEntries[]={
   "tag1::tag2::tag3",
-  "tag1 ::tag2::tag3",
-  "tag1:: tag2::tag3",
   "  tag1::tag2::tag3",
   "tag1::tag2::tag3  ",
-  "  tag1 :: tag2 :: tag3",
+  "  tag1::tag2::tag3  ",
   0
 };
 
@@ -111,10 +179,10 @@
 // Tag order checks.  The tag ordering function should say that
 // forall n . tagorder[n]<tagorder[n+1]
 const char *TagTest::tagorder[]={
-  "tag1 :: tag2::tag3",
+  "tag1::tag2::tag3  ",
   "  tag1::tag3::tag3",
-  "tag2::tag1:: tag1",
-  "tag3::tag2::tag2",
+  "tag2::tag1::tag1",
+  " tag3::tag2::tag2",
   "tag3::tag2::tag3",
   0
 };



More information about the Aptitude-svn-commit mailing list