Commit 70723acc for tesseract
commit 70723acce95f715327189bbbfdd6172c6863f4c6
Author: Stefan Weil <sw@weilnetz.de>
Date: Mon Nov 2 10:55:08 2026 +0100
Register plumbing_dimensions_test with Autotools and tidy tests
The new regression suite was only picked up by CMake's test glob. Autotools
lists each test executable explicitly, so the six tests neither built nor ran
under make check, and the source was omitted from dist archives. Add the
corresponding check_PROGRAMS and _SOURCES/_CPPFLAGS/_LDADD entries alongside
plumbing_test.
While at it:
- rename RejectsParallelOutputSumBeyondIntRange to
RejectsParallelOutputSumOverflow (the individual child output counts are
within int range; it is their sum that overflows),
- make ReadChildren's setup unmask-able by asserting serialization and file
open in the test bodies (ASSERT_* cannot live in the bool-returning helper,
so it was split into a plain SerializeChildren and inline TFile reads),
so a failed DeSerialize can only mean the parent rejected the children, and
- drop the no-op writer.OpenWrite check (TFile::OpenWrite returns void).
Verified under both CMake (Debug) and Autotools (make): plumbing_dimensions_test
6/6 pass, plumbing_test 5/5 pass.
Assisted-by: OpenCode / qwen3.8-27b-thinking (Alibaba Cloud)
Signed-off-by: Stefan Weil <sw@weilnetz.de>
diff --git a/Makefile.am b/Makefile.am
index 63613275..d40ba1e6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1214,6 +1214,7 @@ if ENABLE_TRAINING
check_PROGRAMS += pango_font_info_test
endif # ENABLE_TRAINING
check_PROGRAMS += paragraphs_test
+check_PROGRAMS += plumbing_dimensions_test
check_PROGRAMS += plumbing_test
if !DISABLED_LEGACY_ENGINE
check_PROGRAMS += params_model_test
@@ -1493,6 +1494,10 @@ paragraphs_test_SOURCES = unittest/paragraphs_test.cc
paragraphs_test_CPPFLAGS = $(unittest_CPPFLAGS)
paragraphs_test_LDADD = $(TESS_LIBS)
+plumbing_dimensions_test_SOURCES = unittest/plumbing_dimensions_test.cc
+plumbing_dimensions_test_CPPFLAGS = $(unittest_CPPFLAGS)
+plumbing_dimensions_test_LDADD = $(TESS_LIBS)
+
plumbing_test_SOURCES = unittest/plumbing_test.cc
plumbing_test_CPPFLAGS = $(unittest_CPPFLAGS)
plumbing_test_LDADD = $(TESS_LIBS)
diff --git a/unittest/plumbing_dimensions_test.cc b/unittest/plumbing_dimensions_test.cc
index 01893ea3..070f06d2 100644
--- a/unittest/plumbing_dimensions_test.cc
+++ b/unittest/plumbing_dimensions_test.cc
@@ -21,47 +21,58 @@
namespace tesseract {
namespace {
-// Each child is valid independently. The parent must check their dimensions.
-bool ReadChildren(Plumbing *parent, const Network &first,
- const Network &second) {
- std::vector<char> data;
+// Serializes the two children into *data.
+bool SerializeChildren(std::vector<char> *data, const Network &first,
+ const Network &second) {
TFile writer;
- writer.OpenWrite(&data);
+ writer.OpenWrite(data);
const uint32_t count = 2;
- EXPECT_TRUE(writer.Serialize(&count));
- EXPECT_TRUE(first.Serialize(&writer));
- EXPECT_TRUE(second.Serialize(&writer));
- TFile reader;
- EXPECT_TRUE(reader.Open(data.data(), data.size()));
- return parent->DeSerialize(&reader);
+ return writer.Serialize(&count) && first.Serialize(&writer) &&
+ second.Serialize(&writer);
}
TEST(PlumbingDimensionsTest, RejectsSeriesDimensionMismatch) {
Reconfig first("first", 2, 3, 1);
Reconfig second("second", 3, 1, 1);
Series parent("series");
- EXPECT_FALSE(ReadChildren(&parent, first, second));
+ std::vector<char> data;
+ ASSERT_TRUE(SerializeChildren(&data, first, second));
+ TFile reader;
+ ASSERT_TRUE(reader.Open(data.data(), data.size()));
+ EXPECT_FALSE(parent.DeSerialize(&reader));
}
TEST(PlumbingDimensionsTest, RejectsParallelDimensionMismatch) {
Reconfig first("first", 2, 1, 1);
Reconfig second("second", 3, 1, 1);
Parallel parent("parallel", NT_PARALLEL);
- EXPECT_FALSE(ReadChildren(&parent, first, second));
+ std::vector<char> data;
+ ASSERT_TRUE(SerializeChildren(&data, first, second));
+ TFile reader;
+ ASSERT_TRUE(reader.Open(data.data(), data.size()));
+ EXPECT_FALSE(parent.DeSerialize(&reader));
}
-TEST(PlumbingDimensionsTest, RejectsParallelOutputSumBeyondIntRange) {
+TEST(PlumbingDimensionsTest, RejectsParallelOutputSumOverflow) {
Reconfig first("first", 1, std::numeric_limits<int>::max(), 1);
Reconfig second("second", 1, 1, 1);
Parallel parent("parallel", NT_PARALLEL);
- EXPECT_FALSE(ReadChildren(&parent, first, second));
+ std::vector<char> data;
+ ASSERT_TRUE(SerializeChildren(&data, first, second));
+ TFile reader;
+ ASSERT_TRUE(reader.Open(data.data(), data.size()));
+ EXPECT_FALSE(parent.DeSerialize(&reader));
}
TEST(PlumbingDimensionsTest, AcceptsParallelOutputSumAtIntLimit) {
Reconfig first("first", 1, std::numeric_limits<int>::max() - 1, 1);
Reconfig second("second", 1, 1, 1);
Parallel parent("parallel", NT_PARALLEL);
- ASSERT_TRUE(ReadChildren(&parent, first, second));
+ std::vector<char> data;
+ ASSERT_TRUE(SerializeChildren(&data, first, second));
+ TFile reader;
+ ASSERT_TRUE(reader.Open(data.data(), data.size()));
+ ASSERT_TRUE(parent.DeSerialize(&reader));
EXPECT_EQ(1, parent.NumInputs());
EXPECT_EQ(std::numeric_limits<int>::max(), parent.NumOutputs());
EXPECT_EQ(2U, parent.stack().size());
@@ -71,7 +82,11 @@ TEST(PlumbingDimensionsTest, AcceptsMatchingSeriesDimensions) {
Reconfig first("first", 2, 3, 1);
Reconfig second("second", 6, 2, 1);
Series parent("series");
- ASSERT_TRUE(ReadChildren(&parent, first, second));
+ std::vector<char> data;
+ ASSERT_TRUE(SerializeChildren(&data, first, second));
+ TFile reader;
+ ASSERT_TRUE(reader.Open(data.data(), data.size()));
+ ASSERT_TRUE(parent.DeSerialize(&reader));
EXPECT_EQ(2, parent.NumInputs());
EXPECT_EQ(12, parent.NumOutputs());
EXPECT_EQ(2U, parent.stack().size());