Files
whetstone_DSL/editor/tests/step161_test.cpp
2026-02-09 19:51:42 -07:00

58 lines
2.2 KiB
C++

// Step 161 TDD Test: Plugin API + loader
#include "PluginLoader.h"
#include <iostream>
static void expect(bool cond, const std::string& name, int& passed, int& failed) {
if (cond) {
std::cout << "Test " << (passed + failed + 1) << " PASS: " << name << "\n";
++passed;
} else {
std::cout << "Test " << (passed + failed + 1) << " FAIL: " << name << "\n";
++failed;
}
}
static bool FakeInit(const PluginHost* host, PluginDescriptor* outDesc) {
outDesc->name = "FakePlugin";
outDesc->version = "0.1";
outDesc->apiVersion = "1";
outDesc->author = "Test";
outDesc->entrySymbol = "WhetstonePluginInit";
host->registerConcept(host->ctx, "ExternalThing");
host->registerGenerator(host->ctx, "zig");
host->registerGrammar(host->ctx, "zig");
host->registerAnnotation(host->ctx, "TraceSafe");
host->registerPanel(host->ctx, "CustomPanel");
host->registerCommand(host->ctx, "plugin.command");
host->registerKeybinding(host->ctx, "plugin.command", "Ctrl+Alt+P");
return true;
}
int main() {
int passed = 0;
int failed = 0;
PluginLoader loader;
std::string error;
expect(loader.loadFromEntryPoint(&FakeInit, "fake", error),
"load from entry point", passed, failed);
const auto& registry = loader.registry();
expect(registry.concepts.size() == 1, "concept registered", passed, failed);
expect(registry.generators.size() == 1, "generator registered", passed, failed);
expect(registry.grammars.size() == 1, "grammar registered", passed, failed);
expect(registry.annotations.size() == 1, "annotation registered", passed, failed);
expect(registry.panels.size() == 1, "panel registered", passed, failed);
expect(registry.commands.size() == 1, "command registered", passed, failed);
expect(registry.keybindings.size() == 1, "keybinding registered", passed, failed);
expect(loader.plugins().size() == 1, "plugin tracked", passed, failed);
expect(loader.plugins()[0].descriptor.name == "FakePlugin",
"descriptor stored", passed, failed);
std::cout << "\n=== Step 161 Results: " << passed << " passed, "
<< failed << " failed ===\n";
return failed == 0 ? 0 : 1;
}