/* * Copyright 2013 (c) Anna Schumaker. */ #include extern "C" { #include #include #include #include #include #include } #include "test.h" static queue *Q_NULL = NULL; static void test_init() { filter_init(); tags_init(); playlist_init(NULL); collection_init(NULL); history_init(NULL); test_equal(deck :: next(), NULL); tempq_init(NULL); test_equal(deck :: next(), NULL); tempq_move(NULL, 1); test_equal(tempq_get(0), NULL); test_equal(deck :: get_queues().size(), (size_t)0); } static void test_tempq() { struct queue *q0, *q1; q0 = tempq_alloc(NULL, 0); test_not_equal(q0, NULL); test_equal(queue_has_flag(q0, Q_ENABLED), true); test_equal(queue_has_flag(q0, Q_RANDOM), false); test_equal(queue_has_flag(q0, Q_SAVE_SORT), true); test_equal(queue_has_flag(q0, Q_SAVE_FLAGS), true); test_equal(tempq_get(0), q0); q1 = tempq_alloc(NULL, Q_RANDOM); test_not_equal(q1, NULL); test_equal(queue_has_flag(q1, Q_ENABLED), true); test_equal(queue_has_flag(q1, Q_RANDOM), true); test_equal(queue_has_flag(q1, Q_SAVE_SORT), true); test_equal(queue_has_flag(q1, Q_SAVE_FLAGS), true); test_equal(tempq_get(1), q1); tempq_move(q1, 0); test_equal(tempq_get(0), q1); test_equal(tempq_get(1), q0); test_equal(tempq_get(2), NULL); tempq_move(q0, 1); test_equal(tempq_get(0), q1); test_equal(tempq_get(1), q0); test_equal(tempq_get(2), NULL); tempq_free(q0); test_equal(tempq_get(0), q1); tempq_free(q1); test_equal(tempq_get(0), NULL); history_deinit(); collection_deinit(); playlist_deinit(); tags_deinit(); filter_deinit(); } static void test_next_prev() { test_cp_data_dir(); filter_init(); tags_init(); playlist_init(NULL); collection_init(NULL); history_init(NULL); tempq_init(NULL); std::list::iterator it = deck :: get_queues().begin(); queue *q = history_get_queue(); queue *q0 = tempq_get(0); queue *q1 = tempq_get(1); queue_unset_flag(q0, Q_RANDOM); for (unsigned int i = 0; i < 4; i++) queue_add(q0, track_get(i)); test_not_equal(q, Q_NULL); test_equal(queue_size(q), (unsigned)0); for (unsigned int i = 0; i < 2; i++) { test_equal(deck :: next()->tr_dbe.dbe_index, (unsigned)0); test_equal(deck :: next()->tr_dbe.dbe_index, (unsigned)1); test_equal(deck :: next()->tr_dbe.dbe_index, (unsigned)2); test_equal(deck :: next()->tr_dbe.dbe_index, (unsigned)3); } test_equal(deck :: get_queues().size(), (size_t)1); queue_unset_flag(q1, Q_ENABLED); queue_unset_flag(collection_get_queue(), Q_RANDOM); test_equal(queue_size(q1), (unsigned)5); deck :: next(); test_equal(queue_size(q1), (unsigned)5); queue_set_flag(q1, Q_ENABLED); for (unsigned int i = 0; i < 5; i++) deck :: next(); test_equal(deck :: get_queues().size(), (size_t)0); } DECLARE_UNIT_TESTS( UNIT_TEST("Temporary Queue Initialization", test_init), UNIT_TEST("Temporary Queue", test_tempq), UNIT_TEST("Deck Next and Prev", test_next_prev), );