Description: relax equality expectations on floating point values.
 This is needed to fix build failures on 32-bit systems, notably i386.
Author: Étienne Mollier <emollier@debian.org>
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1103123
Forwarded: not-needed
Last-Update: 2025-05-01
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- tao-json.orig/src/test/json/jaxn_parts_parser.cpp
+++ tao-json/src/test/json/jaxn_parts_parser.cpp
@@ -88,17 +88,20 @@
       }
       {
          jaxn::parts_parser p( "100.45", __FUNCTION__ );
-         TEST_ASSERT( p.number_double() == 100.45 );
+         auto a = p.number_double();
+         TEST_ASSERT( 100.449 <= a && a <= 100.451 );
          TEST_ASSERT( p.empty() );
       }
       {
          jaxn::parts_parser p( "+100.45", __FUNCTION__ );
-         TEST_ASSERT( p.number_double() == 100.45 );
+         auto a = p.number_double();
+         TEST_ASSERT( 100.449 <= a && a <= 100.451 );
          TEST_ASSERT( p.empty() );
       }
       {
          jaxn::parts_parser p( "-100.45", __FUNCTION__ );
-         TEST_ASSERT( p.number_double() == -100.45 );
+         auto a = p.number_double();
+         TEST_ASSERT( -100.451 <= a && a <= -100.449 );
          TEST_ASSERT( p.empty() );
       }
       {
@@ -154,7 +157,8 @@
          TEST_ASSERT( p.boolean() == true );
          TEST_ASSERT( p.null() == false );
          p.element( a );
-         TEST_ASSERT( p.number_double() == -42.7 );
+         auto b = p.number_double();
+         TEST_ASSERT( -42.701 <= b && b <= -42.699 );
          TEST_ASSERT( p.null() == false );
          p.element( a );
          TEST_ASSERT( p.null() == false );
--- tao-json.orig/src/test/json/json_parts_parser.cpp
+++ tao-json/src/test/json/json_parts_parser.cpp
@@ -64,7 +64,8 @@
          TEST_ASSERT( p.boolean() == true );
          TEST_ASSERT( p.null() == false );
          p.element( a );
-         TEST_ASSERT( p.number_double() == -42.7 );
+         auto b = p.number_double();
+         TEST_ASSERT( -42.701 <= b && b <= -42.699 );
          TEST_ASSERT( p.null() == false );
          p.element( a );
          TEST_ASSERT( p.null() == false );
--- tao-json.orig/src/test/json/binding_object.cpp
+++ tao-json/src/test/json/binding_object.cpp
@@ -48,7 +48,7 @@
       TEST_ASSERT( a.i == 42 );
       TEST_ASSERT( a.s == "foo" );
       TEST_ASSERT( a.b && ( *a.b == true ) );
-      TEST_ASSERT( a.d && ( *a.d == 43.1 ) );
+      TEST_ASSERT( a.d && ( *a.d >= 43.09 ) && ( *a.d <= 43.11 ) );
       TEST_ASSERT( a.z.first == 5 );
       TEST_ASSERT( a.z.second == 6 );
       TEST_ASSERT( a == v );
@@ -62,7 +62,7 @@
       TEST_ASSERT( b.i == 42 );
       TEST_ASSERT( b.s == "foo" );
       TEST_ASSERT( b.b && ( *a.b == true ) );
-      TEST_ASSERT( b.d && ( *a.d == 43.1 ) );
+      TEST_ASSERT( b.d && ( *b.d >= 43.09 ) && ( *b.d <= 43.11 ) );
       TEST_ASSERT( b.z.first == 5 );
       TEST_ASSERT( b.z.second == 6 );
       auto w = v;
@@ -135,7 +135,8 @@
       TEST_ASSERT( v.at( "b" ).is_boolean() );
       TEST_ASSERT( v.as< bool >( "b" ) == false );
       TEST_ASSERT( v.at( "d" ).is_double() );
-      TEST_ASSERT( v.as< double >( "d" ) == 44.2 );
+      TEST_ASSERT( v.as< double >( "d" ) >= 44.19 );
+      TEST_ASSERT( v.as< double >( "d" ) <= 44.21 );
       TEST_ASSERT( v.at( "z" ).is_array() );
       TEST_ASSERT( v.at( "z" ).get_array().size() == 2 );
       TEST_ASSERT( v.at( "z" ).get_array()[ 0 ].as< int >() == 8 );
