Plan app export targets in app core

This commit is contained in:
2026-06-02 22:50:42 +02:00
parent 5841878df9
commit b349f24931
11 changed files with 434 additions and 24 deletions

View File

@@ -0,0 +1,60 @@
#include "app_core/document_export.h"
#include "test_harness.h"
namespace {
void equirectangular_export_builds_file_target(pp::tests::Harness& harness)
{
const auto target = pp::app::make_document_export_file_target("D:/Paint", "demo", ".png");
PP_EXPECT(harness, target);
PP_EXPECT(harness, target.value().path == "D:/Paint/demo.png");
PP_EXPECT(harness, target.value().suggested_name == "demo.png");
}
void export_file_target_rejects_invalid_input(pp::tests::Harness& harness)
{
const auto missing_name = pp::app::make_document_export_file_target("D:/Paint", "", ".jpg");
const auto missing_extension = pp::app::make_document_export_file_target("D:/Paint", "demo", "");
PP_EXPECT(harness, !missing_name);
PP_EXPECT(harness, missing_name.status().code == pp::foundation::StatusCode::invalid_argument);
PP_EXPECT(harness, !missing_extension);
PP_EXPECT(harness, missing_extension.status().code == pp::foundation::StatusCode::invalid_argument);
}
void collection_export_builds_directory_and_stem(pp::tests::Harness& harness)
{
const auto target = pp::app::make_document_export_collection_target("D:/Paint", "demo", "_layers");
PP_EXPECT(harness, target);
PP_EXPECT(harness, target.value().directory == "D:/Paint/demo_layers");
PP_EXPECT(harness, target.value().stem_path == "D:/Paint/demo_layers/demo");
}
void picked_directory_export_builds_stem(pp::tests::Harness& harness)
{
const auto target = pp::app::make_document_export_stem_target("D:/Exports", "demo");
PP_EXPECT(harness, target);
PP_EXPECT(harness, target.value().stem_path == "D:/Exports/demo");
}
void video_export_builds_suggested_name(pp::tests::Harness& harness)
{
const auto timelapse = pp::app::make_document_export_suggested_name("demo", "-timelapse");
const auto animation = pp::app::make_document_export_suggested_name("demo", "-animation");
PP_EXPECT(harness, timelapse);
PP_EXPECT(harness, animation);
PP_EXPECT(harness, timelapse.value().name == "demo-timelapse");
PP_EXPECT(harness, animation.value().name == "demo-animation");
}
}
int main()
{
pp::tests::Harness harness;
harness.run("equirectangular export builds file target", equirectangular_export_builds_file_target);
harness.run("export file target rejects invalid input", export_file_target_rejects_invalid_input);
harness.run("collection export builds directory and stem", collection_export_builds_directory_and_stem);
harness.run("picked directory export builds stem", picked_directory_export_builds_stem);
harness.run("video export builds suggested name", video_export_builds_suggested_name);
return harness.finish();
}