Shared Catalog
This commit is contained in:
+15
-37
@@ -130,7 +130,6 @@ auto navigation_state() -> vamp_zero::app_state {
|
||||
.key_signature = "C",
|
||||
.part = "Lead",
|
||||
.source_path = "navigation.json",
|
||||
.source_json = score_asset_json("Navigation Tune"),
|
||||
.measure_count = 1,
|
||||
.total_pages = 2,
|
||||
};
|
||||
@@ -138,7 +137,6 @@ auto navigation_state() -> vamp_zero::app_state {
|
||||
.id = "exercise-c",
|
||||
.key_signature = "C",
|
||||
.source_path = "exercise.json",
|
||||
.source_json = score_asset_json("Exercise"),
|
||||
.measure_count = 1,
|
||||
.total_pages = 1,
|
||||
};
|
||||
@@ -150,36 +148,15 @@ auto navigation_state() -> vamp_zero::app_state {
|
||||
.lesson_group_title = "Major",
|
||||
.title = "C Major",
|
||||
.composer = "Composer",
|
||||
.key_signature = "C",
|
||||
.source_path = "exercise.json",
|
||||
.source_json = score_asset_json("Exercise"),
|
||||
.measure_count = 1,
|
||||
.total_pages = 1,
|
||||
.authored_key_signature = "C",
|
||||
.variants = {variant},
|
||||
};
|
||||
auto practice = vamp_zero::group_practice_exercises({exercise});
|
||||
return vamp_zero::app_state{
|
||||
.performance =
|
||||
{
|
||||
.parts = {part},
|
||||
.groups = {{
|
||||
.title = part.title,
|
||||
.composer = part.composer,
|
||||
.parts = {part},
|
||||
}},
|
||||
},
|
||||
.practice =
|
||||
{
|
||||
.exercises = {exercise},
|
||||
.types = {{
|
||||
.id = "scale",
|
||||
.title = "Scales",
|
||||
.lesson_groups = {{
|
||||
.id = "lesson-1",
|
||||
.title = "Major",
|
||||
.exercises = {exercise},
|
||||
}},
|
||||
}},
|
||||
},
|
||||
.catalog = std::make_shared<vamp_zero::catalogue const>(vamp_zero::catalogue{
|
||||
.performance = vamp_zero::group_library_parts({part}),
|
||||
.practice = std::move(*practice),
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -325,17 +302,17 @@ BOOST_AUTO_TEST_CASE(score_parser_loads_the_generated_catalogue) {
|
||||
BOOST_AUTO_TEST_CASE(chord_and_melody_practice_share_key_navigation_and_remote_display) {
|
||||
for (auto type : {"chord", "melody"}) {
|
||||
auto state = navigation_state();
|
||||
auto &exercise = state.practice.exercises.front();
|
||||
auto catalog = std::make_shared<vamp_zero::catalogue>(*state.catalog);
|
||||
auto &exercise = catalog->practice.exercises.front();
|
||||
exercise.practice_type_id = type;
|
||||
auto variant = exercise.variants.front();
|
||||
variant.id = "exercise-d";
|
||||
variant.key_signature = "D";
|
||||
variant.source_path = "exercise-d.json";
|
||||
variant.source_json = score_asset_json("Exercise", "D");
|
||||
variant.total_pages = 3U;
|
||||
exercise.variants.push_back(variant);
|
||||
state.practice.types.front().id = type;
|
||||
state.practice.types.front().lesson_groups.front().exercises = {exercise};
|
||||
catalog->practice.types.front().id = type;
|
||||
state.catalog = catalog;
|
||||
state.mode = vamp_zero::app_mode::PRACTICE_EXERCISE_MENU;
|
||||
state.selected_practice_type_index = 1U;
|
||||
state.selected_practice_lesson_index = 1U;
|
||||
@@ -350,7 +327,7 @@ BOOST_AUTO_TEST_CASE(chord_and_melody_practice_share_key_navigation_and_remote_d
|
||||
state = vamp_zero::apply_app_command(std::move(state), vamp_protocol::page_command::SELECT);
|
||||
BOOST_CHECK(state.mode == vamp_zero::app_mode::PRACTICE_SCORE);
|
||||
BOOST_TEST(state.audio.metronome_enabled);
|
||||
auto selected = vamp_zero::selected_practice_variant(state, state.practice.exercises.front());
|
||||
auto selected = vamp_zero::selected_practice_variant(state, state.catalog->practice.exercises.front());
|
||||
BOOST_REQUIRE(selected != nullptr);
|
||||
BOOST_TEST(selected->id == "exercise-d");
|
||||
BOOST_TEST(selected->source_path == "exercise-d.json");
|
||||
@@ -400,7 +377,8 @@ BOOST_AUTO_TEST_CASE(database_reload_preserves_all_generated_practice_keys) {
|
||||
for (auto index = std::size_t{}; index < keys.size(); ++index) {
|
||||
auto const &key = exercise.variants[index].key_signature;
|
||||
BOOST_TEST(key.substr(0, key.find(' ')) == keys[index]);
|
||||
BOOST_REQUIRE(vamp_zero::parse_score_document(exercise.variants[index].source_json, exercise.variants[index].source_path));
|
||||
BOOST_TEST(exercise.variants[index].total_pages > 0U);
|
||||
BOOST_TEST(exercise.variants[index].measure_count > 0U);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -424,8 +402,8 @@ BOOST_AUTO_TEST_CASE(numbered_practice_paths_keep_duplicate_titles_separate_and_
|
||||
auto const &lesson = library->types.front().lesson_groups.front();
|
||||
BOOST_TEST(lesson.id == "001_lesson");
|
||||
BOOST_REQUIRE_EQUAL(lesson.exercises.size(), 2U);
|
||||
BOOST_TEST(lesson.exercises[0].id == "chord-001_lesson-002-cycles");
|
||||
BOOST_TEST(lesson.exercises[1].id == "chord-001_lesson-010-cycles");
|
||||
BOOST_TEST(library->exercises[lesson.exercises[0]].id == "chord-001_lesson-002-cycles");
|
||||
BOOST_TEST(library->exercises[lesson.exercises[1]].id == "chord-001_lesson-010-cycles");
|
||||
for (auto const &exercise : library->exercises) {
|
||||
BOOST_TEST(exercise.title == "Shared Title");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user