43 lines
1.9 KiB
C++
43 lines
1.9 KiB
C++
#include "editor/EditorEnvironmentBrowser.h"
|
|
|
|
#include "zeroerr/assert.h"
|
|
#include "zeroerr/unittest.h"
|
|
|
|
using namespace eve::editor;
|
|
|
|
namespace {
|
|
AssetRecord environment(const char* id, const char* uri, const char* layout,
|
|
int width, int height, int faces = 1) {
|
|
AssetRecord record;
|
|
record.guid = AssetGuid(id); record.logicalUri = uri; record.typeId = "environment-map";
|
|
record.sourceUri = std::string("source/") + id; record.sourceHash = "hash";
|
|
record.importerId = "environment-test"; record.artifacts = {std::string("artifact/") + id};
|
|
record.metadata = EditorValue::Object{{"layout", layout}, {"width", int64_t{width}},
|
|
{"height", int64_t{height}}, {"faceCount", int64_t{faces}}};
|
|
return record;
|
|
}
|
|
}
|
|
|
|
TEST_CASE("editor.environment.browser_pages_and_rejects_stale_generation") {
|
|
MemoryAssetDatabase database;
|
|
CHECK(database.publish(environment("sky-a", "env/sky-a", "equirectangular", 2048, 1024)).ok());
|
|
const auto generation = database.generation();
|
|
EnvironmentAssetBrowser browser(&database);
|
|
auto page = browser.query("sky", 0, 20, generation);
|
|
REQUIRE(page.ok());
|
|
CHECK_EQ(page.value().values.size(), 1U);
|
|
CHECK_EQ(page.value().values.front().layout, std::string("equirectangular"));
|
|
CHECK(database.publish(environment("sky-b", "env/sky-b", "cubemap", 512, 512, 6)).ok());
|
|
CHECK_EQ(static_cast<int>(browser.query({}, 0, 20, generation).code()),
|
|
static_cast<int>(EditorStatus::Conflict));
|
|
}
|
|
|
|
TEST_CASE("editor.environment.browser_surfaces_invalid_import_metadata") {
|
|
MemoryAssetDatabase database;
|
|
CHECK(database.publish(environment("broken", "env/broken", "cubemap", 512, 512, 5)).ok());
|
|
EnvironmentAssetBrowser browser(&database);
|
|
auto selected = browser.select(AssetGuid("broken"));
|
|
CHECK_EQ(static_cast<int>(selected.code()), static_cast<int>(EditorStatus::Rejected));
|
|
CHECK(!selected.diagnostics().empty());
|
|
}
|