You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kp...@apache.org on 2020/07/10 16:07:40 UTC

[qpid-proton] branch array-of-lists-first-list-empty updated: PROTON-2244: Added tests for arrays of char and decimal32/64/128.

This is an automated email from the ASF dual-hosted git repository.

kpvdr pushed a commit to branch array-of-lists-first-list-empty
in repository https://gitbox.apache.org/repos/asf/qpid-proton.git


The following commit(s) were added to refs/heads/array-of-lists-first-list-empty by this push:
     new a0dde4b  PROTON-2244: Added tests for arrays of char and decimal32/64/128.
a0dde4b is described below

commit a0dde4b1dd9824c2c076ea6ab48e9159da545359
Author: Kim van der Riet <kp...@apache.org>
AuthorDate: Fri Jul 10 12:07:21 2020 -0400

    PROTON-2244: Added tests for arrays of char and decimal32/64/128.
---
 c/tests/data_test.cpp | 108 ++++++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 96 insertions(+), 12 deletions(-)

diff --git a/c/tests/data_test.cpp b/c/tests/data_test.cpp
index 51c53a7..e7c91cc 100644
--- a/c/tests/data_test.cpp
+++ b/c/tests/data_test.cpp
@@ -28,6 +28,7 @@
 
 #include <cstdarg> // va_start(), va_end()
 #include <ctime> // time()
+#include <string.h> // memset()
 
 using namespace pn_test;
 
@@ -109,21 +110,13 @@ TEST_CASE("data_multiple") {
   CHECK("{\"foo\"=[1, 987, 3], \"bar\"=965}" == inspect(data));
 }
 
-#define BUFSIZE 1024
 
-static void check_array(const char *fmt, ...) {
+#define BUFSIZE 1024
+static void check_encode_decode(auto_free<pn_data_t, pn_data_free>& src) {
 	char buf[BUFSIZE];
-	auto_free<pn_data_t, pn_data_free> src(pn_data(1));
 	auto_free<pn_data_t, pn_data_free> data(pn_data(1));
-	pn_data_clear(src);
 	pn_data_clear(data);
 
-	// Create src array
-	va_list ap;
-	va_start(ap, fmt);
-	pn_data_vfill(src, fmt, ap);
-	va_end(ap);
-
 	// Encode src array to buf
 	int enc_size = pn_data_encode(src, buf, BUFSIZE - 1);
 	if (enc_size < 0) {
@@ -142,6 +135,19 @@ static void check_array(const char *fmt, ...) {
 	CHECK(inspect(src) == inspect(data));
 }
 
+static void check_array(const char *fmt, ...) {
+	auto_free<pn_data_t, pn_data_free> src(pn_data(1));
+	pn_data_clear(src);
+
+	// Create src array
+	va_list ap;
+	va_start(ap, fmt);
+	pn_data_vfill(src, fmt, ap);
+	va_end(ap);
+
+	check_encode_decode(src);
+}
+
 TEST_CASE("array_null") {
 	check_array("@T[]", PN_NULL);
 	check_array("@T[nnn]", PN_NULL);
@@ -182,6 +188,28 @@ TEST_CASE("array_int") {
 	check_array("@T[iiiii]", PN_INT, int32_t(-0x80000000), int32_t(-1), int32_t(0), int32_t(1), int32_t(0x7fffffff));
 }
 
+TEST_CASE("array_char") {
+	// TODO: PROTON-2249: This test will pass, but is not checking array contents
+	// correctly until this issue is fixed.
+	auto_free<pn_data_t, pn_data_free> src(pn_data(1));
+	pn_data_clear(src);
+	pn_data_put_array(src, false, PN_CHAR);
+	pn_data_enter(src);
+	pn_data_exit(src);
+	check_encode_decode(src);
+
+	pn_data_clear(src);
+	pn_data_put_array(src, false, PN_CHAR);
+	pn_data_enter(src);
+	pn_data_put_char(src, pn_char_t(0));
+	pn_data_put_char(src, pn_char_t('5'));
+	pn_data_put_char(src, pn_char_t('a'));
+	pn_data_put_char(src, pn_char_t('Z'));
+	pn_data_put_char(src, pn_char_t(0x7f));
+	pn_data_exit(src);
+	check_encode_decode(src);
+}
+
 TEST_CASE("array_ulong") {
 	check_array("@T[]", PN_ULONG);
 	check_array("@T[LLLLL]", PN_ULONG, uint64_t(0), uint64_t(1), uint64_t(0x7fffffffffffffff), uint64_t(0x8000000000000000), uint64_t(0xffffffffffffffff));
@@ -194,7 +222,7 @@ TEST_CASE("array_long") {
 
 TEST_CASE("array_timestamp") {
 	check_array("@T[]", PN_TIMESTAMP);
-	check_array("@T[ttt]", PN_TIMESTAMP, int64_t(0), int64_t(std::time(nullptr)*1000), int64_t(0x123456789abcdef));
+	check_array("@T[ttt]", PN_TIMESTAMP, int64_t(0), int64_t(std::time(0)*1000), int64_t(0x123456789abcdef));
 }
 
 TEST_CASE("array_float") {
@@ -207,9 +235,65 @@ TEST_CASE("array_double") {
 	check_array("@T[ddd]", PN_DOUBLE, double(0.0), double(3.1416), double(1.234e56), double(-1.234e-56));
 }
 
+TEST_CASE("array_decimal32") {
+	auto_free<pn_data_t, pn_data_free> src(pn_data(1));
+	pn_data_clear(src);
+	pn_data_put_array(src, false, PN_DECIMAL32);
+	pn_data_enter(src);
+	pn_data_exit(src);
+	check_encode_decode(src);
+
+	pn_data_clear(src);
+	pn_data_put_array(src, false, PN_DECIMAL32);
+	pn_data_enter(src);
+	pn_data_put_decimal32(src, pn_decimal32_t(0));
+	pn_data_put_decimal32(src, pn_decimal32_t(0x01234567));
+	pn_data_exit(src);
+	check_encode_decode(src);
+}
+
+TEST_CASE("array_decimal64") {
+	auto_free<pn_data_t, pn_data_free> src(pn_data(1));
+	pn_data_clear(src);
+	pn_data_put_array(src, false, PN_DECIMAL64);
+	pn_data_enter(src);
+	pn_data_exit(src);
+	check_encode_decode(src);
+
+	pn_data_clear(src);
+	pn_data_put_array(src, false, PN_DECIMAL64);
+	pn_data_enter(src);
+	pn_data_put_decimal64(src, pn_decimal64_t(0));
+	pn_data_put_decimal64(src, pn_decimal64_t(0x0123456789abcdef));
+	pn_data_exit(src);
+	check_encode_decode(src);
+}
+
+TEST_CASE("array_decimal128") {
+	auto_free<pn_data_t, pn_data_free> src(pn_data(1));
+	pn_data_clear(src);
+	pn_data_put_array(src, false, PN_DECIMAL128);
+	pn_data_enter(src);
+	pn_data_exit(src);
+	check_encode_decode(src);
+
+	pn_data_clear(src);
+	pn_data_put_array(src, false, PN_DECIMAL128);
+	pn_data_enter(src);
+	pn_decimal128_t d1;
+	memset(d1.bytes, 0, sizeof(d1.bytes)); // set to all zeros
+	pn_data_put_decimal128(src, d1);
+	pn_decimal128_t d2;
+	char val[] = {'\x01', '\x23', '\x45', '\x67', '\x89', '\xab', '\xcd', '\xef', '\x01', '\x23', '\x45', '\x67', '\x89', '\xab', '\xcd', '\xef'};
+	memcpy(d2.bytes, val, sizeof(val)); // copy value
+	pn_data_put_decimal128(src, d2);
+	pn_data_exit(src);
+	check_encode_decode(src);
+}
+
 TEST_CASE("array_binary") {
 	check_array("@T[]", PN_BINARY);
-	check_array("@T[zzzzz]", PN_BINARY, 0, "", 2, "\x00\x00", 4, "\x00\x01\xfe\xff", 8, "abcdefgh", 16, "1234567890123456");
+	check_array("@T[ZZZZZ]", PN_BINARY, 0, "", 2, "\x00\x00", 4, "\x00\x01\xfe\xff", 8, "abcdefgh", 16, "1234567890123456");
 }
 
 TEST_CASE("array_string") {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org