menu: added new Keywords tag to .desktop files
[barry.git] / test / libtest.cc
blob166d44965e7e55bd67ef5ee1519ba2a0e74d451a
1 ///
2 /// \file libtest.cc
3 /// Routines for testing the Barry libraries
4 ///
6 /*
7 Copyright (C) 2011-2013, Net Direct Inc. (http://www.netdirect.ca/)
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU General Public License in the COPYING file at the
19 root directory of this project for more details.
22 #include "libtest.h"
23 #include <vector>
24 #include <iostream>
25 #include <iomanip>
26 using namespace std;
28 typedef std::pair<const char*, testfunc> TestPair;
29 typedef std::vector<TestPair> TestList;
31 TestList& GetTests()
33 static TestList tests;
34 return tests;
37 void AddTest(const char *name, testfunc test)
39 GetTests().push_back(TestPair(name, test));
42 int main()
44 int failures = 0;
46 TestList::iterator b = GetTests().begin(), e = GetTests().end();
47 for( ; b != e; ++b ) {
48 cout << "Testing: " << b->first << "... " << flush;
49 if( !(*b->second)() ) {
50 failures++;
51 cout << "FAILED" << endl;
53 else {
54 cout << "passed" << endl;
58 if( failures ) {
59 cout << dec << failures << " tests failed" << endl;
61 else {
62 cout << "All tests passed" << endl;
65 return failures ? 1 : 0;