You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by to...@apache.org on 2014/12/18 16:09:23 UTC
svn commit: r1646473 - in /avro/trunk: CHANGES.txt
lang/php/test/FloatIntEncodingTest.php
Author: tomwhite
Date: Thu Dec 18 15:09:22 2014
New Revision: 1646473
URL: http://svn.apache.org/r1646473
Log:
AVRO-1621. PHP: FloatIntEncodingTest fails for NAN.
Modified:
avro/trunk/CHANGES.txt
avro/trunk/lang/php/test/FloatIntEncodingTest.php
Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1646473&r1=1646472&r2=1646473&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Thu Dec 18 15:09:22 2014
@@ -105,6 +105,8 @@ Trunk (not yet released)
AVRO-1623. Java: Fix GenericData#validate to correctly resolve unions.
(Jeffrey Mullins via cutting)
+ AVRO-1621. PHP: FloatIntEncodingTest fails for NAN. (tomwhite)
+
Avro 1.7.7 (23 July 2014)
NEW FEATURES
Modified: avro/trunk/lang/php/test/FloatIntEncodingTest.php
URL: http://svn.apache.org/viewvc/avro/trunk/lang/php/test/FloatIntEncodingTest.php?rev=1646473&r1=1646472&r2=1646473&view=diff
==============================================================================
--- avro/trunk/lang/php/test/FloatIntEncodingTest.php (original)
+++ avro/trunk/lang/php/test/FloatIntEncodingTest.php Thu Dec 18 15:09:22 2014
@@ -94,10 +94,8 @@ class FloatIntEncodingTest extends PHPUn
function special_vals_provider()
{
self::make_special_vals();
- return array(array(self::DOUBLE_TYPE, self::$DOUBLE_NAN, self::$LONG_BITS_NAN),
- array(self::DOUBLE_TYPE, self::$DOUBLE_POS_INF, self::$LONG_BITS_POS_INF),
+ return array(array(self::DOUBLE_TYPE, self::$DOUBLE_POS_INF, self::$LONG_BITS_POS_INF),
array(self::DOUBLE_TYPE, self::$DOUBLE_NEG_INF, self::$LONG_BITS_NEG_INF),
- array(self::FLOAT_TYPE, self::$FLOAT_NAN, self::$INT_BITS_NAN),
array(self::FLOAT_TYPE, self::$FLOAT_POS_INF, self::$INT_BITS_POS_INF),
array(self::FLOAT_TYPE, self::$FLOAT_NEG_INF, self::$INT_BITS_NEG_INF));
}
@@ -110,6 +108,21 @@ class FloatIntEncodingTest extends PHPUn
$this->assert_encode_values($type, $val, $bits);
}
+ function nan_vals_provider()
+ {
+ self::make_special_vals();
+ return array(array(self::DOUBLE_TYPE, self::$DOUBLE_NAN, self::$LONG_BITS_NAN),
+ array(self::FLOAT_TYPE, self::$FLOAT_NAN, self::$INT_BITS_NAN));
+ }
+
+ /**
+ * @dataProvider nan_vals_provider
+ */
+ function test_encoding_nan_values($type, $val, $bits)
+ {
+ $this->assert_encode_nan_values($type, $val, $bits);
+ }
+
function normal_vals_provider()
{
$ruby_to_generate_vals =<<<_RUBY
@@ -242,4 +255,35 @@ _RUBY;
'ROUND TRIP BITS', $val, $round_trip_value));
}
+ function assert_encode_nan_values($type, $val, $bits)
+ {
+ if (self::FLOAT_TYPE == $type)
+ {
+ $decoder = array('AvroIOBinaryDecoder', 'int_bits_to_float');
+ $encoder = array('AvroIOBinaryEncoder', 'float_to_int_bits');
+ }
+ else
+ {
+ $decoder = array('AvroIOBinaryDecoder', 'long_bits_to_double');
+ $encoder = array('AvroIOBinaryEncoder', 'double_to_long_bits');
+ }
+
+ $decoded_bits_val = call_user_func($decoder, $bits);
+ $this->assertTrue(is_nan($decoded_bits_val),
+ sprintf("%s\n expected: '%f'\n given: '%f'",
+ 'DECODED BITS', $val, $decoded_bits_val));
+
+ $encoded_val_bits = call_user_func($encoder, $val);
+ $this->assertEquals($bits, $encoded_val_bits,
+ sprintf("%s\n expected: '%s'\n given: '%s'",
+ 'ENCODED VAL',
+ AvroDebug::hex_string($bits),
+ AvroDebug::hex_string($encoded_val_bits)));
+
+ $round_trip_value = call_user_func($decoder, $encoded_val_bits);
+ $this->assertTrue(is_nan($round_trip_value),
+ sprintf("%s\n expected: '%f'\n given: '%f'",
+ 'ROUND TRIP BITS', $val, $round_trip_value));
+ }
+
}