@@ -95,8 +95,22 @@ private static TestCaseSupplier makeSupplier(TestCaseSupplier.TypedDataSupplier
9595 if (dataRows .size () < 2 ) {
9696 matcher = Matchers .nullValue ();
9797 } else {
98- // TODO: check the value?
99- matcher = Matchers .allOf (Matchers .greaterThanOrEqualTo (0.0 ), Matchers .lessThan (Double .POSITIVE_INFINITY ));
98+ var maxrate = switch (fieldTypedData .type ().widenSmallNumeric ()) {
99+ case INTEGER , COUNTER_INTEGER -> dataRows .stream ().mapToInt (v -> (Integer ) v ).max ().orElse (0 );
100+ case LONG , COUNTER_LONG -> dataRows .stream ().mapToLong (v -> (Long ) v ).max ().orElse (0L );
101+ case DOUBLE , COUNTER_DOUBLE -> dataRows .stream ().mapToDouble (v -> (Double ) v ).max ().orElse (0.0 );
102+ default -> throw new IllegalStateException ("Unexpected value: " + fieldTypedData .type ());
103+ };
104+ var minrate = switch (fieldTypedData .type ().widenSmallNumeric ()) {
105+ case INTEGER , COUNTER_INTEGER -> dataRows .stream ().mapToInt (v -> (Integer ) v ).min ().orElse (0 );
106+ case LONG , COUNTER_LONG -> dataRows .stream ().mapToLong (v -> (Long ) v ).min ().orElse (0L );
107+ case DOUBLE , COUNTER_DOUBLE -> dataRows .stream ().mapToDouble (v -> (Double ) v ).min ().orElse (0.0 );
108+ default -> throw new IllegalStateException ("Unexpected value: " + fieldTypedData .type ());
109+ };
110+ // If the minrate is greater than 0, we need to adjust the maxrate accordingly
111+ minrate = Math .min (minrate , 0 );
112+ maxrate = Math .max (maxrate , maxrate - minrate );
113+ matcher = Matchers .allOf (Matchers .greaterThanOrEqualTo (minrate ), Matchers .lessThanOrEqualTo (maxrate ));
100114 }
101115 return new TestCaseSupplier .TestCase (
102116 List .of (fieldTypedData , timestampsField ),
0 commit comments