diff options
author | Adam Szmigin <smidge@xsco.net> | 2019-08-26 22:27:25 +0100 |
---|---|---|
committer | Adam Szmigin <smidge@xsco.net> | 2019-08-26 22:27:25 +0100 |
commit | 1283369dccfe904bb1c42941c37434864792e23e (patch) | |
tree | 9655114e5c84299a7e6b6bf8adf178203af7936b /test | |
parent | 855f9e50f8a0c19ac4827e913cfd1790fdb0158a (diff) |
New methods for crate lookup and creation.
Diffstat (limited to 'test')
-rw-r--r-- | test/enginelibrary/crate_test.cpp | 89 | ||||
-rw-r--r-- | test/enginelibrary/performance_data_test.cpp | 56 | ||||
-rw-r--r-- | test/enginelibrary/track_test.cpp | 1 |
3 files changed, 110 insertions, 36 deletions
diff --git a/test/enginelibrary/crate_test.cpp b/test/enginelibrary/crate_test.cpp index 12081eb..313e056 100644 --- a/test/enginelibrary/crate_test.cpp +++ b/test/enginelibrary/crate_test.cpp @@ -28,6 +28,7 @@ #include <djinterop/crate.hpp> #include <djinterop/database.hpp> #include <djinterop/enginelibrary.hpp> +#include <djinterop/exceptions.hpp> #include <djinterop/track.hpp> #define STRINGIFY(x) STRINGIFY_(x) @@ -65,20 +66,6 @@ static void copy_test_db_to_temp_dir(const fs::path &temp_dir) fs::copy_file(perfdata_db_path, temp_dir / perfdata_db_path.filename()); } -static void populate_crate_1(djinterop::crate &c) -{ - c.set_name("Foo Crate"); - c.set_parent({}); - c.clear_tracks(); -} - -static void populate_crate_2(djinterop::crate &c) -{ - c.set_name("Bar Crate"); - c.set_parent({}); - c.clear_tracks(); -} - static void check_crate_2(djinterop::crate c) { BOOST_CHECK(c.is_valid()); @@ -168,13 +155,12 @@ BOOST_AUTO_TEST_CASE(ctor__nonexistent_crate__none) BOOST_CHECK(!db.crate_by_id(123)); } -BOOST_AUTO_TEST_CASE(save__new_crate_good_values__saves) +BOOST_AUTO_TEST_CASE(create_root_crate__good_values__succeeds) { // Arrange/Act auto temp_dir = create_temp_dir(); auto db = el::create_database(temp_dir.string(), el::version_1_7_1); - auto c = db.create_crate(""); - populate_crate_2(c); + auto c = db.create_root_crate("Bar Crate"); // Assert BOOST_CHECK_NE(c.id(), 0); @@ -184,13 +170,12 @@ BOOST_AUTO_TEST_CASE(save__new_crate_good_values__saves) remove_temp_dir(temp_dir); } -BOOST_AUTO_TEST_CASE(ctor_copy__saved_track__zero_id_and_copied_fields) +BOOST_AUTO_TEST_CASE(ctor_copy__saved_track__copied_fields) { // Arrange auto temp_dir = create_temp_dir(); auto db = el::create_database(temp_dir.string(), el::version_1_7_1); - auto c = db.create_crate(""); - populate_crate_2(c); + auto c = db.create_root_crate("Bar Crate"); // Act djinterop::crate copy{c}; @@ -202,15 +187,16 @@ BOOST_AUTO_TEST_CASE(ctor_copy__saved_track__zero_id_and_copied_fields) remove_temp_dir(temp_dir); } -BOOST_AUTO_TEST_CASE(save__existing_track_good_values__saves) +BOOST_AUTO_TEST_CASE(set_name__existing_track_good_values__saves) { - // Arrange/Act + // Arrange auto temp_dir = create_temp_dir(); auto db = el::create_database(temp_dir.string(), el::version_1_7_1); - auto c = db.create_crate(""); - populate_crate_1(c); + auto c = db.create_root_crate("Foo Crate"); auto crate_id = c.id(); - populate_crate_2(c); + + // Act + c.set_name("Bar Crate"); // Assert BOOST_CHECK_EQUAL(c.id(), crate_id); @@ -220,21 +206,18 @@ BOOST_AUTO_TEST_CASE(save__existing_track_good_values__saves) remove_temp_dir(temp_dir); } -BOOST_AUTO_TEST_CASE(save__change_hierarchy__saves) +BOOST_AUTO_TEST_CASE(set_parent__change_hierarchy__saves) { // Arrange auto temp_dir = create_temp_dir(); auto db = el::create_database(temp_dir.string(), el::version_1_7_1); // Arrange a hierarchy of c1 (root) -> c2 -> c3 - auto c1 = db.create_crate(""); - auto c2 = db.create_crate(""); - auto c3 = db.create_crate(""); + auto c1 = db.create_root_crate("Grandfather"); + auto c2 = db.create_root_crate("Father"); + auto c3 = db.create_root_crate("Son"); // Act - c1.set_name("Grandfather"); - c2.set_name("Father"); c2.set_parent(c1); - c3.set_name("Son"); c3.set_parent(c2); // Change c2's parent c2.set_parent({}); @@ -247,7 +230,7 @@ BOOST_AUTO_TEST_CASE(save__change_hierarchy__saves) remove_temp_dir(temp_dir); } -BOOST_AUTO_TEST_CASE(save__add_tracks__saves) +BOOST_AUTO_TEST_CASE(add_track__valid_track__saves) { // Arrange auto temp_dir = create_temp_dir(); @@ -266,13 +249,12 @@ BOOST_AUTO_TEST_CASE(save__add_tracks__saves) remove_temp_dir(temp_dir); } -BOOST_AUTO_TEST_CASE(op_copy_assign__saved_track__zero_id_and_copied_fields) +BOOST_AUTO_TEST_CASE(op_copy_assign__saved_track__copied_fields) { // Arrange auto temp_dir = create_temp_dir(); auto db = el::create_database(temp_dir.string(), el::version_1_7_1); - auto c = db.create_crate(""); - populate_crate_2(c); + auto c = db.create_root_crate("Bar Crate"); // Act auto copy = c; @@ -307,3 +289,38 @@ BOOST_AUTO_TEST_CASE(crate_by_name__invalid_crate__not_found) // Assert BOOST_CHECK(crates.empty()); } + +BOOST_AUTO_TEST_CASE(set_name__invalid_name__throws) +{ + // Arrange + auto temp_dir = create_temp_dir(); + auto db = el::create_database(temp_dir.string(), el::version_1_7_1); + auto c = db.create_root_crate("Root"); + + // Act/Assert + BOOST_CHECK_THROW( + c.set_name(""), djinterop::crate_invalid_name); + BOOST_CHECK_THROW( + c.set_name("Contains ; semicolon"), djinterop::crate_invalid_name); +} + +BOOST_AUTO_TEST_CASE(create_sub_crate__valid_name__succeeds) +{ + // Arrange + auto temp_dir = create_temp_dir(); + auto db = el::create_database(temp_dir.string(), el::version_1_7_1); + auto c = db.create_root_crate("Root"); + + // Act + auto sc = c.create_sub_crate("Sub-Crate"); + + // Assert + auto parent = sc.parent(); + BOOST_CHECK(parent.has_value()); + BOOST_CHECK_EQUAL(parent.value().id(), c.id()); + auto children = c.children(); + BOOST_CHECK_EQUAL(children.size(), 1); + auto child = children[0]; + BOOST_CHECK_EQUAL(child.id(), sc.id()); +} + diff --git a/test/enginelibrary/performance_data_test.cpp b/test/enginelibrary/performance_data_test.cpp index ee0ca6a..e74d30f 100644 --- a/test/enginelibrary/performance_data_test.cpp +++ b/test/enginelibrary/performance_data_test.cpp @@ -61,6 +61,25 @@ static void remove_temp_dir(const fs::path& temp_dir) static void populate_track_1(djinterop::track& t) { + // Usual meta-data (not under test but for completeness). + t.set_track_number(1); + t.set_bpm(123); + t.set_year(2017); + t.set_title("Mad (Original Mix)"); + t.set_artist("Dennis Cruz"); + t.set_album("Mad EP"); + t.set_genre("Tech House"); + t.set_comment("Purchased at Beatport.com"); + t.set_publisher("Stereo Productions"); + t.set_composer(std::experimental::nullopt); + t.set_key(djinterop::musical_key::a_minor); + t.set_relative_path("../01 - Dennis Cruz - Mad (Original Mix).mp3"); + t.set_last_modified_at(c::system_clock::time_point{c::seconds{1509371790}}); + t.set_bitrate(320); + t.set_last_played_at(std::experimental::nullopt); + t.set_last_accessed_at(c::system_clock::time_point{c::seconds{1509321600}}); + t.set_import_info(std::experimental::nullopt); + // Track data fields t.set_sampling(djinterop::sampling_info{44100, 17452800}); t.set_key(djinterop::musical_key::a_minor); @@ -199,6 +218,26 @@ static void check_track_1(const djinterop::track& t) static void populate_track_2(djinterop::track& t) { + // Usual meta-data (not under test but for completeness). + t.set_track_number(3); + t.set_bpm(128); + t.set_year(2018); + t.set_title("Made-up Track (Foo Bar Remix)"); + t.set_artist("Not A Real Artist"); + t.set_album("Fake Album"); + t.set_genre("Progressive House"); + t.set_comment("Comment goes here"); + t.set_publisher("Here is the publisher text"); + t.set_composer("And the composer text"); + t.set_key(djinterop::musical_key::c_major); + t.set_relative_path( + "../03 - Not A Real Artist - Made-up Track (Foo Bar Remix).flac"); + t.set_last_modified_at(c::system_clock::time_point{c::seconds{1517413933}}); + t.set_bitrate(1411); + t.set_last_played_at(c::system_clock::time_point{c::seconds{1518739200}}); + t.set_last_accessed_at(c::system_clock::time_point{c::seconds{1518815683}}); + t.set_import_info({"e535b170-26ef-4f30-8cb2-5b9fa4c2a27f", 123}); + // Track data fields t.set_sampling(djinterop::sampling_info{48000, 10795393}); t.set_key(djinterop::musical_key::b_minor); @@ -336,3 +375,20 @@ BOOST_AUTO_TEST_CASE(save__existing_track__saves) check_track_2(t_reloaded); remove_temp_dir(temp_dir); } + +BOOST_AUTO_TEST_CASE(set_hot_cue_at__empty_track_valid_entries__succeeds) +{ + // Arrange + auto temp_dir = create_temp_dir(); + auto db = el::create_database(temp_dir.string(), el::version_1_7_1); + auto t = db.create_track(""); + + // Act + djinterop::hot_cue hc{"My Cue", 12345.6789, el::standard_pad_colors::pad_3}; + t.set_hot_cue_at(1, hc); + + // Assert + auto hot_cues = t.hot_cues(); + BOOST_CHECK(hot_cues[1]); +} + diff --git a/test/enginelibrary/track_test.cpp b/test/enginelibrary/track_test.cpp index 5694ac1..516b0af 100644 --- a/test/enginelibrary/track_test.cpp +++ b/test/enginelibrary/track_test.cpp @@ -311,3 +311,4 @@ BOOST_AUTO_TEST_CASE(op_copy_assign__saved_track__copied_fields) check_track_1(copy); remove_temp_dir(temp_dir); } + |