aboutsummaryrefslogtreecommitdiffstats
path: root/test/MultigroupCodec.cpp
diff options
context:
space:
mode:
authorMarcos Magueta <maguetamarcos@gmail.com>2026-06-05 21:40:44 -0300
committerGitHub <noreply@github.com>2026-06-05 21:40:44 -0300
commit5174fc25698cff33b03b5746bf1742e417988f7d (patch)
tree232a3acdd9b458de481dbd5cbde889505168c8e8 /test/MultigroupCodec.cpp
parent85ed897de3676af866cc619dc700025820c02201 (diff)
downloadRNT-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.cpp67
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());