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