Files
whetstone_DSL/editor/tests/step94a_test.cpp
2026-02-09 10:22:13 -07:00

40 lines
1.1 KiB
C++

// Step 94a TDD Test: AST source span tracking
//
// Tests:
// 1. Parser assigns spans to AST nodes
// 2. Serialization preserves spans
#include <cassert>
#include <iostream>
#include "ast/Parser.h"
#include "ast/Serialization.h"
int main() {
int passed = 0;
int failed = 0;
std::string source = "def foo(x):\n return x\n";
auto mod = TreeSitterParser::parsePython(source);
assert(mod);
auto funcs = mod->getChildren("functions");
assert(!funcs.empty());
auto* fn = funcs[0];
assert(fn->hasSpan());
assert(fn->spanStartLine == 0);
assert(fn->spanEndLine >= 1);
std::cout << "Test 1 PASS: parser spans set" << std::endl;
++passed;
auto j = toJson(fn);
assert(j.contains("span"));
assert(j["span"].contains("start"));
auto* round = fromJson(j);
assert(round->hasSpan());
assert(round->spanStartLine == fn->spanStartLine);
std::cout << "Test 2 PASS: serialization preserves spans" << std::endl;
++passed;
std::cout << "\n=== Step 94a Results: " << passed << " passed, " << failed << " failed ===" << std::endl;
return failed > 0 ? 1 : 0;
}