/* * Copyright 2013 (c) Anna Schumaker. */ #include #include #include #include void test_flags(const std :: string &test, Playlist &plist, unsigned int expected) { print("Test %s: ", test.c_str()); if (plist.get_flags() == expected) print("SUCCESS\n"); else print("FAILED\n"); } void test_add_tracks(const std :: string & test, Playlist &plist, unsigned int start, unsigned int end) { bool passed = true; print("Test %s: ", test.c_str()); for (unsigned int i = start; i <= end; i++) { if (plist.add(i) != (i - start)) passed = false; } if (passed == true) print("SUCCESS\n"); else print("FAILED\n"); } void test_rm_tracks(const std :: string & test, Playlist & plist, unsigned int n) { unsigned int size = plist.size(); unsigned int expected = size - n; print("Test %s: ", test.c_str()); for (unsigned int i = 0; i < n; i++) plist.del(i); if (plist.size() == expected) print("SUCCESS\n"); else print("FAILED\n"); } /* Test flag setting / unsetting / getting */ void test_0() { Playlist plist(PL_ENABLED); test_flags("0a", plist, PL_ENABLED); plist.set_flag(PL_RANDOM); test_flags("0b", plist, PL_ENABLED | PL_RANDOM); plist.set_flag(PL_ENABLED); test_flags("0c", plist, PL_ENABLED | PL_RANDOM); plist.unset_flag(PL_ENABLED); test_flags("0d", plist, PL_RANDOM); plist.unset_flag(PL_RANDOM); test_flags("0f", plist, 0); print("\n"); } /* Test adding / deleting / size queries */ void test_1() { Playlist plist(PL_ENABLED); test_add_tracks("1a", plist, 10, 49); print("Test 1b: Plist size: %u\n", plist.size()); test_rm_tracks("1c", plist, 10); print("\n"); } /* Test read / write */ void test_2() { Playlist plist(PL_ENABLED); Playlist plist2(PL_ENABLED); File f("plist.lst", FILE_TYPE_DATA); plist.set_flag(PL_RANDOM); test_add_tracks("2a", plist, 0, 99); f.open(OPEN_WRITE); plist.write(f); f.close(); f.open(OPEN_READ); plist2.read(f); f.close(); print("Test 2b: "); if (plist.get_flags() != plist2.get_flags()) { print("FAILED: flag mismatch\n"); return; } else if (plist.size() != plist2.size()) { print("FAILED: size mismatch\n"); return; } print("SUCCESS\n\n"); } /* Sequential next() without removing tracks */ void test_3() { Playlist plist(PL_ENABLED); plist.set_flag(PL_LOCKED); test_add_tracks("3", plist, 0, 15); for (unsigned int i = 0; i < 20; i++) print("Selecting id: %u\n", plist.next()); print("\n"); } /* Sequential next() with removal */ void test_4() { Playlist plist(PL_ENABLED); test_add_tracks("4", plist, 0, 15); while (plist.size() > 0) print("Selecting id: %u\n", plist.next()); print("\n"); } /* Random next() without removing tracks */ void test_5() { Playlist plist(PL_ENABLED); plist.set_flag(PL_RANDOM); plist.set_flag(PL_LOCKED); test_add_tracks("5", plist, 0, 15); for (unsigned int i = 0; i < 30; i++) print("Selecting id: %u\n", plist.next()); print("\n"); } /* Random next() with removal */ void test_6() { Playlist plist(PL_ENABLED); plist.set_flag(PL_RANDOM); test_add_tracks("6", plist, 0, 15); while (plist.size() > 0) print("Selecting id: %u\n", plist.next()); } int main(int argc, char **argv) { srand(42); test_0(); test_1(); test_2(); test_3(); test_4(); test_5(); test_6(); return 0; }