31 #include <tagcoll/coll/simple.h>
32 #include <tagcoll/stream/sink.h>
34 #include <wibble/operators.h>
38 #ifndef EPT_DEBTAGS_TESTH
39 #define EPT_DEBTAGS_TESTH
41 using namespace tagcoll;
44 using namespace ept::debtags;
45 using namespace wibble::operators;
62 int items = 0, tags = 0;
63 debtags.outputSystem(stream::countingSink(items, tags));
65 int pitems = 0, ptags = 0;
66 debtags.outputPatched(stream::countingSink(pitems, ptags));
70 assert(items <= pitems);
71 assert(tags <= ptags);
77 std::set<Tag> tags = debtags.getTagsOfItem(p);
78 assert( !tags.empty() );
81 for ( std::set< Tag >::iterator i = tags.begin(); i != tags.end(); ++ i ) {
82 std::cerr << i->id() <<
": " << i->fullname() << std::endl;
84 std::cerr <<
"---" << std::endl;
85 Tag t = voc().tagByName(
"interface::commandline" );
86 std::cerr << t.
id() <<
": " << t.
fullname() << std::endl;
89 assert_eq( tags.size(), 8u );
90 assert( voc().tagByName(
"devel::buildtools" ) <= tags );
91 assert( voc().tagByName(
"implemented-in::c++" ) <= tags );
92 assert( voc().tagByName(
"interface::commandline" ) <= tags );
93 assert( voc().tagByName(
"role::program" ) <= tags );
94 assert( voc().tagByName(
"scope::application" ) <= tags );
95 assert( voc().tagByName(
"suite::debian" ) <= tags );
96 assert( voc().tagByName(
"use::searching" ) <= tags );
97 assert( voc().tagByName(
"works-with::software:package" ) <= tags );
108 std::set<Tag> tags = debtags.getTagsOfItem(p);
109 assert(!tags.empty());
152 std::set<string> packages = debtags.getItemsHavingTags(tags);
154 assert(!packages.empty());
162 assert( p <= packages );
165 Tag tag = *tags.begin();
175 packages = debtags.getItemsHavingTags(ts);
178 assert(!packages.empty());
180 assert( p <= packages );
187 std::string patchfile = Path::debtagsUserSourceDir() +
"patch";
188 unlink(patchfile.c_str());
193 std::set<Tag> tags = debtags.getTagsOfItem(p);
194 assert(!tags.empty());
197 Tag t = voc().tagByName(
"use::gameplaying");
198 assert(! (t <= tags) );
201 PatchList<string, Tag> change;
202 change.addPatch(Patch<string, Tag>(p, wibble::singleton(t), wibble::Empty<Tag>()));
203 debtags.applyChange(change);
206 PatchList<string, Tag> tmp = debtags.changes();
207 assert(tmp.size() > 0);
208 assert_eq(tmp.size(), 1u);
211 tags = debtags.getTagsOfItem(p);
212 assert(!tags.empty());
214 t = voc().tagByName(
"use::gameplaying");
221 FILE* in = fopen(patchfile.c_str(),
"r");
224 while ((c = getc(in)) != EOF)
228 assert_eq(writtenPatch,
string(
"debtags: +use::gameplaying\n"));
230 unlink(patchfile.c_str());
233 debtags.applyChange(change);
236 tmp = debtags.changes();
237 assert_eq(tmp.size(), 1u);
238 assert_eq(tmp.begin()->first, p);
239 assert_eq(tmp.begin()->second.item, p);
251 assert(empty.
begin() == empty.
end());
255 tagcoll::PatchList<std::string, Tag> patches = empty.
changes();
256 assert(patches.empty());
266 tagcoll::coll::Simple<string, Tag> coll;
268 assert_eq(coll.itemCount(), 0u);
273 assert_eq(coll.itemCount(), 0u);
278 #include <ept/debtags/debtags.tcc>
279 #include <tagcoll/coll/simple.tcc>