Home | History | Annotate | Download | only in tests
      1 /**
      2  * @file string_filter_tests.cpp
      3  *
      4  * @remark Copyright 2003 OProfile authors
      5  * @remark Read the file COPYING
      6  *
      7  * @author John Levon
      8  * @author Philippe Elie
      9  */
     10 
     11 #include <stdlib.h>
     12 
     13 #include <iostream>
     14 
     15 #include "string_filter.h"
     16 
     17 using namespace std;
     18 
     19 #define check(filter, str, result) \
     20 	if (filter.match(str) != result) { \
     21 		cerr << "\"" << str << "\" matched with " #filter \
     22 		     << " did not return " #result << endl; \
     23 		exit(EXIT_FAILURE); \
     24 	}
     25 
     26 int main()
     27 {
     28 	string_filter f1;
     29 	check(f1, "", true);
     30 	check(f1, "ok", true);
     31 
     32 	string_filter f2("ok", "");
     33 	check(f2, "ok", true);
     34 	check(f2, "no", false);
     35 
     36 	string_filter f3("", "no");
     37 	check(f3, "ok", true);
     38 	check(f3, "no", false);
     39 
     40 	string_filter f4("ok,ok2,", "");
     41 	check(f4, "ok", true);
     42 	check(f4, "ok2", true);
     43 	check(f4, "no", false);
     44 
     45 	string_filter f5("ok,ok2", "no,no2");
     46 	check(f5, "ok", true);
     47 	check(f5, "ok2", true);
     48 	check(f5, "no", false);
     49 	check(f5, "no2", false);
     50 
     51 	vector<string> v1;
     52 	vector<string> v2;
     53 
     54 	string_filter f6(v1, v2);
     55 	check(f6, "", true);
     56 	check(f6, "ok", true);
     57 
     58 	v1.push_back("ok");
     59 	v1.push_back("ok2");
     60 
     61 	string_filter f7(v1, v2);
     62 	check(f7, "ok", true);
     63 	check(f7, "ok2", true);
     64 	check(f7, "no", false);
     65 
     66 	v1.clear();
     67 
     68 	v2.push_back("no");
     69 	v2.push_back("no2");
     70 
     71 	string_filter f8(v1, v2);
     72 	check(f8, "ok", true);
     73 	check(f8, "no", false);
     74 	check(f8, "no", false);
     75 
     76 	v1.push_back("ok");
     77 	v1.push_back("ok2");
     78 
     79 	string_filter f9(v1, v2);
     80 	check(f9, "ok", true);
     81 	check(f9, "no2", false);
     82 
     83 	string_filter f10(" foo ", "");
     84 	check(f10, " foo ", true);
     85 	check(f10, " foo", false);
     86 	check(f10, "foo ", false);
     87 	check(f10, "foo", false);
     88 
     89 	return EXIT_SUCCESS;
     90 }
     91