[Debtags-commits] [svn] r1761 - in tagcoll/2.0: . tagcoll tagcoll/coll

Enrico Zini enrico at costa.debian.org
Thu May 11 02:41:02 UTC 2006


Author: enrico
Date: Thu May 11 02:41:02 2006
New Revision: 1761

Modified:
   tagcoll/2.0/   (props changed)
   tagcoll/2.0/tagcoll/TextFormat.cc
   tagcoll/2.0/tagcoll/TextFormat.h
   tagcoll/2.0/tagcoll/TextFormat.tcc
   tagcoll/2.0/tagcoll/coll/simple.cc
Log:
 r2696 at viaza:  enrico | 2006-05-10 16:28:49 -0500
 Added tests for StdioWriter
 Added OstreamWriter


Modified: tagcoll/2.0/tagcoll/TextFormat.cc
==============================================================================
--- tagcoll/2.0/tagcoll/TextFormat.cc	(original)
+++ tagcoll/2.0/tagcoll/TextFormat.cc	Thu May 11 02:41:02 2006
@@ -279,6 +279,80 @@
 	ensure_equals(i->second.getRemoved().size(), 2u);
 }
 
+template<> template<>
+void to::test<3>()
+{
+	string reference =
+		"foo:\n"
+		"foo: antani\n"
+		"foo: antani, blinda\n"
+		"foo, bar: antani, blinda\n";
+	char buf[1000];
+	FILE* out = fmemopen(buf, 1000, "w");
+	ensure(out != 0);
+
+	textformat::StdioWriter writer(out);
+
+	set<string> s1;
+	s1.insert("foo");
+	*writer = make_pair(s1, wibble::Empty<string>());
+	++writer;
+
+	set<string> s2;
+	s2.insert("antani");
+	*writer = make_pair(s1, s2);
+	++writer;
+
+	s2.insert("blinda");
+	*writer = make_pair(s1, s2);
+	++writer;
+
+	s1.clear();
+	s1.insert("foo"); s1.insert("bar");
+	*writer = make_pair(s1, s2);
+	++writer;
+
+	fclose(out);
+
+	string outstr(buf);
+	ensure_equals(reference, outstr);
+}
+
+template<> template<>
+void to::test<4>()
+{
+	string reference =
+		"foo\n"
+		"foo: antani\n"
+		"foo: antani, blinda\n"
+		"bar, foo: antani, blinda\n";
+	stringstream out;
+
+	textformat::OstreamWriter writer(out);
+
+	set<string> s1;
+	s1.insert("foo");
+	*writer = make_pair(s1, wibble::Empty<string>());
+	++writer;
+
+	set<string> s2;
+	s2.insert("antani");
+	*writer = make_pair(s1, s2);
+	++writer;
+
+	s2.insert("blinda");
+	*writer = make_pair(s1, s2);
+	++writer;
+
+	s1.clear();
+	s1.insert("foo"); s1.insert("bar");
+	*writer = make_pair(s1, s2);
+	++writer;
+
+	ensure_equals(out.str(), reference);
+}
+
+
 }
 }
 

Modified: tagcoll/2.0/tagcoll/TextFormat.h
==============================================================================
--- tagcoll/2.0/tagcoll/TextFormat.h	(original)
+++ tagcoll/2.0/tagcoll/TextFormat.h	Thu May 11 02:41:02 2006
@@ -67,6 +67,18 @@
 	StdioWriter& operator=(const std::pair<Items, Tags>& data);
 };
 
+class OstreamWriter : public wibble::mixin::OutputIterator<OstreamWriter>
+{
+protected:
+	std::ostream& out;
+
+public:
+	OstreamWriter(std::ostream& out) : out(out) {}
+
+	template<typename Items, typename Tags>
+	OstreamWriter& operator=(const std::pair<Items, Tags>& data);
+};
+
 /**
  * Parse an element from input
  *

Modified: tagcoll/2.0/tagcoll/TextFormat.tcc
==============================================================================
--- tagcoll/2.0/tagcoll/TextFormat.tcc	(original)
+++ tagcoll/2.0/tagcoll/TextFormat.tcc	Thu May 11 02:41:02 2006
@@ -83,6 +83,32 @@
 	return *this;
 }
 
+template<typename Items, typename Tags>
+OstreamWriter& OstreamWriter::operator=(const std::pair<Items, Tags>& data)
+{
+	for (typename Items::const_iterator i = data.first.begin();
+			i != data.first.end(); ++i)
+	{
+		if (i != data.first.begin())
+			out << ", ";
+		out << *i;
+	}
+	if (data.second.begin() != data.second.end())
+	{
+		out << ": ";
+		for (typename Tags::const_iterator i = data.second.begin();
+				i != data.second.end(); ++i)
+		{
+			if (i != data.second.begin())
+				out << ", ";
+			out << *i;
+		}
+	}
+	out << endl;
+	return *this;
+}
+
+
 
 // item1, item2, item3: tag1, tag2, tag3
 

Modified: tagcoll/2.0/tagcoll/coll/simple.cc
==============================================================================
--- tagcoll/2.0/tagcoll/coll/simple.cc	(original)
+++ tagcoll/2.0/tagcoll/coll/simple.cc	Thu May 11 02:41:02 2006
@@ -54,6 +54,7 @@
 }
 
 #include <tagcoll/Patches.tcc>
+#include <tagcoll/coll/simple.tcc>
 #include <tagcoll/test-utils.tcc>
 
 #endif



More information about the Debtags-commits mailing list