You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by dc...@apache.org on 2012/02/29 02:24:29 UTC

svn commit: r1294928 - in /avro/trunk: CHANGES.txt lang/c/tests/test_avro_968.c lang/c/tests/test_avro_values.c

Author: dcreager
Date: Wed Feb 29 01:24:29 2012
New Revision: 1294928

URL: http://svn.apache.org/viewvc?rev=1294928&view=rev
Log:
AVRO-1031. C: avro_value_cmp doesn't necessarily return {-1,0,1}.

The avro_value_cmp function uses memcmp under the covers (at least for
comparing bytes values), and so it doesn't necessarily return only -1,
0, and 1 as results.  Rather, any negative value can be used for the
less-than case, and any positive value for the greater-than case.  This
patch updates our unit tests to not assume too much about the return
value.

Modified:
    avro/trunk/CHANGES.txt
    avro/trunk/lang/c/tests/test_avro_968.c
    avro/trunk/lang/c/tests/test_avro_values.c

Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1294928&r1=1294927&r2=1294928&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Wed Feb 29 01:24:29 2012
@@ -15,6 +15,9 @@ Avro 1.6.3 (unreleased)
     AVRO-1036. Fix a regression in IDL imports created by AVRO-971.
     (George Fletcher & cutting)
 
+    AVRO-1031. C: Test cases made too many assumptions about memcmp
+    result. (dcreager)
+
 Avro 1.6.2 (13 February 2012)
 
   NEW FEATURES

Modified: avro/trunk/lang/c/tests/test_avro_968.c
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/tests/test_avro_968.c?rev=1294928&r1=1294927&r2=1294928&view=diff
==============================================================================
--- avro/trunk/lang/c/tests/test_avro_968.c (original)
+++ avro/trunk/lang/c/tests/test_avro_968.c Wed Feb 29 01:24:29 2012
@@ -52,12 +52,12 @@ main(int argc, char **argv)
 		return EXIT_FAILURE;
 	}
 
-	if (avro_value_cmp(&v1, &v2) != -1) {
+	if (avro_value_cmp(&v1, &v2) >= 0) {
 		fprintf(stderr, "Unexpected avro_value_cmp\n");
 		return EXIT_FAILURE;
 	}
 
-	if (avro_value_cmp_fast(&v1, &v2) != -1) {
+	if (avro_value_cmp_fast(&v1, &v2) >= 0) {
 		fprintf(stderr, "Unexpected avro_value_cmp_fast\n");
 		return EXIT_FAILURE;
 	}

Modified: avro/trunk/lang/c/tests/test_avro_values.c
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/tests/test_avro_values.c?rev=1294928&r1=1294927&r2=1294928&view=diff
==============================================================================
--- avro/trunk/lang/c/tests/test_avro_values.c (original)
+++ avro/trunk/lang/c/tests/test_avro_values.c Wed Feb 29 01:24:29 2012
@@ -429,11 +429,11 @@ test_boolean(void)
 	    "Cannot create boolean");
 	try(avro_generic_boolean_new(&val2, 1),
 	    "Cannot create boolean");
-	if (avro_value_cmp_fast(&val1, &val2) != -1) {
+	if (avro_value_cmp_fast(&val1, &val2) >= 0) {
 		fprintf(stderr, "Incorrect sort order\n");
 		return EXIT_FAILURE;
 	}
-	if (avro_value_cmp_fast(&val2, &val1) != 1) {
+	if (avro_value_cmp_fast(&val2, &val1) <= 0) {
 		fprintf(stderr, "Incorrect sort order\n");
 		return EXIT_FAILURE;
 	}
@@ -510,15 +510,15 @@ test_bytes(void)
 	    "Cannot create bytes");
 	try(avro_generic_bytes_new(&val3, "abce", 4),
 	    "Cannot create bytes");
-	if (avro_value_cmp_fast(&val1, &val2) != -1) {
+	if (avro_value_cmp_fast(&val1, &val2) >= 0) {
 		fprintf(stderr, "Incorrect sort order\n");
 		return EXIT_FAILURE;
 	}
-	if (avro_value_cmp_fast(&val2, &val1) != 1) {
+	if (avro_value_cmp_fast(&val2, &val1) <= 0) {
 		fprintf(stderr, "Incorrect sort order\n");
 		return EXIT_FAILURE;
 	}
-	if (avro_value_cmp_fast(&val1, &val3) != -1) {
+	if (avro_value_cmp_fast(&val1, &val3) >= 0) {
 		fprintf(stderr, "Incorrect sort order\n");
 		return EXIT_FAILURE;
 	}
@@ -645,11 +645,11 @@ test_int(void)
 	    "Cannot create int");
 	try(avro_generic_int_new(&val2, 42),
 	    "Cannot create int");
-	if (avro_value_cmp_fast(&val1, &val2) != -1) {
+	if (avro_value_cmp_fast(&val1, &val2) >= 0) {
 		fprintf(stderr, "Incorrect sort order\n");
 		return EXIT_FAILURE;
 	}
-	if (avro_value_cmp_fast(&val2, &val1) != 1) {
+	if (avro_value_cmp_fast(&val2, &val1) <= 0) {
 		fprintf(stderr, "Incorrect sort order\n");
 		return EXIT_FAILURE;
 	}