summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAdam Szmigin <smidge@xsco.net>2019-08-26 22:27:25 +0100
committerAdam Szmigin <smidge@xsco.net>2019-08-26 22:27:25 +0100
commit1283369dccfe904bb1c42941c37434864792e23e (patch)
tree9655114e5c84299a7e6b6bf8adf178203af7936b /test
parent855f9e50f8a0c19ac4827e913cfd1790fdb0158a (diff)
New methods for crate lookup and creation.
Diffstat (limited to 'test')
-rw-r--r--test/enginelibrary/crate_test.cpp89
-rw-r--r--test/enginelibrary/performance_data_test.cpp56
-rw-r--r--test/enginelibrary/track_test.cpp1
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);
}
+