backup_helper_test.cpp revision 3ad977b41c6e4ef30c2f4f316b909b742ffc04aa
13ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato#include <utils/backup_helpers.h> 23ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 33ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato#include <stdio.h> 43ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato#include <string.h> 53ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 63ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato#if !(TEST_BACKUP_HELPERS) 73ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato#error These tests require TEST_BACKUP_HELPERS to be defined. 83ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato#endif 93ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 103ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato// ============================================================ 113ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato// ============================================================ 123ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onoratotypedef int (*test_func)(); 133ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 143ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onoratostruct Test { 153ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato const char* name; 163ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato test_func func; 173ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato int result; 183ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato bool run; 193ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato}; 203ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 213ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe OnoratoTest TESTS[] = { 223ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato { "backup_helper_test_empty", backup_helper_test_empty, 0, false }, 233ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato { "backup_helper_test_four", backup_helper_test_four, 0, false }, 243ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato { "backup_helper_test_files", backup_helper_test_files, 0, false }, 253ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato { 0, NULL, 0, false} 263ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato}; 273ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 283ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onoratoint 293ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onoratomain(int argc, const char** argv) 303ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato{ 313ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato Test* t; 323ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 333ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato if (argc == 1) { 343ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato t = TESTS; 353ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato while (t->name) { 363ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato t->run = true; 373ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato t++; 383ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } 393ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } else { 403ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato t = TESTS; 413ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato while (t->name) { 423ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato for (int i=1; i<argc; i++) { 433ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato if (0 == strcmp(t->name, argv[i])) { 443ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato t->run = true; 453ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } 463ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } 473ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato t++; 483ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } 493ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } 503ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 513ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato int testCount = 0; 523ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato t = TESTS; 533ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato while (t->name) { 543ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato if (t->run) { 553ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato testCount++; 563ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } 573ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato t++; 583ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } 593ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 603ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 613ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato int failed = 0; 623ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato int i = 1; 633ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato t = TESTS; 643ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato while (t->name) { 653ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato if (t->run) { 663ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato printf("===== Running %s (%d of %d) ==============================\n", 673ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato t->name, i, testCount); 683ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato fflush(stdout); 693ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato fflush(stderr); 703ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato t->result = t->func(); 713ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato if (t->result != 0) { 723ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato failed++; 733ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato printf("failed\n"); 743ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } else { 753ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato printf("passed\n"); 763ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } 773ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato i++; 783ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } 793ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato t++; 803ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } 813ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 823ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato printf("=================================================================\n"); 833ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato if (failed == 0) { 843ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato printf("All %d test(s) passed\n", testCount); 853ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } else { 863ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato printf("Tests failed: (%d of %d)\n", failed, testCount); 873ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato t = TESTS; 883ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato while (t->name) { 893ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato if (t->run) { 903ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato if (t->result != 0) { 913ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato printf(" %s\n", t->name); 923ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } 933ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } 943ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato t++; 953ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } 963ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato } 973ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato} 98