18cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/**
28cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @file string_filter_tests.cpp
38cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd *
48cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Copyright 2003 OProfile authors
58cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Read the file COPYING
68cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd *
78cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author John Levon
88cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author Philippe Elie
98cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */
108cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
118cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <stdlib.h>
128cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
138cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <iostream>
148cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
158cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include "string_filter.h"
168cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
178cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddusing namespace std;
188cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
198cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#define check(filter, str, result) \
208cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	if (filter.match(str) != result) { \
218cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		cerr << "\"" << str << "\" matched with " #filter \
228cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		     << " did not return " #result << endl; \
238cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		exit(EXIT_FAILURE); \
248cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	}
258cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
268cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddint main()
278cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{
288cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	string_filter f1;
298cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f1, "", true);
308cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f1, "ok", true);
318cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
328cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	string_filter f2("ok", "");
338cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f2, "ok", true);
348cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f2, "no", false);
358cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
368cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	string_filter f3("", "no");
378cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f3, "ok", true);
388cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f3, "no", false);
398cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
408cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	string_filter f4("ok,ok2,", "");
418cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f4, "ok", true);
428cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f4, "ok2", true);
438cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f4, "no", false);
448cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
458cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	string_filter f5("ok,ok2", "no,no2");
468cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f5, "ok", true);
478cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f5, "ok2", true);
488cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f5, "no", false);
498cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f5, "no2", false);
508cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
518cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	vector<string> v1;
528cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	vector<string> v2;
538cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
548cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	string_filter f6(v1, v2);
558cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f6, "", true);
568cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f6, "ok", true);
578cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
588cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	v1.push_back("ok");
598cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	v1.push_back("ok2");
608cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
618cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	string_filter f7(v1, v2);
628cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f7, "ok", true);
638cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f7, "ok2", true);
648cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f7, "no", false);
658cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
668cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	v1.clear();
678cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
688cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	v2.push_back("no");
698cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	v2.push_back("no2");
708cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
718cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	string_filter f8(v1, v2);
728cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f8, "ok", true);
738cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f8, "no", false);
748cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f8, "no", false);
758cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
768cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	v1.push_back("ok");
778cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	v1.push_back("ok2");
788cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
798cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	string_filter f9(v1, v2);
808cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f9, "ok", true);
818cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f9, "no2", false);
828cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
838cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	string_filter f10(" foo ", "");
848cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f10, " foo ", true);
858cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f10, " foo", false);
868cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f10, "foo ", false);
878cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	check(f10, "foo", false);
888cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
898cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	return EXIT_SUCCESS;
908cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}
91