diff options
| author | Marcos Magueta <maguetamarcos@gmail.com> | 2026-06-05 21:40:44 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-06-05 21:40:44 -0300 |
| commit | 5174fc25698cff33b03b5746bf1742e417988f7d (patch) | |
| tree | 232a3acdd9b458de481dbd5cbde889505168c8e8 /test/MultigroupCodec.cpp | |
| parent | 85ed897de3676af866cc619dc700025820c02201 (diff) | |
| download | RNT-5174fc25698cff33b03b5746bf1742e417988f7d.tar.gz RNT-5174fc25698cff33b03b5746bf1742e417988f7d.zip | |
Project C interface, reroute FOL plan enums & format
Diffstat (limited to 'test/MultigroupCodec.cpp')
| -rw-r--r-- | test/MultigroupCodec.cpp | 67 |
1 files changed, 26 insertions, 41 deletions
diff --git a/test/MultigroupCodec.cpp b/test/MultigroupCodec.cpp index c1e2509..b04c405 100644 --- a/test/MultigroupCodec.cpp +++ b/test/MultigroupCodec.cpp @@ -17,48 +17,42 @@ namespace { -// Pad a short label into a deterministic 64-char hex string so the codec can -// decode it as a 32-byte payload. -std::string mk_root(char c, char d = '0') -{ - std::string h(64, '0'); - h[0] = c; - h[1] = d; - return h; -} - -} // namespace - -TEST_CASE("Build is order-independent - tree sorts intrinsically", - "[multigroup-codec]") -{ + // Pad a short label into a deterministic 64-char hex string so the codec can + // decode it as a 32-byte payload. + std::string mk_root(char c, char d = '0') { + std::string h(64, '0'); + h[0] = c; + h[1] = d; + return h; + } + +} // namespace + +TEST_CASE("Build is order-independent - tree sorts intrinsically", "[multigroup-codec]") { nt::InMemoryBackend a, b; std::vector<nt::MultigroupCodec::RelationEntry> in_order = { - {"alpha", mk_root('a')}, - {"bravo", mk_root('b')}, + {"alpha", mk_root('a')}, + {"bravo", mk_root('b')}, {"charlie", mk_root('c')}, }; std::vector<nt::MultigroupCodec::RelationEntry> shuffled = { {"charlie", mk_root('c')}, - {"alpha", mk_root('a')}, - {"bravo", mk_root('b')}, + {"alpha", mk_root('a')}, + {"bravo", mk_root('b')}, }; - REQUIRE(nt::MultigroupCodec::Build(a, in_order) - == nt::MultigroupCodec::Build(b, shuffled)); + REQUIRE(nt::MultigroupCodec::Build(a, in_order) == nt::MultigroupCodec::Build(b, shuffled)); } -TEST_CASE("Build distinguishes content changes", "[multigroup-codec]") -{ +TEST_CASE("Build distinguishes content changes", "[multigroup-codec]") { nt::InMemoryBackend backend; std::vector<nt::MultigroupCodec::RelationEntry> base = {{"foo", mk_root('a')}}; std::vector<nt::MultigroupCodec::RelationEntry> different_root = {{"foo", mk_root('b')}}; std::vector<nt::MultigroupCodec::RelationEntry> different_name = {{"bar", mk_root('a')}}; - std::vector<nt::MultigroupCodec::RelationEntry> extra_member = { - {"foo", mk_root('a')}, {"bar", mk_root('b')} - }; + std::vector<nt::MultigroupCodec::RelationEntry> extra_member = {{"foo", mk_root('a')}, + {"bar", mk_root('b')}}; const auto h_base = nt::MultigroupCodec::Build(backend, base); REQUIRE(h_base != nt::MultigroupCodec::Build(backend, different_root)); @@ -66,9 +60,7 @@ TEST_CASE("Build distinguishes content changes", "[multigroup-codec]") REQUIRE(h_base != nt::MultigroupCodec::Build(backend, extra_member)); } -TEST_CASE("Build then List round-trips entries in key-sorted order", - "[multigroup-codec]") -{ +TEST_CASE("Build then List round-trips entries in key-sorted order", "[multigroup-codec]") { nt::InMemoryBackend backend; std::vector<nt::MultigroupCodec::RelationEntry> entries = { @@ -86,8 +78,7 @@ TEST_CASE("Build then List round-trips entries in key-sorted order", REQUIRE(listed[0].second == mk_root('b', '2')); } -TEST_CASE("Lookup returns payload by name", "[multigroup-codec]") -{ +TEST_CASE("Lookup returns payload by name", "[multigroup-codec]") { nt::InMemoryBackend backend; std::vector<nt::MultigroupCodec::RelationEntry> entries = { @@ -101,9 +92,7 @@ TEST_CASE("Lookup returns payload by name", "[multigroup-codec]") REQUIRE(nt::MultigroupCodec::Lookup(backend, root, "missing").empty()); } -TEST_CASE("InsertOne mutates one entry; sibling subtree is untouched", - "[multigroup-codec]") -{ +TEST_CASE("InsertOne mutates one entry; sibling subtree is untouched", "[multigroup-codec]") { nt::InMemoryBackend backend; std::vector<nt::MultigroupCodec::RelationEntry> entries = { @@ -113,16 +102,13 @@ TEST_CASE("InsertOne mutates one entry; sibling subtree is untouched", const auto root0 = nt::MultigroupCodec::Build(backend, entries); // Mutate foo only; bar's payload must round-trip unchanged. - const auto root1 = nt::MultigroupCodec::InsertOne( - backend, root0, "foo", mk_root('d')); + const auto root1 = nt::MultigroupCodec::InsertOne(backend, root0, "foo", mk_root('d')); REQUIRE(root1 != root0); REQUIRE(nt::MultigroupCodec::Lookup(backend, root1, "foo") == mk_root('d')); REQUIRE(nt::MultigroupCodec::Lookup(backend, root1, "bar") == mk_root('b')); } -TEST_CASE("RemoveOne deletes one entry; sibling preserved", - "[multigroup-codec]") -{ +TEST_CASE("RemoveOne deletes one entry; sibling preserved", "[multigroup-codec]") { nt::InMemoryBackend backend; std::vector<nt::MultigroupCodec::RelationEntry> entries = { @@ -136,8 +122,7 @@ TEST_CASE("RemoveOne deletes one entry; sibling preserved", REQUIRE(nt::MultigroupCodec::Lookup(backend, root1, "bar") == mk_root('b')); } -TEST_CASE("Empty multigroup builds to an empty root", "[multigroup-codec]") -{ +TEST_CASE("Empty multigroup builds to an empty root", "[multigroup-codec]") { nt::InMemoryBackend backend; std::vector<nt::MultigroupCodec::RelationEntry> empty; REQUIRE(nt::MultigroupCodec::Build(backend, empty).empty()); |
