Blob Blame History Raw
From a9abec912d33f9a323c3918846ddbd19ec8e107b Mon Sep 17 00:00:00 2001
From: Rene Meusel <rene.meusel@rohde-schwarz.com>
Date: Wed, 31 Jan 2024 16:24:17 +0100
Subject: [PATCH] give compression some slack

Fixes #3896
---
 src/tests/test_compression.cpp | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/tests/test_compression.cpp b/src/tests/test_compression.cpp
index 633cef3dfbf..c22e429b298 100644
--- a/src/tests/test_compression.cpp
+++ b/src/tests/test_compression.cpp
@@ -96,11 +96,14 @@ class Compression_Tests final : public Test {
                result.test_gte("Empty input L1 compresses to non-empty output", c1_e, 1);
                result.test_gte("Empty input L9 compresses to non-empty output", c9_e, 1);
 
-               result.test_gte("Level 9 compresses empty at least as well as level 1", c1_e, c9_e);
-               result.test_gte("Level 9 compresses zeros at least as well as level 1", c1_z, c9_z);
-               result.test_gte("Level 9 compresses random at least as well as level 1", c1_r, c9_r);
-               result.test_gte("Level 9 compresses text at least as well as level 1", c1_t, c9_t);
-               result.test_gte("Level 9 compresses short text at least as well as level 1", c1_s, c9_s);
+               // We assume that Level 9 is better than Level 1, but this is not
+               // guaranteed (see GitHub #3896). Hence, we assert that level 9
+               // it is at most 10% worse than level 1.
+               result.test_gte("Level 9 compresses empty at least as well as level 1", c1_e + (c1_e / 10), c9_e);
+               result.test_gte("Level 9 compresses zeros at least as well as level 1", c1_z + (c1_z / 10), c9_z);
+               result.test_gte("Level 9 compresses random at least as well as level 1", c1_r + (c1_r / 10), c9_r);
+               result.test_gte("Level 9 compresses text at least as well as level 1", c1_t + (c1_t / 10), c9_t);
+               result.test_gte("Level 9 compresses short text at least as well as level 1", c1_s + (c1_s / 10), c9_s);
 
                result.test_lt("Zeros compresses much better than text", c1_z / 8, c1_t);
                result.test_lt("Text compresses much better than random", c1_t / 2, c1_r);