Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
test: serde validation cases
  • Loading branch information
proost committed Jan 27, 2026
commit d463bfb159cd338fd88094ba600a50cfcc0e34d2
3 changes: 0 additions & 3 deletions tuple/include/array_of_strings_sketch_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -240,9 +240,6 @@ uint32_t default_array_of_strings_serde<Allocator>::compute_total_bytes(const ar
for (uint32_t j = 0; j < count; ++j) {
total += data[j].size();
}
if (total > std::numeric_limits<uint32_t>::max()) {
throw std::runtime_error("array_of_strings serialized size exceeds uint32_t max");
}
return static_cast<uint32_t>(total);
}

Expand Down
26 changes: 26 additions & 0 deletions tuple/test/array_of_strings_sketch_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -255,4 +255,30 @@ TEST_CASE("aos sketch: serialize deserialize", "[tuple_sketch]") {
}
}

TEST_CASE("aos serde validation", "[tuple_sketch]") {
default_array_of_strings_serde<> serde;

SECTION("invalid utf8 rejected") {
array_of_strings array(1, "", std::allocator<std::string>());
const std::string invalid_utf8("\xC3\x28", 2);
array[0] = invalid_utf8;
std::stringstream ss;
ss.exceptions(std::ios::failbit | std::ios::badbit);
REQUIRE_THROWS_WITH(
serde.serialize(ss, &array, 1),
Catch::Matchers::Contains("invalid UTF-8")
);
}

SECTION("too many nodes rejected") {
array_of_strings array(128, "", std::allocator<std::string>());
std::stringstream ss;
ss.exceptions(std::ios::failbit | std::ios::badbit);
REQUIRE_THROWS_WITH(
serde.serialize(ss, &array, 1),
Catch::Matchers::Contains("size exceeds 127")
);
}
}

} /* namespace datasketches */