//Use STL here because unit tests by default should not trust our own code. #include <vector> #include <string> #include <tuple> #include <string.h> int main(int argc, char* argv[]) { std::vector<std::tuple<std::string, bool, bool(*)(void)>> tests; #define ADD_TEST(name) extern bool test_##name(); tests.push_back(std::make_tuple(#name, false, &test_##name)) ADD_TEST(memory); ADD_TEST(hashmap); ADD_TEST(list); ADD_TEST(string); ADD_TEST(json); ADD_TEST(time); ADD_TEST(thread); #ifdef WITH_MONGO ADD_TEST(mongo_replicable); #endif char validArguments[512]; validArguments[0] = '\0'; bool all = false; for(auto& test : tests) { sprintf(validArguments, "%s --%s", validArguments, std::get<0>(test).c_str()); } if(argc <= 1) { all = true; } for(int i = 1; i < argc; ++i) { if(!strcmp(argv[i], "--all")) { all = true; continue; } bool found = false; for(auto& test : tests) { char arg[64]; sprintf(arg, "--%s", std::get<0>(test).c_str()); if(!strcmp(argv[i], arg)) { std::get<1>(test) = true; found = true; break; } } if(!found) { printf("Invalid argument ignored: %s\n", argv[i]); printf("Valid arguments: %s --all\n", validArguments); } } int exitcode = 0; for(auto& test : tests) { if(all || std::get<1>(test)) { printf("Running test '%s'... ", std::get<0>(test).c_str()); if(std::get<2>(test)()) { puts("Success!"); } else { ++exitcode; puts("FAILED!"); } } } fflush(stdout); return exitcode; }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#7 | 14144 | ShadauxCat |
Switching unit tests to gtest. 100 is a decent number of tests to start with, but it needs to be more like 400 to test the current codebase. #review-14145 |
||
#6 | 14100 | ShadauxCat |
-Added Deque implementation using circular buffer. -Fixed List::Insert() and ForwardList::Insert() inserting after the iterator instead of before it. Adjusted the unit tests to compensate. -Fixed a couple of small vector bugs #review-14101 |
||
#5 | 14092 | ShadauxCat |
Added BitSet (statically sized at compile time) and corresponding unit test. BitVector (dynamically sized to the largest input it receives) to come next. #review-14093 |
||
#4 | 14091 | ShadauxCat |
-Created Vector class, iterator, and unit test -Made list iterator a bidirectional iterator when created from a doubly-linked list. (It still has operator-- when created from singly-linked list, but it won't compile if it's used.) -Changed front() and back() in list classes to Front() and Back() #review-14083 |
||
#3 | 12508 | ShadauxCat |
-Added threading library. Currently only functional for Linux; Windows will fail to link. (I will fix this soon.) -Fixed missing move and copy constructors in List and ForwardList -Fixed broken move constructor in HashMap -Fixed missing const get() in HashMap -Fixed broken operator-> in ListIterator -Added sprawl::noncopyable -Added sketch headers for filesystem library -Made StringLiteral hashable, added special hashes for pointers and integers in murmur3 -Fixed compiler warning in async_network -Updated memory allocators to use new threading library for mutexes -Added accessibility to sprawl::StringLiteral to be able toa ccess its pointer and length and perform pointer comparisons #review-12504 |
||
#2 | 11500 | ShadauxCat |
Added sprawl::time library. Fixed JSON Unit Test bug. |
||
#1 | 11496 | ShadauxCat | Initial checkin: Current states for csbuild and libSprawl |