backup_helper_test.cpp revision 2e1da32203b7f6df76023f25a7382a31fad6b19d
13ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato#include <utils/backup_helpers.h>
23ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato
33ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato#include <stdio.h>
43ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato#include <string.h>
53ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato
64535e40544aeb957d44fad75fbe5676effe03689Joe Onoratousing namespace android;
74535e40544aeb957d44fad75fbe5676effe03689Joe Onorato
8c825d3ebd6ca66e65e63fdc76f032e08aa2a8e22Joe Onorato#if TEST_BACKUP_HELPERS
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 },
254535e40544aeb957d44fad75fbe5676effe03689Joe Onorato    { "backup_helper_test_data_writer", backup_helper_test_data_writer, 0, false },
262e1da32203b7f6df76023f25a7382a31fad6b19dJoe Onorato    { "backup_helper_test_data_reader", backup_helper_test_data_reader, 0, false },
273ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    { 0, NULL, 0, false}
283ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato};
293ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato
303ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onoratoint
313ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onoratomain(int argc, const char** argv)
323ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato{
333ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    Test* t;
343ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato
353ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    if (argc == 1) {
363ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        t = TESTS;
373ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        while (t->name) {
383ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            t->run = true;
393ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            t++;
403ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        }
413ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    } else {
423ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        t = TESTS;
433ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        while (t->name) {
443ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            for (int i=1; i<argc; i++) {
453ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato                if (0 == strcmp(t->name, argv[i])) {
463ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato                    t->run = true;
473ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato                }
483ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            }
493ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            t++;
503ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        }
513ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    }
523ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato
533ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    int testCount = 0;
543ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    t = TESTS;
553ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    while (t->name) {
563ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        if (t->run) {
573ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            testCount++;
583ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        }
593ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        t++;
603ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    }
613ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato
623ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato
633ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    int failed = 0;
643ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    int i = 1;
653ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    t = TESTS;
663ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    while (t->name) {
673ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        if (t->run) {
683ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            printf("===== Running %s (%d of %d) ==============================\n",
693ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato                    t->name, i, testCount);
703ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            fflush(stdout);
713ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            fflush(stderr);
723ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            t->result = t->func();
733ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            if (t->result != 0) {
743ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato                failed++;
753ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato                printf("failed\n");
763ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            } else {
773ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato                printf("passed\n");
783ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            }
793ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            i++;
803ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        }
813ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        t++;
823ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    }
833ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato
843ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    printf("=================================================================\n");
853ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    if (failed == 0) {
863ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        printf("All %d test(s) passed\n", testCount);
873ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    } else {
883ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        printf("Tests failed: (%d of %d)\n", failed, testCount);
893ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        t = TESTS;
903ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        while (t->name) {
913ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            if (t->run) {
923ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato                if (t->result != 0) {
933ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato                    printf("  %s\n", t->name);
943ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato                }
953ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            }
963ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato            t++;
973ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato        }
983ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato    }
993ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato}
100c825d3ebd6ca66e65e63fdc76f032e08aa2a8e22Joe Onorato
101c825d3ebd6ca66e65e63fdc76f032e08aa2a8e22Joe Onorato#else
102c825d3ebd6ca66e65e63fdc76f032e08aa2a8e22Joe Onoratoint
103c825d3ebd6ca66e65e63fdc76f032e08aa2a8e22Joe Onoratomain(int argc, char** argv)
104c825d3ebd6ca66e65e63fdc76f032e08aa2a8e22Joe Onorato{
105c825d3ebd6ca66e65e63fdc76f032e08aa2a8e22Joe Onorato    printf ("test_backup_helper built without the tests\n");
106c825d3ebd6ca66e65e63fdc76f032e08aa2a8e22Joe Onorato    return 0;
107c825d3ebd6ca66e65e63fdc76f032e08aa2a8e22Joe Onorato}
108c825d3ebd6ca66e65e63fdc76f032e08aa2a8e22Joe Onorato#endif
109