[Tarantool-patches] [PATCH 2/2] test: update unit tests to make them TAP-compliant

sergeyb at tarantool.org sergeyb at tarantool.org
Thu May 21 12:59:22 MSK 2020


From: Sergey Bronnikov <sergeyb at tarantool.org>

Closes #5000
---
 test/unit/base64.result               |  178 --
 test/unit/bit.c                       |   75 +-
 test/unit/bit.result                  |  895 ----------
 test/unit/bitset_basic.c              |   38 +-
 test/unit/bitset_basic.result         |   12 -
 test/unit/bitset_index.c              |   42 +-
 test/unit/bitset_index.result         |   21 -
 test/unit/bitset_iterator.c           |   32 +
 test/unit/bitset_iterator.result      |   22 -
 test/unit/bloom.cc                    |   20 +-
 test/unit/bloom.result                |    6 -
 test/unit/bps_tree.cc                 |   80 +-
 test/unit/bps_tree.result             |  284 ---
 test/unit/bps_tree_iterator.cc        |   42 +-
 test/unit/bps_tree_iterator.result    |   21 -
 test/unit/cbus.c                      |   20 +-
 test/unit/cbus.result                 |   24 -
 test/unit/cbus_hang.c                 |    2 +-
 test/unit/cbus_hang.result            |    4 -
 test/unit/cbus_stress.c               |   53 +-
 test/unit/cbus_stress.result          |    2 -
 test/unit/checkpoint_schedule.result  |   41 -
 test/unit/coio.result                 |   12 -
 test/unit/coll.cpp                    |   51 +-
 test/unit/coll.result                 |   90 -
 test/unit/column_mask.result          |   36 -
 test/unit/crypto.result               |  132 --
 test/unit/csv.result                  |   80 +-
 test/unit/decimal.result              |  700 --------
 test/unit/fiber.cc                    |   21 +-
 test/unit/fiber.result                |   19 -
 test/unit/fiber_channel.cc            |    2 +
 test/unit/fiber_channel.result        |   23 -
 test/unit/fiber_channel_stress.cc     |    3 +
 test/unit/fiber_channel_stress.result |    2 -
 test/unit/fiber_cond.result           |    8 -
 test/unit/fiber_stack.c               |    3 +
 test/unit/fiber_stack.result          |   11 -
 test/unit/fiber_stress.cc             |    4 +
 test/unit/fiber_stress.result         |    0
 test/unit/find_path.c                 |    3 +
 test/unit/find_path.result            |    2 -
 test/unit/guard.cc                    |    3 +-
 test/unit/guard.result                |    1 -
 test/unit/guava.c                     |   11 +
 test/unit/guava.result                |    6 -
 test/unit/heap.c                      |   38 +
 test/unit/heap.result                 |   24 -
 test/unit/heap_iterator.c             |   14 +
 test/unit/heap_iterator.result        |    8 -
 test/unit/histogram.c                 |   11 +
 test/unit/histogram.result            |    6 -
 test/unit/int96.cc                    |   51 +-
 test/unit/int96.result                |    2 -
 test/unit/json.result                 |  208 ---
 test/unit/light.cc                    |   16 +-
 test/unit/light.result                |    8 -
 test/unit/luaL_iterator.result        |   89 -
 test/unit/luaT_tuple_new.result       |   22 -
 test/unit/merger.result               |   71 -
 test/unit/mhash.result                |   18 -
 test/unit/mhash_bytemap.result        |   18 -
 test/unit/mp_error.result             |   44 -
 test/unit/msgpack.result              | 2282 -------------------------
 test/unit/popen.result                |   30 -
 test/unit/queue.c                     |   65 +-
 test/unit/queue.result                |   34 -
 test/unit/ratelimit.result            |   13 -
 test/unit/reflection_c.result         |    5 -
 test/unit/reflection_cxx.result       |   31 -
 test/unit/rmean.cc                    |   19 +-
 test/unit/rmean.result                |   11 -
 test/unit/rope.c                      |   10 +-
 test/unit/rope.result                 |  299 ----
 test/unit/rope_avl.c                  |    5 +
 test/unit/rope_avl.result             |  123 --
 test/unit/rope_basic.c                |   19 +-
 test/unit/rope_basic.result           |  139 --
 test/unit/rope_common.h               |   11 +-
 test/unit/rope_stress.c               |    8 +
 test/unit/rope_stress.result          |    4 -
 test/unit/rtree.cc                    |   20 +-
 test/unit/rtree.result                |    8 -
 test/unit/rtree_iterator.cc           |   24 +-
 test/unit/rtree_iterator.result       |    7 -
 test/unit/rtree_multidim.cc           |   30 +-
 test/unit/rtree_multidim.result       |   15 -
 test/unit/say.result                  |   67 -
 test/unit/scramble.c                  |   21 +-
 test/unit/scramble.result             |    4 -
 test/unit/sio.result                  |   36 -
 test/unit/stailq.result               |   76 -
 test/unit/swim.result                 |  234 ---
 test/unit/swim_errinj.result          |   18 -
 test/unit/swim_proto.result           |   40 -
 test/unit/tuple_bigref.result         |   17 -
 test/unit/uri.result                  | 1307 --------------
 test/unit/uuid.result                 |    9 -
 test/unit/vclock.result               |  149 --
 test/unit/vy_cache.result             |    9 -
 test/unit/vy_mem.c                    |    4 +-
 test/unit/vy_mem.result               |   17 -
 test/unit/vy_point_lookup.result      |   20 -
 test/unit/vy_write_iterator.result    |   61 -
 test/unit/xrow.result                 |   58 -
 105 files changed, 649 insertions(+), 8495 deletions(-)
 delete mode 100644 test/unit/base64.result
 delete mode 100644 test/unit/bit.result
 delete mode 100644 test/unit/bitset_basic.result
 delete mode 100644 test/unit/bitset_index.result
 delete mode 100644 test/unit/bitset_iterator.result
 delete mode 100644 test/unit/bloom.result
 delete mode 100644 test/unit/bps_tree.result
 delete mode 100644 test/unit/bps_tree_iterator.result
 delete mode 100644 test/unit/cbus.result
 delete mode 100644 test/unit/cbus_hang.result
 delete mode 100644 test/unit/cbus_stress.result
 delete mode 100644 test/unit/checkpoint_schedule.result
 delete mode 100644 test/unit/coio.result
 delete mode 100644 test/unit/coll.result
 delete mode 100644 test/unit/column_mask.result
 delete mode 100644 test/unit/crypto.result
 delete mode 100644 test/unit/decimal.result
 delete mode 100644 test/unit/fiber.result
 delete mode 100644 test/unit/fiber_channel.result
 delete mode 100644 test/unit/fiber_channel_stress.result
 delete mode 100644 test/unit/fiber_cond.result
 delete mode 100644 test/unit/fiber_stack.result
 delete mode 100644 test/unit/fiber_stress.result
 delete mode 100644 test/unit/find_path.result
 delete mode 100644 test/unit/guard.result
 delete mode 100644 test/unit/guava.result
 delete mode 100644 test/unit/heap.result
 delete mode 100644 test/unit/heap_iterator.result
 delete mode 100644 test/unit/histogram.result
 delete mode 100644 test/unit/int96.result
 delete mode 100644 test/unit/json.result
 delete mode 100644 test/unit/light.result
 delete mode 100644 test/unit/luaL_iterator.result
 delete mode 100644 test/unit/luaT_tuple_new.result
 delete mode 100644 test/unit/merger.result
 delete mode 100644 test/unit/mhash.result
 delete mode 100644 test/unit/mhash_bytemap.result
 delete mode 100644 test/unit/mp_error.result
 delete mode 100644 test/unit/msgpack.result
 delete mode 100644 test/unit/popen.result
 delete mode 100644 test/unit/queue.result
 delete mode 100644 test/unit/ratelimit.result
 delete mode 100644 test/unit/reflection_c.result
 delete mode 100644 test/unit/reflection_cxx.result
 delete mode 100644 test/unit/rmean.result
 delete mode 100644 test/unit/rope.result
 delete mode 100644 test/unit/rope_avl.result
 delete mode 100644 test/unit/rope_basic.result
 delete mode 100644 test/unit/rope_stress.result
 delete mode 100644 test/unit/rtree.result
 delete mode 100644 test/unit/rtree_iterator.result
 delete mode 100644 test/unit/rtree_multidim.result
 delete mode 100644 test/unit/say.result
 delete mode 100644 test/unit/scramble.result
 delete mode 100644 test/unit/sio.result
 delete mode 100644 test/unit/stailq.result
 delete mode 100644 test/unit/swim.result
 delete mode 100644 test/unit/swim_errinj.result
 delete mode 100644 test/unit/swim_proto.result
 delete mode 100644 test/unit/tuple_bigref.result
 delete mode 100644 test/unit/uri.result
 delete mode 100644 test/unit/uuid.result
 delete mode 100644 test/unit/vclock.result
 delete mode 100644 test/unit/vy_cache.result
 delete mode 100644 test/unit/vy_mem.result
 delete mode 100644 test/unit/vy_point_lookup.result
 delete mode 100644 test/unit/vy_write_iterator.result
 delete mode 100644 test/unit/xrow.result

diff --git a/test/unit/base64.result b/test/unit/base64.result
deleted file mode 100644
index cd1f2b3f6..000000000
--- a/test/unit/base64.result
+++ /dev/null
@@ -1,178 +0,0 @@
-1..28
-	*** main ***
-    1..3
-    ok 1 - length
-    ok 2 - decode length ok
-    ok 3 - encode/decode
-ok 1 - subtests
-    1..6
-    ok 1 - length
-    ok 2 - no \n symbols
-    ok 3 - no + symbols
-    ok 4 - no = symbols
-    ok 5 - decode length ok
-    ok 6 - encode/decode
-ok 2 - subtests
-    1..4
-    ok 1 - length
-    ok 2 - no = symbols
-    ok 3 - decode length ok
-    ok 4 - encode/decode
-ok 3 - subtests
-    1..4
-    ok 1 - length
-    ok 2 - no \n symbols
-    ok 3 - decode length ok
-    ok 4 - encode/decode
-ok 4 - subtests
-    1..3
-    ok 1 - length
-    ok 2 - decode length ok
-    ok 3 - encode/decode
-ok 5 - subtests
-    1..6
-    ok 1 - length
-    ok 2 - no \n symbols
-    ok 3 - no + symbols
-    ok 4 - no = symbols
-    ok 5 - decode length ok
-    ok 6 - encode/decode
-ok 6 - subtests
-    1..4
-    ok 1 - length
-    ok 2 - no = symbols
-    ok 3 - decode length ok
-    ok 4 - encode/decode
-ok 7 - subtests
-    1..4
-    ok 1 - length
-    ok 2 - no \n symbols
-    ok 3 - decode length ok
-    ok 4 - encode/decode
-ok 8 - subtests
-    1..3
-    ok 1 - length
-    ok 2 - decode length ok
-    ok 3 - encode/decode
-ok 9 - subtests
-    1..6
-    ok 1 - length
-    ok 2 - no \n symbols
-    ok 3 - no + symbols
-    ok 4 - no = symbols
-    ok 5 - decode length ok
-    ok 6 - encode/decode
-ok 10 - subtests
-    1..4
-    ok 1 - length
-    ok 2 - no = symbols
-    ok 3 - decode length ok
-    ok 4 - encode/decode
-ok 11 - subtests
-    1..4
-    ok 1 - length
-    ok 2 - no \n symbols
-    ok 3 - decode length ok
-    ok 4 - encode/decode
-ok 12 - subtests
-    1..3
-    ok 1 - length
-    ok 2 - decode length ok
-    ok 3 - encode/decode
-ok 13 - subtests
-    1..6
-    ok 1 - length
-    ok 2 - no \n symbols
-    ok 3 - no + symbols
-    ok 4 - no = symbols
-    ok 5 - decode length ok
-    ok 6 - encode/decode
-ok 14 - subtests
-    1..4
-    ok 1 - length
-    ok 2 - no = symbols
-    ok 3 - decode length ok
-    ok 4 - encode/decode
-ok 15 - subtests
-    1..4
-    ok 1 - length
-    ok 2 - no \n symbols
-    ok 3 - decode length ok
-    ok 4 - encode/decode
-ok 16 - subtests
-    1..3
-    ok 1 - length
-    ok 2 - decode length ok
-    ok 3 - encode/decode
-ok 17 - subtests
-    1..6
-    ok 1 - length
-    ok 2 - no \n symbols
-    ok 3 - no + symbols
-    ok 4 - no = symbols
-    ok 5 - decode length ok
-    ok 6 - encode/decode
-ok 18 - subtests
-    1..4
-    ok 1 - length
-    ok 2 - no = symbols
-    ok 3 - decode length ok
-    ok 4 - encode/decode
-ok 19 - subtests
-    1..4
-    ok 1 - length
-    ok 2 - no \n symbols
-    ok 3 - decode length ok
-    ok 4 - encode/decode
-ok 20 - subtests
-    1..3
-    ok 1 - length
-    ok 2 - decode length ok
-    ok 3 - encode/decode
-ok 21 - subtests
-    1..6
-    ok 1 - length
-    ok 2 - no \n symbols
-    ok 3 - no + symbols
-    ok 4 - no = symbols
-    ok 5 - decode length ok
-    ok 6 - encode/decode
-ok 22 - subtests
-    1..4
-    ok 1 - length
-    ok 2 - no = symbols
-    ok 3 - decode length ok
-    ok 4 - encode/decode
-ok 23 - subtests
-    1..4
-    ok 1 - length
-    ok 2 - no \n symbols
-    ok 3 - decode length ok
-    ok 4 - encode/decode
-ok 24 - subtests
-    1..3
-    ok 1 - length
-    ok 2 - decode length ok
-    ok 3 - encode/decode
-ok 25 - subtests
-    1..6
-    ok 1 - length
-    ok 2 - no \n symbols
-    ok 3 - no + symbols
-    ok 4 - no = symbols
-    ok 5 - decode length ok
-    ok 6 - encode/decode
-ok 26 - subtests
-    1..4
-    ok 1 - length
-    ok 2 - no = symbols
-    ok 3 - decode length ok
-    ok 4 - encode/decode
-ok 27 - subtests
-    1..4
-    ok 1 - length
-    ok 2 - no \n symbols
-    ok 3 - decode length ok
-    ok 4 - encode/decode
-ok 28 - subtests
-	*** main: done ***
diff --git a/test/unit/bit.c b/test/unit/bit.c
index da514484d..d18aa5579 100644
--- a/test/unit/bit.c
+++ b/test/unit/bit.c
@@ -2,7 +2,6 @@
 
 #include <stdio.h>
 #include <inttypes.h>
-#include <assert.h>
 #include <stdlib.h>
 
 #include "unit.h"
@@ -21,6 +20,7 @@ static void
 test_ctz_clz(void)
 {
 	header();
+	plan(1);
 
 	for (size_t i = 0; i < sizeof(vals) / sizeof(vals[0]); i++) {
 		if (vals[i] == 0)
@@ -29,20 +29,22 @@ test_ctz_clz(void)
 		uint64_t val64 = vals[i];
 		uint32_t val32 = (uint32_t) vals[i];
 
-		printf("bit_ctz_u64(%" PRIu64 ") => %d\n", val64,
+		note("bit_ctz_u64(%" PRIu64 ") => %d", val64,
 			bit_ctz_u64(val64));
-		printf("bit_clz_u64(%" PRIu64 ") => %d\n", val64,
+		note("bit_clz_u64(%" PRIu64 ") => %d", val64,
 			bit_clz_u64(val64));
 
 		if (vals[i] > UINT32_MAX)
 			continue;
 
-		printf("bit_ctz_u32(%" PRIu32 ") => %d\n", val32,
+		note("bit_ctz_u32(%" PRIu32 ") => %d", val32,
 			bit_ctz_u32(val32));
-		printf("bit_clz_u32(%" PRIu32 ") => %d\n", val32,
+		note("bit_clz_u32(%" PRIu32 ") => %d", val32,
 			bit_clz_u32(val32));
 	}
 
+	ok(1, "test ctz clz");
+	check_plan();
 	footer();
 }
 
@@ -50,21 +52,24 @@ static void
 test_count(void)
 {
 	header();
+	plan(1);
 
 	for (size_t i = 0; i < sizeof(vals) / sizeof(vals[0]); i++) {
 		uint64_t val64 = vals[i];
 		uint32_t val32 = (uint32_t) vals[i];
 
-		printf("bit_count_u64(%" PRIu64 ") => %d\n", val64,
+		note("bit_count_u64(%" PRIu64 ") => %d", val64,
 			bit_count_u64(val64));
 
 		if (vals[i] > UINT32_MAX)
 			continue;
 
-		printf("bit_count_u32(%" PRIu32 ") => %d\n", val32,
+		note("bit_count_u32(%" PRIu32 ") => %d", val32,
 			bit_count_u32(val32));
 	}
 
+	ok(1, "test count");
+	check_plan();
 	footer();
 }
 
@@ -75,17 +80,17 @@ test_rotl_rotr_one(int rot)
 		uint64_t val64 = vals[i];
 		uint32_t val32 = (uint32_t) vals[i];
 
-		printf("bit_rotl_u64(%" PRIu64 ", %d) => %" PRIu64 "\n",
+		note("bit_rotl_u64(%" PRIu64 ", %d) => %" PRIu64,
 		       val64, rot, bit_rotl_u64(val64, rot));
-		printf("bit_rotr_u64(%" PRIu64 ", %d) => %" PRIu64 "\n",
+		note("bit_rotr_u64(%" PRIu64 ", %d) => %" PRIu64,
 		       val64, rot, bit_rotr_u64(val64, rot));
 
 		if (vals[i] > UINT32_MAX || rot > 32)
 			continue;
 
-		printf("bit_rotl_u32(%" PRIu32 ", %d) => %" PRIu32 "\n",
+		note("bit_rotl_u32(%" PRIu32 ", %d) => %" PRIu32,
 		       val32, rot, bit_rotl_u32(val32, rot));
-		printf("bit_rotr_u32(%" PRIu32 ", %d) => %" PRIu32 "\n",
+		note("bit_rotr_u32(%" PRIu32 ", %d) => %" PRIu32,
 		       val32, rot, bit_rotr_u32(val32, rot));
 	}
 }
@@ -94,12 +99,15 @@ static void
 test_rotl_rotr(void)
 {
 	header();
+	plan(1);
 
 	int rots[] = { 0, 1, 15, 16, 31, 32, 63, 64 };
 	for (unsigned r = 0; r < sizeof(rots) / sizeof(rots[0]); r++) {
 		test_rotl_rotr_one(rots[r]);
 	}
 
+	ok(1, "test rotl rotr");
+	check_plan();
 	footer();
 }
 
@@ -107,36 +115,42 @@ static void
 test_bswap(void)
 {
 	header();
+	plan(1);
 
 	for (size_t i = 0; i < sizeof(vals) / sizeof(vals[0]); i++) {
 		uint64_t val64 = vals[i];
 		uint32_t val32 = (uint32_t) vals[i];
 
-		printf("bswap_u64(%" PRIu64 ") => %" PRIu64 "\n", val64,
+		note("bswap_u64(%" PRIu64 ") => %" PRIu64, val64,
 			bswap_u64(val64));
 
 		if (vals[i] > UINT32_MAX)
 			continue;
 
-		printf("bswap_u32(%" PRIu32 ") => %" PRIu32 "\n", val32,
+		note("bswap_u32(%" PRIu32 ") => %" PRIu32, val32,
 			bswap_u32(val32));
 	}
 
+	ok(1, "test bswap");
+	check_plan();
 	footer();
 }
 
 static inline void
 test_index_print(const int *start, const int *end)
 {
+	/*
 	for (const int *cur = start; cur < end; cur++) {
 		printf("%d ", *cur);
 	}
+	*/
 }
 
 static void
 test_index(void)
 {
 	header();
+	plan(1);
 
 	int indexes[sizeof(int64_t) * CHAR_BIT + 1];
 
@@ -144,18 +158,20 @@ test_index(void)
 		uint64_t val64 = vals[i];
 		uint32_t val32 = (uint32_t) vals[i];
 
-		printf("bit_index_u64(%" PRIu64 ", *, -1) => ", val64);
+		//printf("bit_index_u64(%" PRIu64 ", *, -1) => ", val64);
 		test_index_print(indexes, bit_index_u64(val64, indexes, -1));
-		printf("\n");
+		//printf("\n");
 
 		if (vals[i] > UINT32_MAX)
 			continue;
 
-		printf("bit_index_u32(%" PRIu32 ", *, -1) => ", val32);
+		//printf("bit_index_u32(%" PRIu32 ", *, -1) => ", val32);
 		test_index_print(indexes, bit_index_u32(val32, indexes, -1));
-		printf("\n");
+		//printf("\n");
 	}
 
+	ok(1, "test index");
+	check_plan();
 	footer();
 }
 
@@ -164,6 +180,7 @@ static void
 test_bit_iter(void)
 {
 	header();
+	plan(1);
 
 	struct bit_iterator it;
 	uint64_t *data = vals + 6;
@@ -171,22 +188,24 @@ test_bit_iter(void)
 
 	size_t pos = 0;
 
-	printf("Set: ");
+	note("Set: ");
 	bit_iterator_init(&it, data, size, true);
 	while ( (pos = bit_iterator_next(&it)) != SIZE_MAX) {
-		printf("%zu, ", pos);
+		//printf("%zu, ", pos);
 		fail_unless(bit_test(data, pos));
 	}
-	printf("\n");
+	//printf("\n");
 
-	printf("Clear: ");
+	note("Clear: ");
 	bit_iterator_init(&it, data, size, false);
 	while ( (pos = bit_iterator_next(&it)) != SIZE_MAX) {
-		printf("%zu, ", pos);
+		//printf("%zu, ", pos);
 		fail_if(bit_test(data, pos));
 	}
-	printf("\n");
+	//printf("\n");
 
+	ok(1, "test bit iter");
+	check_plan();
 	footer();
 }
 
@@ -194,6 +213,7 @@ static void
 test_bit_iter_empty(void)
 {
 	header();
+	plan(1);
 
 	struct bit_iterator it;
 
@@ -202,7 +222,9 @@ test_bit_iter_empty(void)
 
 	bit_iterator_init(&it, NULL, 0, false);
 	fail_unless(bit_iterator_next(&it) == SIZE_MAX);
-
+	
+	ok(1, "test bit iter empty");
+	check_plan();
 	footer();
 }
 
@@ -210,6 +232,7 @@ static void
 test_bitmap_size(void)
 {
 	header();
+	plan(1);
 	fail_unless(bitmap_size(1) == sizeof(long));
 	fail_unless(bitmap_size(10) == sizeof(long));
 	fail_unless(bitmap_size(sizeof(long) * CHAR_BIT) == sizeof(long));
@@ -217,12 +240,15 @@ test_bitmap_size(void)
 	fail_unless(bitmap_size(sizeof(long) * CHAR_BIT * 4) == sizeof(long) * 4);
 	fail_unless(bitmap_size(sizeof(long) * CHAR_BIT * 4 - 1) == sizeof(long) * 4);
 	fail_unless(bitmap_size(sizeof(long) * CHAR_BIT * 9 / 2) == sizeof(long) * 5);
+	ok(1, "test bitmap size");
+	check_plan();
 	footer();
 }
 
 int
 main(void)
 {
+	plan(8);
 	test_ctz_clz();
 	test_count();
 	test_rotl_rotr();
@@ -231,4 +257,5 @@ main(void)
 	test_bit_iter();
 	test_bit_iter_empty();
 	test_bitmap_size();
+	check_plan();
 }
diff --git a/test/unit/bit.result b/test/unit/bit.result
deleted file mode 100644
index 2d4ccc6f4..000000000
--- a/test/unit/bit.result
+++ /dev/null
@@ -1,895 +0,0 @@
-	*** test_ctz_clz ***
-bit_ctz_u64(1) => 0
-bit_clz_u64(1) => 63
-bit_ctz_u32(1) => 0
-bit_clz_u32(1) => 31
-bit_ctz_u64(2) => 1
-bit_clz_u64(2) => 62
-bit_ctz_u32(2) => 1
-bit_clz_u32(2) => 30
-bit_ctz_u64(32768) => 15
-bit_clz_u64(32768) => 48
-bit_ctz_u32(32768) => 15
-bit_clz_u32(32768) => 16
-bit_ctz_u64(65535) => 0
-bit_clz_u64(65535) => 48
-bit_ctz_u32(65535) => 0
-bit_clz_u32(65535) => 16
-bit_ctz_u64(65536) => 16
-bit_clz_u64(65536) => 47
-bit_ctz_u32(65536) => 16
-bit_clz_u32(65536) => 15
-bit_ctz_u64(726075912) => 3
-bit_clz_u64(726075912) => 34
-bit_ctz_u32(726075912) => 3
-bit_clz_u32(726075912) => 2
-bit_ctz_u64(858993459) => 0
-bit_clz_u64(858993459) => 34
-bit_ctz_u32(858993459) => 0
-bit_clz_u32(858993459) => 2
-bit_ctz_u64(1073741824) => 30
-bit_clz_u64(1073741824) => 33
-bit_ctz_u32(1073741824) => 30
-bit_clz_u32(1073741824) => 1
-bit_ctz_u64(1245250552) => 3
-bit_clz_u64(1245250552) => 33
-bit_ctz_u32(1245250552) => 3
-bit_clz_u32(1245250552) => 1
-bit_ctz_u64(1431655765) => 0
-bit_clz_u64(1431655765) => 33
-bit_ctz_u32(1431655765) => 0
-bit_clz_u32(1431655765) => 1
-bit_ctz_u64(1656977767) => 0
-bit_clz_u64(1656977767) => 33
-bit_ctz_u32(1656977767) => 0
-bit_clz_u32(1656977767) => 1
-bit_ctz_u64(2147483648) => 31
-bit_clz_u64(2147483648) => 32
-bit_ctz_u32(2147483648) => 31
-bit_clz_u32(2147483648) => 0
-bit_ctz_u64(2283114629) => 0
-bit_clz_u64(2283114629) => 32
-bit_ctz_u32(2283114629) => 0
-bit_clz_u32(2283114629) => 0
-bit_ctz_u64(2502548245) => 0
-bit_clz_u64(2502548245) => 32
-bit_ctz_u32(2502548245) => 0
-bit_clz_u32(2502548245) => 0
-bit_ctz_u64(4294967295) => 0
-bit_clz_u64(4294967295) => 32
-bit_ctz_u32(4294967295) => 0
-bit_clz_u32(4294967295) => 0
-bit_ctz_u64(708915120906848425) => 0
-bit_clz_u64(708915120906848425) => 4
-bit_ctz_u64(1960191741125985428) => 2
-bit_clz_u64(1960191741125985428) => 3
-bit_ctz_u64(3689348814741910323) => 0
-bit_clz_u64(3689348814741910323) => 2
-bit_ctz_u64(5578377670650038654) => 1
-bit_clz_u64(5578377670650038654) => 1
-bit_ctz_u64(9223372036854775808) => 63
-bit_clz_u64(9223372036854775808) => 0
-bit_ctz_u64(10755112315580060033) => 0
-bit_clz_u64(10755112315580060033) => 0
-bit_ctz_u64(11163782031541429823) => 0
-bit_clz_u64(11163782031541429823) => 0
-bit_ctz_u64(13903686156871869732) => 2
-bit_clz_u64(13903686156871869732) => 0
-bit_ctz_u64(14237897302422917095) => 0
-bit_clz_u64(14237897302422917095) => 0
-bit_ctz_u64(14302190498657618739) => 0
-bit_clz_u64(14302190498657618739) => 0
-bit_ctz_u64(15766411510232741269) => 0
-bit_clz_u64(15766411510232741269) => 0
-bit_ctz_u64(15984546468465238145) => 0
-bit_clz_u64(15984546468465238145) => 0
-bit_ctz_u64(18446744073709551615) => 0
-bit_clz_u64(18446744073709551615) => 0
-	*** test_ctz_clz: done ***
-	*** test_count ***
-bit_count_u64(0) => 0
-bit_count_u32(0) => 0
-bit_count_u64(1) => 1
-bit_count_u32(1) => 1
-bit_count_u64(2) => 1
-bit_count_u32(2) => 1
-bit_count_u64(32768) => 1
-bit_count_u32(32768) => 1
-bit_count_u64(65535) => 16
-bit_count_u32(65535) => 16
-bit_count_u64(65536) => 1
-bit_count_u32(65536) => 1
-bit_count_u64(726075912) => 11
-bit_count_u32(726075912) => 11
-bit_count_u64(858993459) => 16
-bit_count_u32(858993459) => 16
-bit_count_u64(1073741824) => 1
-bit_count_u32(1073741824) => 1
-bit_count_u64(1245250552) => 14
-bit_count_u32(1245250552) => 14
-bit_count_u64(1431655765) => 16
-bit_count_u32(1431655765) => 16
-bit_count_u64(1656977767) => 17
-bit_count_u32(1656977767) => 17
-bit_count_u64(2147483648) => 1
-bit_count_u32(2147483648) => 1
-bit_count_u64(2283114629) => 10
-bit_count_u32(2283114629) => 10
-bit_count_u64(2502548245) => 16
-bit_count_u32(2502548245) => 16
-bit_count_u64(4294967295) => 32
-bit_count_u32(4294967295) => 32
-bit_count_u64(708915120906848425) => 29
-bit_count_u64(1960191741125985428) => 19
-bit_count_u64(3689348814741910323) => 32
-bit_count_u64(5578377670650038654) => 31
-bit_count_u64(9223372036854775808) => 1
-bit_count_u64(10755112315580060033) => 24
-bit_count_u64(11163782031541429823) => 35
-bit_count_u64(13903686156871869732) => 28
-bit_count_u64(14237897302422917095) => 33
-bit_count_u64(14302190498657618739) => 37
-bit_count_u64(15766411510232741269) => 33
-bit_count_u64(15984546468465238145) => 25
-bit_count_u64(18446744073709551615) => 64
-	*** test_count: done ***
-	*** test_rotl_rotr ***
-bit_rotl_u64(0, 0) => 0
-bit_rotr_u64(0, 0) => 0
-bit_rotl_u32(0, 0) => 0
-bit_rotr_u32(0, 0) => 0
-bit_rotl_u64(1, 0) => 1
-bit_rotr_u64(1, 0) => 1
-bit_rotl_u32(1, 0) => 1
-bit_rotr_u32(1, 0) => 1
-bit_rotl_u64(2, 0) => 2
-bit_rotr_u64(2, 0) => 2
-bit_rotl_u32(2, 0) => 2
-bit_rotr_u32(2, 0) => 2
-bit_rotl_u64(32768, 0) => 32768
-bit_rotr_u64(32768, 0) => 32768
-bit_rotl_u32(32768, 0) => 32768
-bit_rotr_u32(32768, 0) => 32768
-bit_rotl_u64(65535, 0) => 65535
-bit_rotr_u64(65535, 0) => 65535
-bit_rotl_u32(65535, 0) => 65535
-bit_rotr_u32(65535, 0) => 65535
-bit_rotl_u64(65536, 0) => 65536
-bit_rotr_u64(65536, 0) => 65536
-bit_rotl_u32(65536, 0) => 65536
-bit_rotr_u32(65536, 0) => 65536
-bit_rotl_u64(726075912, 0) => 726075912
-bit_rotr_u64(726075912, 0) => 726075912
-bit_rotl_u32(726075912, 0) => 726075912
-bit_rotr_u32(726075912, 0) => 726075912
-bit_rotl_u64(858993459, 0) => 858993459
-bit_rotr_u64(858993459, 0) => 858993459
-bit_rotl_u32(858993459, 0) => 858993459
-bit_rotr_u32(858993459, 0) => 858993459
-bit_rotl_u64(1073741824, 0) => 1073741824
-bit_rotr_u64(1073741824, 0) => 1073741824
-bit_rotl_u32(1073741824, 0) => 1073741824
-bit_rotr_u32(1073741824, 0) => 1073741824
-bit_rotl_u64(1245250552, 0) => 1245250552
-bit_rotr_u64(1245250552, 0) => 1245250552
-bit_rotl_u32(1245250552, 0) => 1245250552
-bit_rotr_u32(1245250552, 0) => 1245250552
-bit_rotl_u64(1431655765, 0) => 1431655765
-bit_rotr_u64(1431655765, 0) => 1431655765
-bit_rotl_u32(1431655765, 0) => 1431655765
-bit_rotr_u32(1431655765, 0) => 1431655765
-bit_rotl_u64(1656977767, 0) => 1656977767
-bit_rotr_u64(1656977767, 0) => 1656977767
-bit_rotl_u32(1656977767, 0) => 1656977767
-bit_rotr_u32(1656977767, 0) => 1656977767
-bit_rotl_u64(2147483648, 0) => 2147483648
-bit_rotr_u64(2147483648, 0) => 2147483648
-bit_rotl_u32(2147483648, 0) => 2147483648
-bit_rotr_u32(2147483648, 0) => 2147483648
-bit_rotl_u64(2283114629, 0) => 2283114629
-bit_rotr_u64(2283114629, 0) => 2283114629
-bit_rotl_u32(2283114629, 0) => 2283114629
-bit_rotr_u32(2283114629, 0) => 2283114629
-bit_rotl_u64(2502548245, 0) => 2502548245
-bit_rotr_u64(2502548245, 0) => 2502548245
-bit_rotl_u32(2502548245, 0) => 2502548245
-bit_rotr_u32(2502548245, 0) => 2502548245
-bit_rotl_u64(4294967295, 0) => 4294967295
-bit_rotr_u64(4294967295, 0) => 4294967295
-bit_rotl_u32(4294967295, 0) => 4294967295
-bit_rotr_u32(4294967295, 0) => 4294967295
-bit_rotl_u64(708915120906848425, 0) => 708915120906848425
-bit_rotr_u64(708915120906848425, 0) => 708915120906848425
-bit_rotl_u64(1960191741125985428, 0) => 1960191741125985428
-bit_rotr_u64(1960191741125985428, 0) => 1960191741125985428
-bit_rotl_u64(3689348814741910323, 0) => 3689348814741910323
-bit_rotr_u64(3689348814741910323, 0) => 3689348814741910323
-bit_rotl_u64(5578377670650038654, 0) => 5578377670650038654
-bit_rotr_u64(5578377670650038654, 0) => 5578377670650038654
-bit_rotl_u64(9223372036854775808, 0) => 9223372036854775808
-bit_rotr_u64(9223372036854775808, 0) => 9223372036854775808
-bit_rotl_u64(10755112315580060033, 0) => 10755112315580060033
-bit_rotr_u64(10755112315580060033, 0) => 10755112315580060033
-bit_rotl_u64(11163782031541429823, 0) => 11163782031541429823
-bit_rotr_u64(11163782031541429823, 0) => 11163782031541429823
-bit_rotl_u64(13903686156871869732, 0) => 13903686156871869732
-bit_rotr_u64(13903686156871869732, 0) => 13903686156871869732
-bit_rotl_u64(14237897302422917095, 0) => 14237897302422917095
-bit_rotr_u64(14237897302422917095, 0) => 14237897302422917095
-bit_rotl_u64(14302190498657618739, 0) => 14302190498657618739
-bit_rotr_u64(14302190498657618739, 0) => 14302190498657618739
-bit_rotl_u64(15766411510232741269, 0) => 15766411510232741269
-bit_rotr_u64(15766411510232741269, 0) => 15766411510232741269
-bit_rotl_u64(15984546468465238145, 0) => 15984546468465238145
-bit_rotr_u64(15984546468465238145, 0) => 15984546468465238145
-bit_rotl_u64(18446744073709551615, 0) => 18446744073709551615
-bit_rotr_u64(18446744073709551615, 0) => 18446744073709551615
-bit_rotl_u64(0, 1) => 0
-bit_rotr_u64(0, 1) => 0
-bit_rotl_u32(0, 1) => 0
-bit_rotr_u32(0, 1) => 0
-bit_rotl_u64(1, 1) => 2
-bit_rotr_u64(1, 1) => 9223372036854775808
-bit_rotl_u32(1, 1) => 2
-bit_rotr_u32(1, 1) => 2147483648
-bit_rotl_u64(2, 1) => 4
-bit_rotr_u64(2, 1) => 1
-bit_rotl_u32(2, 1) => 4
-bit_rotr_u32(2, 1) => 1
-bit_rotl_u64(32768, 1) => 65536
-bit_rotr_u64(32768, 1) => 16384
-bit_rotl_u32(32768, 1) => 65536
-bit_rotr_u32(32768, 1) => 16384
-bit_rotl_u64(65535, 1) => 131070
-bit_rotr_u64(65535, 1) => 9223372036854808575
-bit_rotl_u32(65535, 1) => 131070
-bit_rotr_u32(65535, 1) => 2147516415
-bit_rotl_u64(65536, 1) => 131072
-bit_rotr_u64(65536, 1) => 32768
-bit_rotl_u32(65536, 1) => 131072
-bit_rotr_u32(65536, 1) => 32768
-bit_rotl_u64(726075912, 1) => 1452151824
-bit_rotr_u64(726075912, 1) => 363037956
-bit_rotl_u32(726075912, 1) => 1452151824
-bit_rotr_u32(726075912, 1) => 363037956
-bit_rotl_u64(858993459, 1) => 1717986918
-bit_rotr_u64(858993459, 1) => 9223372037284272537
-bit_rotl_u32(858993459, 1) => 1717986918
-bit_rotr_u32(858993459, 1) => 2576980377
-bit_rotl_u64(1073741824, 1) => 2147483648
-bit_rotr_u64(1073741824, 1) => 536870912
-bit_rotl_u32(1073741824, 1) => 2147483648
-bit_rotr_u32(1073741824, 1) => 536870912
-bit_rotl_u64(1245250552, 1) => 2490501104
-bit_rotr_u64(1245250552, 1) => 622625276
-bit_rotl_u32(1245250552, 1) => 2490501104
-bit_rotr_u32(1245250552, 1) => 622625276
-bit_rotl_u64(1431655765, 1) => 2863311530
-bit_rotr_u64(1431655765, 1) => 9223372037570603690
-bit_rotl_u32(1431655765, 1) => 2863311530
-bit_rotr_u32(1431655765, 1) => 2863311530
-bit_rotl_u64(1656977767, 1) => 3313955534
-bit_rotr_u64(1656977767, 1) => 9223372037683264691
-bit_rotl_u32(1656977767, 1) => 3313955534
-bit_rotr_u32(1656977767, 1) => 2975972531
-bit_rotl_u64(2147483648, 1) => 4294967296
-bit_rotr_u64(2147483648, 1) => 1073741824
-bit_rotl_u32(2147483648, 1) => 1
-bit_rotr_u32(2147483648, 1) => 1073741824
-bit_rotl_u64(2283114629, 1) => 4566229258
-bit_rotr_u64(2283114629, 1) => 9223372037996333122
-bit_rotl_u32(2283114629, 1) => 271261963
-bit_rotr_u32(2283114629, 1) => 3289040962
-bit_rotl_u64(2502548245, 1) => 5005096490
-bit_rotr_u64(2502548245, 1) => 9223372038106049930
-bit_rotl_u32(2502548245, 1) => 710129195
-bit_rotr_u32(2502548245, 1) => 3398757770
-bit_rotl_u64(4294967295, 1) => 8589934590
-bit_rotr_u64(4294967295, 1) => 9223372039002259455
-bit_rotl_u32(4294967295, 1) => 4294967295
-bit_rotr_u32(4294967295, 1) => 4294967295
-bit_rotl_u64(708915120906848425, 1) => 1417830241813696850
-bit_rotr_u64(708915120906848425, 1) => 9577829597308200020
-bit_rotl_u64(1960191741125985428, 1) => 3920383482251970856
-bit_rotr_u64(1960191741125985428, 1) => 980095870562992714
-bit_rotl_u64(3689348814741910323, 1) => 7378697629483820646
-bit_rotr_u64(3689348814741910323, 1) => 11068046444225730969
-bit_rotl_u64(5578377670650038654, 1) => 11156755341300077308
-bit_rotr_u64(5578377670650038654, 1) => 2789188835325019327
-bit_rotl_u64(9223372036854775808, 1) => 1
-bit_rotr_u64(9223372036854775808, 1) => 4611686018427387904
-bit_rotl_u64(10755112315580060033, 1) => 3063480557450568451
-bit_rotr_u64(10755112315580060033, 1) => 14600928194644805824
-bit_rotl_u64(11163782031541429823, 1) => 3880819989373308031
-bit_rotr_u64(11163782031541429823, 1) => 14805263052625490719
-bit_rotl_u64(13903686156871869732, 1) => 9360628240034187849
-bit_rotr_u64(13903686156871869732, 1) => 6951843078435934866
-bit_rotl_u64(14237897302422917095, 1) => 10029050531136282575
-bit_rotr_u64(14237897302422917095, 1) => 16342320688066234355
-bit_rotl_u64(14302190498657618739, 1) => 10157636923605685863
-bit_rotr_u64(14302190498657618739, 1) => 16374467286183585177
-bit_rotl_u64(15766411510232741269, 1) => 13086078946755930923
-bit_rotr_u64(15766411510232741269, 1) => 17106577791971146442
-bit_rotl_u64(15984546468465238145, 1) => 13522348863220924675
-bit_rotr_u64(15984546468465238145, 1) => 17215645271087394880
-bit_rotl_u64(18446744073709551615, 1) => 18446744073709551615
-bit_rotr_u64(18446744073709551615, 1) => 18446744073709551615
-bit_rotl_u64(0, 15) => 0
-bit_rotr_u64(0, 15) => 0
-bit_rotl_u32(0, 15) => 0
-bit_rotr_u32(0, 15) => 0
-bit_rotl_u64(1, 15) => 32768
-bit_rotr_u64(1, 15) => 562949953421312
-bit_rotl_u32(1, 15) => 32768
-bit_rotr_u32(1, 15) => 131072
-bit_rotl_u64(2, 15) => 65536
-bit_rotr_u64(2, 15) => 1125899906842624
-bit_rotl_u32(2, 15) => 65536
-bit_rotr_u32(2, 15) => 262144
-bit_rotl_u64(32768, 15) => 1073741824
-bit_rotr_u64(32768, 15) => 1
-bit_rotl_u32(32768, 15) => 1073741824
-bit_rotr_u32(32768, 15) => 1
-bit_rotl_u64(65535, 15) => 2147450880
-bit_rotr_u64(65535, 15) => 18446181123756130305
-bit_rotl_u32(65535, 15) => 2147450880
-bit_rotr_u32(65535, 15) => 4294836225
-bit_rotl_u64(65536, 15) => 2147483648
-bit_rotr_u64(65536, 15) => 2
-bit_rotl_u32(65536, 15) => 2147483648
-bit_rotr_u32(65536, 15) => 2
-bit_rotl_u64(726075912, 15) => 23792055484416
-bit_rotr_u64(726075912, 15) => 1445655480385951374
-bit_rotl_u32(726075912, 15) => 2231637411
-bit_rotr_u32(726075912, 15) => 336615054
-bit_rotl_u64(858993459, 15) => 28147497664512
-bit_rotr_u64(858993459, 15) => 7378585039493162598
-bit_rotl_u32(858993459, 15) => 2576980377
-bit_rotr_u32(858993459, 15) => 1717986918
-bit_rotl_u64(1073741824, 15) => 35184372088832
-bit_rotr_u64(1073741824, 15) => 32768
-bit_rotl_u32(1073741824, 15) => 8192
-bit_rotr_u32(1073741824, 15) => 32768
-bit_rotl_u64(1245250552, 15) => 40804370087936
-bit_rotr_u64(1245250552, 15) => 571957152676090994
-bit_rotl_u32(1245250552, 15) => 2180785436
-bit_rotr_u32(1245250552, 15) => 133207154
-bit_rotl_u64(1431655765, 15) => 46912496107520
-bit_rotr_u64(1431655765, 15) => 12297641732488604330
-bit_rotl_u32(1431655765, 15) => 2863311530
-bit_rotr_u32(1431655765, 15) => 2863311530
-bit_rotl_u64(1656977767, 15) => 54295847469056
-bit_rotr_u64(1656977767, 15) => 17495921602381006214
-bit_rotl_u32(1656977767, 15) => 3165892961
-bit_rotr_u32(1656977767, 15) => 4073637254
-bit_rotl_u64(2147483648, 15) => 70368744177664
-bit_rotr_u64(2147483648, 15) => 65536
-bit_rotl_u32(2147483648, 15) => 16384
-bit_rotr_u32(2147483648, 15) => 65536
-bit_rotl_u64(2283114629, 15) => 74813100163072
-bit_rotr_u64(2283114629, 15) => 2380715353018798123
-bit_rotl_u32(2283114629, 15) => 3359818762
-bit_rotr_u32(2283114629, 15) => 554373163
-bit_rotl_u64(2502548245, 15) => 82003500892160
-bit_rotr_u64(2502548245, 15) => 13126304063924808275
-bit_rotl_u32(2502548245, 15) => 3985296020
-bit_rotr_u32(2502548245, 15) => 3056282195
-bit_rotl_u64(4294967295, 15) => 140737488322560
-bit_rotr_u64(4294967295, 15) => 18446181123756261375
-bit_rotl_u32(4294967295, 15) => 4294967295
-bit_rotr_u32(4294967295, 15) => 4294967295
-bit_rotl_u64(708915120906848425, 15) => 5279893075283707115
-bit_rotr_u64(708915120906848425, 15) => 10471453717962410780
-bit_rotl_u64(1960191741125985428, 15) => 108559631781274
-bit_rotr_u64(1960191741125985428, 15) => 659837165714377456
-bit_rotl_u64(3689348814741910323, 15) => 11068046444225730969
-bit_rotr_u64(3689348814741910323, 15) => 7378697629483820646
-bit_rotl_u64(5578377670650038654, 15) => 3492485472519661237
-bit_rotr_u64(5578377670650038654, 15) => 1368138625390162978
-bit_rotl_u64(9223372036854775808, 15) => 16384
-bit_rotr_u64(9223372036854775808, 15) => 281474976710656
-bit_rotl_u64(10755112315580060033, 15) => 16921572780133108384
-bit_rotr_u64(10755112315580060033, 15) => 2522906961261232936
-bit_rotl_u64(11163782031541429823, 15) => 15874627889163914614
-bit_rotr_u64(11163782031541429823, 15) => 14735555722393159636
-bit_rotl_u64(13903686156871869732, 15) => 16749599972631142521
-bit_rotr_u64(13903686156871869732, 15) => 5352952463958352314
-bit_rotl_u64(14237897302422917095, 15) => 10814437605877473995
-bit_rotr_u64(14237897302422917095, 15) => 2292203766521423570
-bit_rotl_u64(14302190498657618739, 15) => 14645067421692060477
-bit_rotr_u64(14302190498657618739, 15) => 10837786021529578728
-bit_rotl_u64(15766411510232741269, 15) => 14257838996763372902
-bit_rotr_u64(15766411510232741269, 15) => 16945837700629926938
-bit_rotl_u64(15984546468465238145, 15) => 4767449759914979050
-bit_rotr_u64(15984546468465238145, 15) => 13908166408919157040
-bit_rotl_u64(18446744073709551615, 15) => 18446744073709551615
-bit_rotr_u64(18446744073709551615, 15) => 18446744073709551615
-bit_rotl_u64(0, 16) => 0
-bit_rotr_u64(0, 16) => 0
-bit_rotl_u32(0, 16) => 0
-bit_rotr_u32(0, 16) => 0
-bit_rotl_u64(1, 16) => 65536
-bit_rotr_u64(1, 16) => 281474976710656
-bit_rotl_u32(1, 16) => 65536
-bit_rotr_u32(1, 16) => 65536
-bit_rotl_u64(2, 16) => 131072
-bit_rotr_u64(2, 16) => 562949953421312
-bit_rotl_u32(2, 16) => 131072
-bit_rotr_u32(2, 16) => 131072
-bit_rotl_u64(32768, 16) => 2147483648
-bit_rotr_u64(32768, 16) => 9223372036854775808
-bit_rotl_u32(32768, 16) => 2147483648
-bit_rotr_u32(32768, 16) => 2147483648
-bit_rotl_u64(65535, 16) => 4294901760
-bit_rotr_u64(65535, 16) => 18446462598732840960
-bit_rotl_u32(65535, 16) => 4294901760
-bit_rotr_u32(65535, 16) => 4294901760
-bit_rotl_u64(65536, 16) => 4294967296
-bit_rotr_u64(65536, 16) => 1
-bit_rotl_u32(65536, 16) => 1
-bit_rotr_u32(65536, 16) => 1
-bit_rotl_u64(726075912, 16) => 47584110968832
-bit_rotr_u64(726075912, 16) => 722827740192975687
-bit_rotl_u32(726075912, 16) => 168307527
-bit_rotr_u32(726075912, 16) => 168307527
-bit_rotl_u64(858993459, 16) => 56294995329024
-bit_rotr_u64(858993459, 16) => 3689292519746581299
-bit_rotl_u32(858993459, 16) => 858993459
-bit_rotr_u32(858993459, 16) => 858993459
-bit_rotl_u64(1073741824, 16) => 70368744177664
-bit_rotr_u64(1073741824, 16) => 16384
-bit_rotl_u32(1073741824, 16) => 16384
-bit_rotr_u32(1073741824, 16) => 16384
-bit_rotl_u64(1245250552, 16) => 81608740175872
-bit_rotr_u64(1245250552, 16) => 285978576338045497
-bit_rotl_u32(1245250552, 16) => 66603577
-bit_rotr_u32(1245250552, 16) => 66603577
-bit_rotl_u64(1431655765, 16) => 93824992215040
-bit_rotr_u64(1431655765, 16) => 6148820866244302165
-bit_rotl_u32(1431655765, 16) => 1431655765
-bit_rotr_u32(1431655765, 16) => 1431655765
-bit_rotl_u64(1656977767, 16) => 108591694938112
-bit_rotr_u64(1656977767, 16) => 8747960801190503107
-bit_rotl_u32(1656977767, 16) => 2036818627
-bit_rotr_u32(1656977767, 16) => 2036818627
-bit_rotl_u64(2147483648, 16) => 140737488355328
-bit_rotr_u64(2147483648, 16) => 32768
-bit_rotl_u32(2147483648, 16) => 32768
-bit_rotr_u32(2147483648, 16) => 32768
-bit_rotl_u64(2283114629, 16) => 149626200326144
-bit_rotr_u64(2283114629, 16) => 10413729713364174869
-bit_rotl_u32(2283114629, 16) => 2424670229
-bit_rotr_u32(2283114629, 16) => 2424670229
-bit_rotl_u64(2502548245, 16) => 164007001784320
-bit_rotr_u64(2502548245, 16) => 15786524068817179945
-bit_rotl_u32(2502548245, 16) => 3675624745
-bit_rotr_u32(2502548245, 16) => 3675624745
-bit_rotl_u64(4294967295, 16) => 281474976645120
-bit_rotr_u64(4294967295, 16) => 18446462598732906495
-bit_rotl_u32(4294967295, 16) => 4294967295
-bit_rotr_u32(4294967295, 16) => 4294967295
-bit_rotl_u64(708915120906848425, 16) => 10559786150567414230
-bit_rotr_u64(708915120906848425, 16) => 5235726858981205390
-bit_rotl_u64(1960191741125985428, 16) => 217119263562548
-bit_rotr_u64(1960191741125985428, 16) => 329918582857188728
-bit_rotl_u64(3689348814741910323, 16) => 3689348814741910323
-bit_rotr_u64(3689348814741910323, 16) => 3689348814741910323
-bit_rotl_u64(5578377670650038654, 16) => 6984970945039322474
-bit_rotr_u64(5578377670650038654, 16) => 684069312695081489
-bit_rotl_u64(9223372036854775808, 16) => 32768
-bit_rotr_u64(9223372036854775808, 16) => 140737488355328
-bit_rotl_u64(10755112315580060033, 16) => 15396401486556665153
-bit_rotr_u64(10755112315580060033, 16) => 1261453480630616468
-bit_rotl_u64(11163782031541429823, 16) => 13302511704618277613
-bit_rotr_u64(11163782031541429823, 16) => 7367777861196579818
-bit_rotl_u64(13903686156871869732, 16) => 15052455871552733427
-bit_rotr_u64(13903686156871869732, 16) => 2676476231979176157
-bit_rotl_u64(14237897302422917095, 16) => 3182131138045396375
-bit_rotr_u64(14237897302422917095, 16) => 1146101883260711785
-bit_rotl_u64(14302190498657618739, 16) => 10843390769674569339
-bit_rotr_u64(14302190498657618739, 16) => 5418893010764789364
-bit_rotl_u64(15766411510232741269, 16) => 10068933919817194189
-bit_rotr_u64(15766411510232741269, 16) => 8472918850314963469
-bit_rotl_u64(15984546468465238145, 16) => 9534899519829958100
-bit_rotr_u64(15984546468465238145, 16) => 6954083204459578520
-bit_rotl_u64(18446744073709551615, 16) => 18446744073709551615
-bit_rotr_u64(18446744073709551615, 16) => 18446744073709551615
-bit_rotl_u64(0, 31) => 0
-bit_rotr_u64(0, 31) => 0
-bit_rotl_u32(0, 31) => 0
-bit_rotr_u32(0, 31) => 0
-bit_rotl_u64(1, 31) => 2147483648
-bit_rotr_u64(1, 31) => 8589934592
-bit_rotl_u32(1, 31) => 2147483648
-bit_rotr_u32(1, 31) => 2
-bit_rotl_u64(2, 31) => 4294967296
-bit_rotr_u64(2, 31) => 17179869184
-bit_rotl_u32(2, 31) => 1
-bit_rotr_u32(2, 31) => 4
-bit_rotl_u64(32768, 31) => 70368744177664
-bit_rotr_u64(32768, 31) => 281474976710656
-bit_rotl_u32(32768, 31) => 16384
-bit_rotr_u32(32768, 31) => 65536
-bit_rotl_u64(65535, 31) => 140735340871680
-bit_rotr_u64(65535, 31) => 562941363486720
-bit_rotl_u32(65535, 31) => 2147516415
-bit_rotr_u32(65535, 31) => 131070
-bit_rotl_u64(65536, 31) => 140737488355328
-bit_rotr_u64(65536, 31) => 562949953421312
-bit_rotl_u32(65536, 31) => 32768
-bit_rotr_u32(65536, 31) => 131072
-bit_rotl_u64(726075912, 31) => 1559236148226686976
-bit_rotr_u64(726075912, 31) => 6236944592906747904
-bit_rotl_u32(726075912, 31) => 363037956
-bit_rotr_u32(726075912, 31) => 1452151824
-bit_rotl_u64(858993459, 31) => 1844674406941458432
-bit_rotr_u64(858993459, 31) => 7378697627765833728
-bit_rotl_u32(858993459, 31) => 2576980377
-bit_rotr_u32(858993459, 31) => 1717986918
-bit_rotl_u64(1073741824, 31) => 2305843009213693952
-bit_rotr_u64(1073741824, 31) => 9223372036854775808
-bit_rotl_u32(1073741824, 31) => 536870912
-bit_rotr_u32(1073741824, 31) => 2147483648
-bit_rotl_u64(1245250552, 31) => 2674155198082973696
-bit_rotr_u64(1245250552, 31) => 10696620792331894784
-bit_rotl_u32(1245250552, 31) => 622625276
-bit_rotr_u32(1245250552, 31) => 2490501104
-bit_rotl_u64(1431655765, 31) => 3074457344902430720
-bit_rotr_u64(1431655765, 31) => 12297829379609722880
-bit_rotl_u32(1431655765, 31) => 2863311530
-bit_rotr_u32(1431655765, 31) => 2863311530
-bit_rotl_u64(1656977767, 31) => 3558332659732054016
-bit_rotr_u64(1656977767, 31) => 14233330638928216064
-bit_rotl_u32(1656977767, 31) => 2975972531
-bit_rotr_u32(1656977767, 31) => 3313955534
-bit_rotl_u64(2147483648, 31) => 4611686018427387904
-bit_rotr_u64(2147483648, 31) => 1
-bit_rotl_u32(2147483648, 31) => 1073741824
-bit_rotr_u32(2147483648, 31) => 1
-bit_rotl_u64(2283114629, 31) => 4902951332287086592
-bit_rotr_u64(2283114629, 31) => 1165061255438794753
-bit_rotl_u32(2283114629, 31) => 3289040962
-bit_rotr_u32(2283114629, 31) => 271261963
-bit_rotl_u64(2502548245, 31) => 5374181434468597760
-bit_rotr_u64(2502548245, 31) => 3049981664164839425
-bit_rotl_u32(2502548245, 31) => 3398757770
-bit_rotr_u32(2502548245, 31) => 710129195
-bit_rotl_u64(4294967295, 31) => 9223372034707292160
-bit_rotr_u64(4294967295, 31) => 18446744065119617025
-bit_rotl_u32(4294967295, 31) => 4294967295
-bit_rotr_u32(4294967295, 31) => 4294967295
-bit_rotl_u64(708915120906848425, 31) => 17493991222969846085
-bit_rotr_u64(708915120906848425, 31) => 14635732670750729495
-bit_rotl_u64(1960191741125985428, 31) => 7114564028417572864
-bit_rotr_u64(1960191741125985428, 31) => 10011512039960739841
-bit_rotl_u64(3689348814741910323, 31) => 11068046444225730969
-bit_rotr_u64(3689348814741910323, 31) => 7378697629483820646
-bit_rotl_u64(5578377670650038654, 31) => 14774204534111940727
-bit_rotr_u64(5578377670650038654, 31) => 3756585915319108063
-bit_rotl_u64(9223372036854775808, 31) => 1073741824
-bit_rotr_u64(9223372036854775808, 31) => 4294967296
-bit_rotl_u64(10755112315580060033, 31) => 9280239606276614869
-bit_rotr_u64(10755112315580060033, 31) => 227470277687356246
-bit_rotl_u64(11163782031541429823, 31) => 141075175016160334
-bit_rotr_u64(11163782031541429823, 31) => 564300700064641336
-bit_rotl_u64(13903686156871869732, 31) => 9830956193977854066
-bit_rotr_u64(13903686156871869732, 31) => 2430336628492313034
-bit_rotl_u64(14237897302422917095, 31) => 11075626865162688020
-bit_rotr_u64(14237897302422917095, 31) => 7409019313231648850
-bit_rotl_u64(14302190498657618739, 31) => 13491136976614443837
-bit_rotr_u64(14302190498657618739, 31) => 17071059759038672118
-bit_rotl_u64(15766411510232741269, 31) => 362182200778999262
-bit_rotr_u64(15766411510232741269, 31) => 1448728803115997048
-bit_rotl_u64(15984546468465238145, 31) => 7083089369391317545
-bit_rotr_u64(15984546468465238145, 31) => 9885613403855718565
-bit_rotl_u64(18446744073709551615, 31) => 18446744073709551615
-bit_rotr_u64(18446744073709551615, 31) => 18446744073709551615
-bit_rotl_u64(0, 32) => 0
-bit_rotr_u64(0, 32) => 0
-bit_rotl_u32(0, 32) => 0
-bit_rotr_u32(0, 32) => 0
-bit_rotl_u64(1, 32) => 4294967296
-bit_rotr_u64(1, 32) => 4294967296
-bit_rotl_u32(1, 32) => 1
-bit_rotr_u32(1, 32) => 1
-bit_rotl_u64(2, 32) => 8589934592
-bit_rotr_u64(2, 32) => 8589934592
-bit_rotl_u32(2, 32) => 2
-bit_rotr_u32(2, 32) => 2
-bit_rotl_u64(32768, 32) => 140737488355328
-bit_rotr_u64(32768, 32) => 140737488355328
-bit_rotl_u32(32768, 32) => 32768
-bit_rotr_u32(32768, 32) => 32768
-bit_rotl_u64(65535, 32) => 281470681743360
-bit_rotr_u64(65535, 32) => 281470681743360
-bit_rotl_u32(65535, 32) => 65535
-bit_rotr_u32(65535, 32) => 65535
-bit_rotl_u64(65536, 32) => 281474976710656
-bit_rotr_u64(65536, 32) => 281474976710656
-bit_rotl_u32(65536, 32) => 65536
-bit_rotr_u32(65536, 32) => 65536
-bit_rotl_u64(726075912, 32) => 3118472296453373952
-bit_rotr_u64(726075912, 32) => 3118472296453373952
-bit_rotl_u32(726075912, 32) => 726075912
-bit_rotr_u32(726075912, 32) => 726075912
-bit_rotl_u64(858993459, 32) => 3689348813882916864
-bit_rotr_u64(858993459, 32) => 3689348813882916864
-bit_rotl_u32(858993459, 32) => 858993459
-bit_rotr_u32(858993459, 32) => 858993459
-bit_rotl_u64(1073741824, 32) => 4611686018427387904
-bit_rotr_u64(1073741824, 32) => 4611686018427387904
-bit_rotl_u32(1073741824, 32) => 1073741824
-bit_rotr_u32(1073741824, 32) => 1073741824
-bit_rotl_u64(1245250552, 32) => 5348310396165947392
-bit_rotr_u64(1245250552, 32) => 5348310396165947392
-bit_rotl_u32(1245250552, 32) => 1245250552
-bit_rotr_u32(1245250552, 32) => 1245250552
-bit_rotl_u64(1431655765, 32) => 6148914689804861440
-bit_rotr_u64(1431655765, 32) => 6148914689804861440
-bit_rotl_u32(1431655765, 32) => 1431655765
-bit_rotr_u32(1431655765, 32) => 1431655765
-bit_rotl_u64(1656977767, 32) => 7116665319464108032
-bit_rotr_u64(1656977767, 32) => 7116665319464108032
-bit_rotl_u32(1656977767, 32) => 1656977767
-bit_rotr_u32(1656977767, 32) => 1656977767
-bit_rotl_u64(2147483648, 32) => 9223372036854775808
-bit_rotr_u64(2147483648, 32) => 9223372036854775808
-bit_rotl_u32(2147483648, 32) => 2147483648
-bit_rotr_u32(2147483648, 32) => 2147483648
-bit_rotl_u64(2283114629, 32) => 9805902664574173184
-bit_rotr_u64(2283114629, 32) => 9805902664574173184
-bit_rotl_u32(2283114629, 32) => 2283114629
-bit_rotr_u32(2283114629, 32) => 2283114629
-bit_rotl_u64(2502548245, 32) => 10748362868937195520
-bit_rotr_u64(2502548245, 32) => 10748362868937195520
-bit_rotl_u32(2502548245, 32) => 2502548245
-bit_rotr_u32(2502548245, 32) => 2502548245
-bit_rotl_u64(4294967295, 32) => 18446744069414584320
-bit_rotr_u64(4294967295, 32) => 18446744069414584320
-bit_rotl_u32(4294967295, 32) => 4294967295
-bit_rotr_u32(4294967295, 32) => 4294967295
-bit_rotl_u64(708915120906848425, 32) => 16541238372230140555
-bit_rotr_u64(708915120906848425, 32) => 16541238372230140555
-bit_rotl_u64(1960191741125985428, 32) => 14229128056835145728
-bit_rotr_u64(1960191741125985428, 32) => 14229128056835145728
-bit_rotl_u64(3689348814741910323, 32) => 3689348814741910323
-bit_rotr_u64(3689348814741910323, 32) => 3689348814741910323
-bit_rotl_u64(5578377670650038654, 32) => 11101664994514329839
-bit_rotr_u64(5578377670650038654, 32) => 11101664994514329839
-bit_rotl_u64(9223372036854775808, 32) => 2147483648
-bit_rotr_u64(9223372036854775808, 32) => 2147483648
-bit_rotl_u64(10755112315580060033, 32) => 113735138843678123
-bit_rotr_u64(10755112315580060033, 32) => 113735138843678123
-bit_rotl_u64(11163782031541429823, 32) => 282150350032320668
-bit_rotr_u64(11163782031541429823, 32) => 282150350032320668
-bit_rotl_u64(13903686156871869732, 32) => 1215168314246156517
-bit_rotr_u64(13903686156871869732, 32) => 1215168314246156517
-bit_rotl_u64(14237897302422917095, 32) => 3704509656615824425
-bit_rotr_u64(14237897302422917095, 32) => 3704509656615824425
-bit_rotl_u64(14302190498657618739, 32) => 8535529879519336059
-bit_rotr_u64(14302190498657618739, 32) => 8535529879519336059
-bit_rotl_u64(15766411510232741269, 32) => 724364401557998524
-bit_rotr_u64(15766411510232741269, 32) => 724364401557998524
-bit_rotl_u64(15984546468465238145, 32) => 14166178738782635090
-bit_rotr_u64(15984546468465238145, 32) => 14166178738782635090
-bit_rotl_u64(18446744073709551615, 32) => 18446744073709551615
-bit_rotr_u64(18446744073709551615, 32) => 18446744073709551615
-bit_rotl_u64(0, 63) => 0
-bit_rotr_u64(0, 63) => 0
-bit_rotl_u64(1, 63) => 9223372036854775808
-bit_rotr_u64(1, 63) => 2
-bit_rotl_u64(2, 63) => 1
-bit_rotr_u64(2, 63) => 4
-bit_rotl_u64(32768, 63) => 16384
-bit_rotr_u64(32768, 63) => 65536
-bit_rotl_u64(65535, 63) => 9223372036854808575
-bit_rotr_u64(65535, 63) => 131070
-bit_rotl_u64(65536, 63) => 32768
-bit_rotr_u64(65536, 63) => 131072
-bit_rotl_u64(726075912, 63) => 363037956
-bit_rotr_u64(726075912, 63) => 1452151824
-bit_rotl_u64(858993459, 63) => 9223372037284272537
-bit_rotr_u64(858993459, 63) => 1717986918
-bit_rotl_u64(1073741824, 63) => 536870912
-bit_rotr_u64(1073741824, 63) => 2147483648
-bit_rotl_u64(1245250552, 63) => 622625276
-bit_rotr_u64(1245250552, 63) => 2490501104
-bit_rotl_u64(1431655765, 63) => 9223372037570603690
-bit_rotr_u64(1431655765, 63) => 2863311530
-bit_rotl_u64(1656977767, 63) => 9223372037683264691
-bit_rotr_u64(1656977767, 63) => 3313955534
-bit_rotl_u64(2147483648, 63) => 1073741824
-bit_rotr_u64(2147483648, 63) => 4294967296
-bit_rotl_u64(2283114629, 63) => 9223372037996333122
-bit_rotr_u64(2283114629, 63) => 4566229258
-bit_rotl_u64(2502548245, 63) => 9223372038106049930
-bit_rotr_u64(2502548245, 63) => 5005096490
-bit_rotl_u64(4294967295, 63) => 9223372039002259455
-bit_rotr_u64(4294967295, 63) => 8589934590
-bit_rotl_u64(708915120906848425, 63) => 9577829597308200020
-bit_rotr_u64(708915120906848425, 63) => 1417830241813696850
-bit_rotl_u64(1960191741125985428, 63) => 980095870562992714
-bit_rotr_u64(1960191741125985428, 63) => 3920383482251970856
-bit_rotl_u64(3689348814741910323, 63) => 11068046444225730969
-bit_rotr_u64(3689348814741910323, 63) => 7378697629483820646
-bit_rotl_u64(5578377670650038654, 63) => 2789188835325019327
-bit_rotr_u64(5578377670650038654, 63) => 11156755341300077308
-bit_rotl_u64(9223372036854775808, 63) => 4611686018427387904
-bit_rotr_u64(9223372036854775808, 63) => 1
-bit_rotl_u64(10755112315580060033, 63) => 14600928194644805824
-bit_rotr_u64(10755112315580060033, 63) => 3063480557450568451
-bit_rotl_u64(11163782031541429823, 63) => 14805263052625490719
-bit_rotr_u64(11163782031541429823, 63) => 3880819989373308031
-bit_rotl_u64(13903686156871869732, 63) => 6951843078435934866
-bit_rotr_u64(13903686156871869732, 63) => 9360628240034187849
-bit_rotl_u64(14237897302422917095, 63) => 16342320688066234355
-bit_rotr_u64(14237897302422917095, 63) => 10029050531136282575
-bit_rotl_u64(14302190498657618739, 63) => 16374467286183585177
-bit_rotr_u64(14302190498657618739, 63) => 10157636923605685863
-bit_rotl_u64(15766411510232741269, 63) => 17106577791971146442
-bit_rotr_u64(15766411510232741269, 63) => 13086078946755930923
-bit_rotl_u64(15984546468465238145, 63) => 17215645271087394880
-bit_rotr_u64(15984546468465238145, 63) => 13522348863220924675
-bit_rotl_u64(18446744073709551615, 63) => 18446744073709551615
-bit_rotr_u64(18446744073709551615, 63) => 18446744073709551615
-bit_rotl_u64(0, 64) => 0
-bit_rotr_u64(0, 64) => 0
-bit_rotl_u64(1, 64) => 1
-bit_rotr_u64(1, 64) => 1
-bit_rotl_u64(2, 64) => 2
-bit_rotr_u64(2, 64) => 2
-bit_rotl_u64(32768, 64) => 32768
-bit_rotr_u64(32768, 64) => 32768
-bit_rotl_u64(65535, 64) => 65535
-bit_rotr_u64(65535, 64) => 65535
-bit_rotl_u64(65536, 64) => 65536
-bit_rotr_u64(65536, 64) => 65536
-bit_rotl_u64(726075912, 64) => 726075912
-bit_rotr_u64(726075912, 64) => 726075912
-bit_rotl_u64(858993459, 64) => 858993459
-bit_rotr_u64(858993459, 64) => 858993459
-bit_rotl_u64(1073741824, 64) => 1073741824
-bit_rotr_u64(1073741824, 64) => 1073741824
-bit_rotl_u64(1245250552, 64) => 1245250552
-bit_rotr_u64(1245250552, 64) => 1245250552
-bit_rotl_u64(1431655765, 64) => 1431655765
-bit_rotr_u64(1431655765, 64) => 1431655765
-bit_rotl_u64(1656977767, 64) => 1656977767
-bit_rotr_u64(1656977767, 64) => 1656977767
-bit_rotl_u64(2147483648, 64) => 2147483648
-bit_rotr_u64(2147483648, 64) => 2147483648
-bit_rotl_u64(2283114629, 64) => 2283114629
-bit_rotr_u64(2283114629, 64) => 2283114629
-bit_rotl_u64(2502548245, 64) => 2502548245
-bit_rotr_u64(2502548245, 64) => 2502548245
-bit_rotl_u64(4294967295, 64) => 4294967295
-bit_rotr_u64(4294967295, 64) => 4294967295
-bit_rotl_u64(708915120906848425, 64) => 708915120906848425
-bit_rotr_u64(708915120906848425, 64) => 708915120906848425
-bit_rotl_u64(1960191741125985428, 64) => 1960191741125985428
-bit_rotr_u64(1960191741125985428, 64) => 1960191741125985428
-bit_rotl_u64(3689348814741910323, 64) => 3689348814741910323
-bit_rotr_u64(3689348814741910323, 64) => 3689348814741910323
-bit_rotl_u64(5578377670650038654, 64) => 5578377670650038654
-bit_rotr_u64(5578377670650038654, 64) => 5578377670650038654
-bit_rotl_u64(9223372036854775808, 64) => 9223372036854775808
-bit_rotr_u64(9223372036854775808, 64) => 9223372036854775808
-bit_rotl_u64(10755112315580060033, 64) => 10755112315580060033
-bit_rotr_u64(10755112315580060033, 64) => 10755112315580060033
-bit_rotl_u64(11163782031541429823, 64) => 11163782031541429823
-bit_rotr_u64(11163782031541429823, 64) => 11163782031541429823
-bit_rotl_u64(13903686156871869732, 64) => 13903686156871869732
-bit_rotr_u64(13903686156871869732, 64) => 13903686156871869732
-bit_rotl_u64(14237897302422917095, 64) => 14237897302422917095
-bit_rotr_u64(14237897302422917095, 64) => 14237897302422917095
-bit_rotl_u64(14302190498657618739, 64) => 14302190498657618739
-bit_rotr_u64(14302190498657618739, 64) => 14302190498657618739
-bit_rotl_u64(15766411510232741269, 64) => 15766411510232741269
-bit_rotr_u64(15766411510232741269, 64) => 15766411510232741269
-bit_rotl_u64(15984546468465238145, 64) => 15984546468465238145
-bit_rotr_u64(15984546468465238145, 64) => 15984546468465238145
-bit_rotl_u64(18446744073709551615, 64) => 18446744073709551615
-bit_rotr_u64(18446744073709551615, 64) => 18446744073709551615
-	*** test_rotl_rotr: done ***
-	*** test_bswap ***
-bswap_u64(0) => 0
-bswap_u32(0) => 0
-bswap_u64(1) => 72057594037927936
-bswap_u32(1) => 16777216
-bswap_u64(2) => 144115188075855872
-bswap_u32(2) => 33554432
-bswap_u64(32768) => 36028797018963968
-bswap_u32(32768) => 8388608
-bswap_u64(65535) => 18446462598732840960
-bswap_u32(65535) => 4294901760
-bswap_u64(65536) => 1099511627776
-bswap_u32(65536) => 256
-bswap_u64(726075912) => 579353752079695872
-bswap_u32(726075912) => 134891307
-bswap_u64(858993459) => 3689348813882916864
-bswap_u32(858993459) => 858993459
-bswap_u64(1073741824) => 274877906944
-bswap_u32(1073741824) => 64
-bswap_u64(1245250552) => 17871190736326623232
-bswap_u32(1245250552) => 4160960842
-bswap_u64(1431655765) => 6148914689804861440
-bswap_u32(1431655765) => 1431655765
-bswap_u64(1656977767) => 7456205483762778112
-bswap_u32(1656977767) => 1736033122
-bswap_u64(2147483648) => 549755813888
-bswap_u32(2147483648) => 128
-bswap_u64(2283114629) => 9624216077550485504
-bswap_u32(2283114629) => 2240812424
-bswap_u64(2502548245) => 1574898214622986240
-bswap_u32(2502548245) => 366684565
-bswap_u64(4294967295) => 18446744069414584320
-bswap_u32(4294967295) => 4294967295
-bswap_u64(708915120906848425) => 12198156707273299465
-bswap_u64(1960191741125985428) => 10665782605024080923
-bswap_u64(3689348814741910323) => 3689348814741910323
-bswap_u64(5578377670650038654) => 9081809480708024909
-bswap_u64(9223372036854775808) => 128
-bswap_u64(10755112315580060033) => 9300377440395542933
-bswap_u64(11163782031541429823) => 4568596173249113498
-bswap_u64(13903686156871869732) => 2604731024148591552
-bswap_u64(14237897302422917095) => 16649642015867049925
-bswap_u64(14302190498657618739) => 3696175971416046534
-bswap_u64(15766411510232741269) => 10769528423690522074
-bswap_u64(15984546468465238145) => 9322619197622375645
-bswap_u64(18446744073709551615) => 18446744073709551615
-	*** test_bswap: done ***
-	*** test_index ***
-bit_index_u64(0, *, -1) => 
-bit_index_u32(0, *, -1) => 
-bit_index_u64(1, *, -1) => 0 
-bit_index_u32(1, *, -1) => 0 
-bit_index_u64(2, *, -1) => 1 
-bit_index_u32(2, *, -1) => 1 
-bit_index_u64(32768, *, -1) => 15 
-bit_index_u32(32768, *, -1) => 15 
-bit_index_u64(65535, *, -1) => 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
-bit_index_u32(65535, *, -1) => 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
-bit_index_u64(65536, *, -1) => 16 
-bit_index_u32(65536, *, -1) => 16 
-bit_index_u64(726075912, *, -1) => 3 9 11 16 17 18 22 24 25 27 29 
-bit_index_u32(726075912, *, -1) => 3 9 11 16 17 18 22 24 25 27 29 
-bit_index_u64(858993459, *, -1) => 0 1 4 5 8 9 12 13 16 17 20 21 24 25 28 29 
-bit_index_u32(858993459, *, -1) => 0 1 4 5 8 9 12 13 16 17 20 21 24 25 28 29 
-bit_index_u64(1073741824, *, -1) => 30 
-bit_index_u32(1073741824, *, -1) => 30 
-bit_index_u64(1245250552, *, -1) => 3 4 5 6 7 8 9 16 19 20 21 25 27 30 
-bit_index_u32(1245250552, *, -1) => 3 4 5 6 7 8 9 16 19 20 21 25 27 30 
-bit_index_u64(1431655765, *, -1) => 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 
-bit_index_u32(1431655765, *, -1) => 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 
-bit_index_u64(1656977767, *, -1) => 0 1 2 5 6 8 11 12 13 14 16 17 22 23 25 29 30 
-bit_index_u32(1656977767, *, -1) => 0 1 2 5 6 8 11 12 13 14 16 17 22 23 25 29 30 
-bit_index_u64(2147483648, *, -1) => 31 
-bit_index_u32(2147483648, *, -1) => 31 
-bit_index_u64(2283114629, *, -1) => 0 2 7 12 15 16 18 20 27 31 
-bit_index_u32(2283114629, *, -1) => 0 2 7 12 15 16 18 20 27 31 
-bit_index_u64(2502548245, *, -1) => 0 2 4 8 9 11 12 14 15 16 19 21 24 26 28 31 
-bit_index_u32(2502548245, *, -1) => 0 2 4 8 9 11 12 14 15 16 19 21 24 26 28 31 
-bit_index_u64(4294967295, *, -1) => 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 
-bit_index_u32(4294967295, *, -1) => 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 
-bit_index_u64(708915120906848425, *, -1) => 0 3 5 7 11 14 17 18 19 23 24 26 29 30 31 32 33 35 39 41 44 47 49 50 52 54 55 56 59 
-bit_index_u64(1960191741125985428, *, -1) => 2 4 7 10 19 20 21 22 24 26 30 31 50 52 53 56 57 59 60 
-bit_index_u64(3689348814741910323, *, -1) => 0 1 4 5 8 9 12 13 16 17 20 21 24 25 28 29 32 33 36 37 40 41 44 45 48 49 52 53 56 57 60 61 
-bit_index_u64(5578377670650038654, *, -1) => 1 2 3 4 5 6 8 11 16 20 25 27 28 31 32 33 34 35 37 38 39 45 46 49 51 53 54 56 58 59 62 
-bit_index_u64(9223372036854775808, *, -1) => 63 
-bit_index_u64(10755112315580060033, *, -1) => 0 7 8 12 18 20 23 24 32 33 35 37 39 40 42 44 46 47 48 54 56 58 60 63 
-bit_index_u64(11163782031541429823, *, -1) => 0 1 2 3 4 5 9 10 13 14 17 19 21 22 23 24 25 34 35 36 39 43 44 45 47 48 50 51 53 54 55 57 59 60 63 
-bit_index_u64(13903686156871869732, *, -1) => 2 5 8 10 13 16 18 19 20 22 23 28 32 34 37 38 39 44 46 47 48 49 52 53 54 55 62 63 
-bit_index_u64(14237897302422917095, *, -1) => 0 1 2 5 6 7 8 9 10 11 16 19 21 22 24 25 28 29 32 35 37 42 43 45 48 49 50 52 55 56 58 62 63 
-bit_index_u64(14302190498657618739, *, -1) => 0 1 4 5 8 9 11 14 18 20 21 22 25 26 28 29 30 32 33 35 36 37 38 41 42 44 47 48 49 51 52 53 54 57 58 62 63 
-bit_index_u64(15766411510232741269, *, -1) => 0 2 4 7 8 10 12 13 14 16 18 19 25 27 34 35 36 37 39 40 41 43 47 48 50 51 54 55 57 59 60 62 63 
-bit_index_u64(15984546468465238145, *, -1) => 0 7 13 14 19 20 23 26 30 31 33 36 38 42 47 50 52 54 55 56 58 59 60 62 63 
-bit_index_u64(18446744073709551615, *, -1) => 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 
-	*** test_index: done ***
-	*** test_bit_iter ***
-Set: 3, 9, 11, 16, 17, 18, 22, 24, 25, 27, 29, 64, 65, 68, 69, 72, 73, 76, 77, 
-Clear: 0, 1, 2, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 19, 20, 21, 23, 26, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 70, 71, 74, 75, 78, 79, 
-	*** test_bit_iter: done ***
-	*** test_bit_iter_empty ***
-	*** test_bit_iter_empty: done ***
-	*** test_bitmap_size ***
-	*** test_bitmap_size: done ***
diff --git a/test/unit/bitset_basic.c b/test/unit/bitset_basic.c
index fe4b6ab07..be17b0f6b 100644
--- a/test/unit/bitset_basic.c
+++ b/test/unit/bitset_basic.c
@@ -9,6 +9,7 @@ static
 void test_cardinality()
 {
 	header();
+	plan(1);
 
 	struct tt_bitset bm;
 	tt_bitset_create(&bm, realloc);
@@ -48,6 +49,8 @@ void test_cardinality()
 
 	tt_bitset_destroy(&bm);
 
+	ok(1, "test cardinality");
+	check_plan();
 	footer();
 }
 
@@ -85,6 +88,7 @@ static
 void test_get_set()
 {
 	header();
+	plan(1);
 
 	struct tt_bitset bm;
 	tt_bitset_create(&bm, realloc);
@@ -92,7 +96,7 @@ void test_get_set()
 	const size_t NUM_SIZE = (size_t) 1 << 14;
 	size_t *nums = malloc(NUM_SIZE * sizeof(size_t));
 
-	printf("Generating test set... ");
+	note("Generating test set... ");
 	for(size_t i = 0; i < NUM_SIZE; i++) {
 		nums[i] = rand();
 	}
@@ -107,26 +111,23 @@ void test_get_set()
 		}
 	}
 	shuffle(nums, NUM_SIZE);
-	printf("ok\n");
 
-	printf("Settings bits... ");
+	note("Settings bits... ");
 	for(size_t i = 0; i < NUM_SIZE; i++) {
 		if (nums[i] == SIZE_MAX)
 			continue;
 		fail_if(tt_bitset_set(&bm, nums[i]) < 0);
 	}
-	printf("ok\n");
 
-	printf("Checking bits... ");
+	note("Checking bits... ");
 	shuffle(nums, NUM_SIZE);
 	for(size_t i = 0; i < NUM_SIZE; i++) {
 		if (nums[i] == SIZE_MAX)
 			continue;
 		fail_unless(tt_bitset_test(&bm, nums[i]));
 	}
-	printf("ok\n");
 
-	printf("Unsetting random bits... ");
+	note("Unsetting random bits... ");
 	for(size_t k = 0; k < (NUM_SIZE >> 3); k++) {
 		size_t i = rand() % NUM_SIZE;
 		if (nums[i] == SIZE_MAX)
@@ -135,23 +136,19 @@ void test_get_set()
 		fail_if(tt_bitset_test(&bm, nums[i]));
 		nums[i] = SIZE_MAX;
 	}
-	printf("ok\n");
 
-	printf("Checking set bits... ");
+	note("Checking set bits... ");
 	shuffle(nums, NUM_SIZE);
 	for(size_t i = 0; i < NUM_SIZE; i++) {
 		if (nums[i] == SIZE_MAX) {
 			continue;
 		}
 
-		if (!tt_bitset_test(&bm, nums[i])) {
-			printf("Fail :%zu\n", nums[i]);
-		}
+		fail_if(!tt_bitset_test(&bm, nums[i]));
 		fail_unless(tt_bitset_test(&bm, nums[i]));
 	}
-	printf("ok\n");
 
-	printf("Checking all bits... ");
+	note("Checking all bits... ");
 	qsort(nums, NUM_SIZE, sizeof(size_t), size_compator);
 
 	size_t *pn = nums;
@@ -166,10 +163,8 @@ void test_get_set()
 			fail_if(tt_bitset_test(&bm, i));
 		}
 	}
-	printf("ok\n");
-
 
-	printf("Unsetting all bits... ");
+	note("Unsetting all bits... ");
 	shuffle(nums, NUM_SIZE);
 	for(size_t i = 0; i < NUM_SIZE; i++) {
 		if (nums[i] == SIZE_MAX) {
@@ -178,28 +173,29 @@ void test_get_set()
 
 		fail_if(tt_bitset_clear(&bm, nums[i]) < 0);
 	}
-	printf("ok\n");
-
 
-	printf("Checking all bits... ");
+	note("Checking all bits... ");
 	for(size_t i = 0; i < i_max; i++) {
 		fail_if(tt_bitset_test(&bm, i));
 	}
-	printf("ok\n");
 
 	free(nums);
 
 	tt_bitset_destroy(&bm);
 
+	ok(1, "test get set");
+	check_plan();
 	footer();
 }
 
 int main(int argc, char *argv[])
 {
+	plan(2);
 	setbuf(stdout, NULL);
 	srand(time(NULL));
 	test_cardinality();
 	test_get_set();
+	check_plan();
 
 	return 0;
 }
diff --git a/test/unit/bitset_basic.result b/test/unit/bitset_basic.result
deleted file mode 100644
index 54f0ae724..000000000
--- a/test/unit/bitset_basic.result
+++ /dev/null
@@ -1,12 +0,0 @@
-	*** test_cardinality ***
-	*** test_cardinality: done ***
-	*** test_get_set ***
-Generating test set... ok
-Settings bits... ok
-Checking bits... ok
-Unsetting random bits... ok
-Checking set bits... ok
-Checking all bits... ok
-Unsetting all bits... ok
-Checking all bits... ok
-	*** test_get_set: done ***
diff --git a/test/unit/bitset_index.c b/test/unit/bitset_index.c
index c077fae49..d8542e7d1 100644
--- a/test/unit/bitset_index.c
+++ b/test/unit/bitset_index.c
@@ -42,6 +42,7 @@ static
 void test_size_and_count(void)
 {
 	header();
+	plan(1);
 
 	struct tt_bitset_index index;
 	tt_bitset_index_create(&index, realloc);
@@ -60,8 +61,10 @@ void test_size_and_count(void)
 	fail_unless(tt_bitset_index_count(&index, 2147483648) == 0);
 
 	tt_bitset_index_destroy(&index);
+	ok(1, "test size and count");
 
 	footer();
+	check_plan();
 }
 
 static
@@ -73,7 +76,7 @@ void check_keys(struct tt_bitset_index *index,
 	struct tt_bitset_expr expr;
 	tt_bitset_expr_create(&expr, realloc);
 
-	printf("Checking keys... ");
+	note("Checking keys... ");
 	for (size_t i = 0; i < size; i++) {
 		/* ignore removed keys */
 		if (keys[i] == SIZE_MAX) {
@@ -97,7 +100,7 @@ void check_keys(struct tt_bitset_index *index,
 		}
 		fail_unless(pair_found);
 	}
-	printf("ok\n");
+	note("ok");
 
 	tt_bitset_iterator_destroy(&it);
 	tt_bitset_expr_destroy(&expr);
@@ -107,6 +110,7 @@ static
 void test_insert_remove(void)
 {
 	header();
+	plan(1);
 
 	struct tt_bitset_index index;
 	tt_bitset_index_create(&index, realloc);
@@ -117,36 +121,36 @@ void test_insert_remove(void)
 
 	size_t count0 = 0;
 	size_t count1 = 0;
-	printf("Generating test set... ");
+	note("Generating test set... ");
 	for(size_t i = 0; i < NUMS_SIZE; i++) {
 		keys[i] = rand();
 		values[i] = rand();
 		count0 += (keys[i] & 1) != 0 ? 1 : 0;
 		count1 += (keys[i] & 2) != 0 ? 1 : 0;
 	}
-	printf("ok\n");
+	note("ok");
 
-	printf("Inserting pairs... ");
+	note("Inserting pairs... ");
 	for(size_t i = 0; i < NUMS_SIZE; i++) {
 		tt_bitset_index_insert(&index, &keys[i], sizeof(keys[i]),
 				       values[i]);
 
 	}
-	printf("ok\n");
+	note("ok");
 
 	check_keys(&index, keys, values, NUMS_SIZE);
 
 	fail_unless(tt_bitset_index_count(&index, 0) == count0);
 	fail_unless(tt_bitset_index_count(&index, 1) == count1);
 
-	printf("Removing random pairs... ");
+	note("Removing random pairs... ");
 	for(size_t i = 0; i < NUMS_SIZE; i++) {
 		if (rand() % 5 == 0) {
 			tt_bitset_index_remove_value(&index, values[i]);
 			keys[i] = SIZE_MAX;
 		}
 	}
-	printf("ok\n");
+	note("ok");
 
 	check_keys(&index, keys, values, NUMS_SIZE);
 
@@ -154,8 +158,10 @@ void test_insert_remove(void)
 
 	free(keys);
 	free(values);
+	ok(1, "test_insert_remove");
 
 	footer();
+	check_plan();
 }
 
 
@@ -222,7 +228,10 @@ static void
 test_empty_simple(void)
 {
 	header();
+	plan(1);
 	test_simple(1, 0); /* empty result */
+	ok(1, "test empty simple");
+	check_plan();
 	footer();
 }
 
@@ -230,7 +239,10 @@ static void
 test_all_simple(void)
 {
 	header();
+	plan(1);
 	test_simple(0, 0);  /* all */
+	ok(1, "test all simple");
+	check_plan();
 	footer();
 }
 
@@ -238,8 +250,11 @@ static void
 test_all_set_simple(void)
 {
 	header();
+	plan(1);
 	size_t search_mask = 66; /* 0b1000010 */
 	test_simple(1, search_mask);  /* all bits set */
+	ok(1, "test all set simple");
+	check_plan();
 	footer();
 }
 
@@ -247,8 +262,11 @@ static void
 test_any_set_simple(void)
 {
 	header();
+	plan(1);
 	size_t search_mask = 66; /* 0b1000010 */
 	test_simple(2, search_mask);  /* any bits set */
+	ok(1, "test any set simple");
+	check_plan();
 	footer();
 }
 
@@ -256,6 +274,7 @@ static
 void test_equals_simple(void)
 {
 	header();
+	plan(1);
 
 	struct tt_bitset_index index;
 	tt_bitset_index_create(&index, realloc);
@@ -284,13 +303,17 @@ void test_equals_simple(void)
 	tt_bitset_expr_destroy(&expr);
 	tt_bitset_iterator_destroy(&it);
 	tt_bitset_index_destroy(&index);
+	ok(1, "test equals simple");
 
+	check_plan();
 	footer();
 }
 
 int main(void)
 {
 	setbuf(stdout, NULL);
+	header();
+	plan(7);
 
 	test_size_and_count();
 	test_resize();
@@ -301,5 +324,8 @@ int main(void)
 	test_any_set_simple();
 	test_equals_simple();
 
+	check_plan();
+	footer();
+
 	return 0;
 }
diff --git a/test/unit/bitset_index.result b/test/unit/bitset_index.result
deleted file mode 100644
index c358cfbc4..000000000
--- a/test/unit/bitset_index.result
+++ /dev/null
@@ -1,21 +0,0 @@
-	*** test_size_and_count ***
-	*** test_size_and_count: done ***
-	*** test_resize ***
-	*** test_resize: done ***
-	*** test_insert_remove ***
-Generating test set... ok
-Inserting pairs... ok
-Checking keys... ok
-Removing random pairs... ok
-Checking keys... ok
-	*** test_insert_remove: done ***
-	*** test_empty_simple ***
-	*** test_empty_simple: done ***
-	*** test_all_simple ***
-	*** test_all_simple: done ***
-	*** test_all_set_simple ***
-	*** test_all_set_simple: done ***
-	*** test_any_set_simple ***
-	*** test_any_set_simple: done ***
-	*** test_equals_simple ***
-	*** test_equals_simple: done ***
diff --git a/test/unit/bitset_iterator.c b/test/unit/bitset_iterator.c
index 04f2f9f72..445a43486 100644
--- a/test/unit/bitset_iterator.c
+++ b/test/unit/bitset_iterator.c
@@ -80,6 +80,7 @@ static
 void test_empty_expr(void)
 {
 	header();
+	plan(1);
 
 	struct tt_bitset_expr expr;
 	tt_bitset_expr_create(&expr, realloc);
@@ -94,6 +95,8 @@ void test_empty_expr(void)
 
 	tt_bitset_iterator_destroy(&it);
 
+	ok(1, "test empty expr")
+	check_plan();
 	footer();
 }
 
@@ -101,6 +104,7 @@ static
 void test_empty_expr_conj1(void)
 {
 	header();
+	plan(1);
 
 	struct tt_bitset_expr expr;
 	tt_bitset_expr_create(&expr, realloc);
@@ -117,6 +121,8 @@ void test_empty_expr_conj1(void)
 
 	tt_bitset_iterator_destroy(&it);
 
+	ok(1, "test empty expr conj1");
+	check_plan();
 	footer();
 }
 
@@ -124,6 +130,7 @@ static
 void test_empty_expr_conj2(void)
 {
 	header();
+	plan(1);
 
 	size_t big_i = (size_t) 1 << 15;
 	struct tt_bitset **bitsets = bitsets_create(2);
@@ -154,6 +161,8 @@ void test_empty_expr_conj2(void)
 	tt_bitset_iterator_destroy(&it);
 	bitsets_destroy(bitsets, 2);
 
+	ok(1, "test empty expr conj2");
+	check_plan();
 	footer();
 }
 
@@ -161,6 +170,7 @@ static
 void test_empty_result(void)
 {
 	header();
+	plan(1);
 
 	struct tt_bitset **bitsets = bitsets_create(2);
 
@@ -199,6 +209,8 @@ void test_empty_result(void)
 
 	bitsets_destroy(bitsets, 2);
 
+	ok(1, "test empty result");
+	check_plan();
 	footer();
 }
 
@@ -206,6 +218,7 @@ static
 void test_first_result(void)
 {
 	header();
+	plan(1);
 
 	struct tt_bitset **bitsets = bitsets_create(2);
 
@@ -237,6 +250,8 @@ void test_first_result(void)
 
 	bitsets_destroy(bitsets, 2);
 
+	ok(1, "test first result");
+	check_plan();
 	footer();
 }
 
@@ -244,6 +259,7 @@ static
 void test_simple()
 {
 	header();
+	plan(1);
 
 	enum { BITSETS_SIZE = 32 };
 
@@ -286,12 +302,15 @@ void test_simple()
 	tt_bitset_iterator_destroy(&it);
 	bitsets_destroy(bitsets, BITSETS_SIZE);
 
+	ok(1, "test simple");
+	check_plan();
 	footer();
 }
 
 static
 void test_big() {
 	header();
+	plan(1);
 
 	const size_t BITSETS_SIZE = 32;
 	struct tt_bitset **bitsets = bitsets_create(BITSETS_SIZE);
@@ -338,12 +357,15 @@ void test_big() {
 
 	bitsets_destroy(bitsets, BITSETS_SIZE);
 
+	ok(1, "test big");
+	check_plan();
 	footer();
 }
 
 static
 void test_not_last() {
 	header();
+	plan(1);
 
 	struct tt_bitset **bitsets = bitsets_create(2);
 
@@ -385,12 +407,15 @@ void test_not_last() {
 
 	bitsets_destroy(bitsets, 2);
 
+	ok(1, "test not last");
+	check_plan();
 	footer();
 }
 
 static
 void test_not_empty() {
 	header();
+	plan(1);
 
 	enum {
 		BITSETS_SIZE = 4,
@@ -428,6 +453,8 @@ void test_not_empty() {
 
 	bitsets_destroy(bitsets, BITSETS_SIZE);
 
+	ok(1, "test not empty");
+	check_plan();
 	footer();
 }
 
@@ -435,6 +462,7 @@ static
 void test_disjunction()
 {
 	header();
+	plan(1);
 
 	enum { BITSETS_SIZE = 32 };
 
@@ -474,6 +502,8 @@ void test_disjunction()
 
 	bitsets_destroy(bitsets, BITSETS_SIZE);
 
+	ok(1, "test disjunction")
+	check_plan();
 	footer();
 }
 
@@ -482,6 +512,7 @@ int main(void)
 	setbuf(stdout, NULL);
 	nums_fill(NUMS, NUMS_SIZE);
 
+	plan(10);
 	test_empty_expr();
 	test_empty_expr_conj1();
 	test_empty_expr_conj2();
@@ -493,5 +524,6 @@ int main(void)
 	test_not_last();
 	test_disjunction();
 
+	check_plan();
 	return 0;
 }
diff --git a/test/unit/bitset_iterator.result b/test/unit/bitset_iterator.result
deleted file mode 100644
index 1f8369d74..000000000
--- a/test/unit/bitset_iterator.result
+++ /dev/null
@@ -1,22 +0,0 @@
-	*** test_empty_expr ***
-	*** test_empty_expr: done ***
-	*** test_empty_expr_conj1 ***
-	*** test_empty_expr_conj1: done ***
-	*** test_empty_expr_conj2 ***
-	*** test_empty_expr_conj2: done ***
-	*** test_empty_result ***
-	*** test_empty_result: done ***
-	*** test_first_result ***
-	*** test_first_result: done ***
-	*** test_simple ***
-	*** test_simple: done ***
-	*** test_big ***
-Setting bits... ok
-Iterating... ok
-	*** test_big: done ***
-	*** test_not_empty ***
-	*** test_not_empty: done ***
-	*** test_not_last ***
-	*** test_not_last: done ***
-	*** test_disjunction ***
-	*** test_disjunction: done ***
diff --git a/test/unit/bloom.cc b/test/unit/bloom.cc
index 2e5b99412..23a36487c 100644
--- a/test/unit/bloom.cc
+++ b/test/unit/bloom.cc
@@ -2,6 +2,7 @@
 #include <unordered_set>
 #include <vector>
 #include <iostream>
+#include "unit.h"
 
 using namespace std;
 
@@ -13,7 +14,8 @@ uint32_t h(uint32_t i)
 void
 simple_test()
 {
-	cout << "*** " << __func__ << " ***" << endl;
+	header();
+	plan(1);
 	srand(time(0));
 	uint32_t error_count = 0;
 	uint32_t fp_rate_too_big = 0;
@@ -45,14 +47,16 @@ simple_test()
 		if (fp_rate > p + 0.001)
 			fp_rate_too_big++;
 	}
-	cout << "error_count = " << error_count << endl;
-	cout << "fp_rate_too_big = " << fp_rate_too_big << endl;
+	note("error_count = %d", error_count);
+	note("fp_rate_too_big = %d", fp_rate_too_big);
+	ok(1, "%s", __func__);
+	check_plan();
 }
 
 void
 store_load_test()
 {
-	cout << "*** " << __func__ << " ***" << endl;
+	plan(1);
 	srand(time(0));
 	uint32_t error_count = 0;
 	uint32_t fp_rate_too_big = 0;
@@ -92,13 +96,17 @@ store_load_test()
 		if (fp_rate > p + 0.001)
 			fp_rate_too_big++;
 	}
-	cout << "error_count = " << error_count << endl;
-	cout << "fp_rate_too_big = " << fp_rate_too_big << endl;
+	note("error_count = %d", error_count);
+	note("fp_rate_too_big = %d", fp_rate_too_big);
+	ok(1, "%s", __func__);
+	check_plan();
 }
 
 int
 main(void)
 {
+	plan(2);
 	simple_test();
 	store_load_test();
+	check_plan();
 }
diff --git a/test/unit/bloom.result b/test/unit/bloom.result
deleted file mode 100644
index 91193a618..000000000
--- a/test/unit/bloom.result
+++ /dev/null
@@ -1,6 +0,0 @@
-*** simple_test ***
-error_count = 0
-fp_rate_too_big = 0
-*** store_load_test ***
-error_count = 0
-fp_rate_too_big = 0
diff --git a/test/unit/bps_tree.cc b/test/unit/bps_tree.cc
index ef374deb1..d1a94ffb9 100644
--- a/test/unit/bps_tree.cc
+++ b/test/unit/bps_tree.cc
@@ -124,7 +124,7 @@ static int compare_key(const elem_t &a, long b)
 		type_t check_value =\
 			*tree_name##_iterator_get_elem((tree), &iter);\
 		if (check_value != (type_t)(elem)) {\
-			printf("iterator doesn't point to the inserted "\
+			diag("iterator doesn't point to the inserted "\
 			       "element: %lld != %lld", (long long) (elem),\
 			       (long long) check_value);\
 			fail("elem != check_value", "true");\
@@ -168,12 +168,13 @@ static void
 simple_check()
 {
 	header();
+	plan(1);
 
 	const unsigned int rounds = 2000;
 	test tree;
 	test_create(&tree, 0, extent_alloc, extent_free, &extents_count);
 
-	printf("Insert 1..X, remove 1..X\n");
+	note("Insert 1..X, remove 1..X");
 	for (unsigned int i = 0; i < rounds; i++) {
 		type_t v = i;
 		if (test_find(&tree, v) != NULL)
@@ -200,7 +201,7 @@ simple_check()
 	if (test_size(&tree) != 0)
 		fail("Tree count mismatch (2)", "true");
 
-	printf("Insert 1..X, remove X..1\n");
+	note("Insert 1..X, remove X..1");
 	for (unsigned int i = 0; i < rounds; i++) {
 		type_t v = i;
 		if (test_find(&tree, v) != NULL)
@@ -227,7 +228,7 @@ simple_check()
 	if (test_size(&tree) != 0)
 		fail("Tree count mismatch (4)", "true");
 
-	printf("Insert X..1, remove 1..X\n");
+	note("Insert X..1, remove 1..X");
 	for (unsigned int i = 0; i < rounds; i++) {
 		type_t v = rounds - 1 - i;
 		if (test_find(&tree, v) != NULL)
@@ -254,7 +255,7 @@ simple_check()
 	if (test_size(&tree) != 0)
 		fail("Tree count mismatch (6)", "true");
 
-	printf("Insert X..1, remove X..1\n");
+	note("Insert X..1, remove X..1");
 	for (unsigned int i = 0; i < rounds; i++) {
 		type_t v = rounds - 1 - i;
 		if (test_find(&tree, v) != NULL)
@@ -282,8 +283,10 @@ simple_check()
 		fail("Tree count mismatch (8)", "true");
 
 	test_destroy(&tree);
+	ok(1, "simple check");
 
 	footer();
+	check_plan();
 }
 
 static bool
@@ -311,6 +314,7 @@ static void
 compare_with_sptree_check()
 {
 	header();
+	plan(1);
 
 	sptree_test spt_test;
 	sptree_test_init(&spt_test, sizeof(type_t), 0, 0, 0, &node_comp, 0, 0);
@@ -345,14 +349,17 @@ compare_with_sptree_check()
 	sptree_test_destroy(&spt_test);
 
 	test_destroy(&tree);
+	ok(1, "compare with sptree check");
 
 	footer();
+	check_plan();
 }
 
 static void
 compare_with_sptree_check_branches()
 {
 	header();
+	plan(1);
 
 	sptree_test spt_test;
 	sptree_test_init(&spt_test, sizeof(type_t), 0, 0, 0, &node_comp, 0, 0);
@@ -570,28 +577,34 @@ compare_with_sptree_check_branches()
 	sptree_test_destroy(&spt_test);
 
 	test_destroy(&tree);
+	ok(1, "compare with sptree check branches");
 
 	footer();
+	check_plan();
 }
 
 static void
 bps_tree_debug_self_check()
 {
 	header();
+	plan(1);
 
 	int res = test_debug_check_internal_functions(false);
 	if (res)
-		printf("self test returned error %d\n", res);
+		note("self test returned error %d", res);
 
 	test_debug_check_internal_functions(true);
+	ok(1, "bps tree debug self check");
 
 	footer();
+	check_plan();
 }
 
 static void
-loading_test()
+load_test()
 {
 	header();
+	plan(1);
 
 	test tree;
 
@@ -623,14 +636,17 @@ loading_test()
 
 		test_destroy(&tree);
 	}
+	ok(1, "load test");
 
 	footer();
+	check_plan();
 }
 
 static void
 printing_test()
 {
 	header();
+	plan(1);
 
 	test tree;
 	test_create(&tree, 0, extent_alloc, extent_free, &extents_count);
@@ -639,24 +655,27 @@ printing_test()
 
 	for (type_t i = 0; i < rounds; i++) {
 		type_t v = rounds + i;
-		printf("Inserting " TYPE_F "\n", v);
+		note("Inserting " TYPE_F, v);
 		test_insert(&tree, v, 0);
 		test_print(&tree, TYPE_F);
 		v = rounds - i - 1;
-		printf("Inserting " TYPE_F "\n", v);
+		note("Inserting " TYPE_F, v);
 		test_insert(&tree, v, 0);
 		test_print(&tree, TYPE_F);
 	}
 
 	test_destroy(&tree);
+	ok(1, "printing test");
 
 	footer();
+	check_plan();
 }
 
 static void
 white_box_test()
 {
 	header();
+	plan(1);
 
 	test tree;
 	test_create(&tree, 0, extent_alloc, extent_free, &extents_count);
@@ -664,33 +683,33 @@ white_box_test()
 	assert(BPS_TREE_test_MAX_COUNT_IN_LEAF == 14);
 	assert(BPS_TREE_test_MAX_COUNT_IN_INNER == 10);
 
-	printf("full leaf:\n");
+	note("full leaf:");
 	for (type_t i = 0; i < 14; i++) {
 		test_insert(&tree, i, 0);
 	}
 	test_print(&tree, TYPE_F);
 
-	printf("split now:\n");
+	note("split now:");
 	test_insert(&tree, 14, 0);
 	test_print(&tree, TYPE_F);
 
-	printf("full 2 leafs:\n");
+	note("full 2 leafs:");
 	for (type_t i = 15; i < 28; i++) {
 		test_insert(&tree, i, 0);
 	}
 	test_print(&tree, TYPE_F);
 
-	printf("split now:\n");
+	note("split now:");
 	test_insert(&tree, 28, 0);
 	test_print(&tree, TYPE_F);
 
-	printf("full 3 leafs:\n");
+	note("full 3 leafs:");
 	for (type_t i = 29; i < 42; i++) {
 		test_insert(&tree, i, 0);
 	}
 	test_print(&tree, TYPE_F);
 
-	printf("split now:\n");
+	note("split now:");
 	test_insert(&tree, 42, 0);
 	test_print(&tree, TYPE_F);
 
@@ -700,22 +719,25 @@ white_box_test()
 	for (type_t i = 0; i < 140; i++)
 		arr[i] = i;
 	test_build(&tree, arr, 140);
-	printf("full 10 leafs:\n");
+	note("full 10 leafs:");
 	test_print(&tree, TYPE_F);
 
-	printf("2-level split now:\n");
+	note("2-level split now:");
 	test_insert(&tree, 140, 0);
 	test_print(&tree, TYPE_F);
 
 	test_destroy(&tree);
+	ok(1, "white box test");
 
 	footer();
+	check_plan();
 }
 
 static void
 approximate_count()
 {
 	header();
+	plan(1);
 	srand(0);
 
 	approx tree;
@@ -749,7 +771,7 @@ approximate_count()
 	for (uint64_t i = 1; i <= long_sequence_count; i++)
 		for (uint64_t j = 0; j < i * long_sequence_multiplier; j++)
 			arr[count++] = ((i * 100 + 50) << 32) | j;
-	printf("Count: %llu %u\n", (unsigned long long)count, arr_size);
+	note("Count: %llu %u", (unsigned long long)count, arr_size);
 	assert(count == arr_size);
 
 	for (uint64_t i = 0; i < count * 10; i++) {
@@ -763,7 +785,7 @@ approximate_count()
 	for (uint64_t i = 0; i < count; i++)
 		approx_insert(&tree, arr[i], NULL);
 
-	printf("Count: %zu\n", tree.size);
+	note("Count: %zu", tree.size);
 
 	count = 0;
 	int err_count = 0;
@@ -788,7 +810,7 @@ approximate_count()
 			if (approx_count != true_count) {
 				err_count++;
 				if (err_count <= 10)
-					printf("searching %u found %llu expected %llu\n",
+					diag("searching %u found %llu expected %llu\n",
 					       i, (unsigned long long)approx_count,
 					       (unsigned long long)true_count);
 			}
@@ -802,24 +824,27 @@ approximate_count()
 		if (true_count < low || true_count > up) {
 			err_count++;
 			if (err_count <= 10)
-				printf("searching %u found %llu expected %llu\n",
+				diag("searching %u found %llu expected %llu\n",
 				       i, (unsigned long long)approx_count,
 				       (unsigned long long)true_count);
 		}
 	};
 
-	printf("Error count: %d\n", err_count);
-	printf("Count: %llu\n", (unsigned long long)count);
+	note("Error count: %d", err_count);
+	note("Count: %llu", (unsigned long long)count);
 
 	approx_destroy(&tree);
+	ok(1, "approximate count");
 
 	footer();
+	check_plan();
 }
 
 static void
 insert_get_iterator()
 {
 	header();
+	plan(1);
 
 	test tree;
 	test_create(&tree, 0, extent_alloc, extent_free, &extents_count);
@@ -833,14 +858,17 @@ insert_get_iterator()
 		bps_insert_and_check(test, &tree, i, NULL);
 	for (i = -9999; i < 10000; i += 2)
 		bps_insert_and_check(test, &tree, i, NULL)
+	ok(1, "insert get iterator");
 
 	footer();
+	check_plan();
 }
 
 static void
 delete_value_check()
 {
 	header();
+	plan(1);
 	struct_tree tree;
 	struct_tree_create(&tree, 0, extent_alloc, extent_free, &extents_count);
 	struct elem_t e1 = {1, 1};
@@ -855,17 +883,20 @@ delete_value_check()
 	if (struct_tree_find(&tree, 1) != NULL)
 		fail("test identical element deletion completion", "false");
 	struct_tree_destroy(&tree);
+	ok(1, "delete value check");
 	footer();
+	check_plan();
 }
 
 int
 main(void)
 {
+	plan(10);
 	simple_check();
 	compare_with_sptree_check();
 	compare_with_sptree_check_branches();
 	bps_tree_debug_self_check();
-	loading_test();
+	load_test();
 	printing_test();
 	white_box_test();
 	approximate_count();
@@ -873,4 +904,5 @@ main(void)
 		fail("memory leak!", "true");
 	insert_get_iterator();
 	delete_value_check();
+	check_plan();
 }
diff --git a/test/unit/bps_tree.result b/test/unit/bps_tree.result
deleted file mode 100644
index 130ec555c..000000000
--- a/test/unit/bps_tree.result
+++ /dev/null
@@ -1,284 +0,0 @@
-	*** simple_check ***
-Insert 1..X, remove 1..X
-Insert 1..X, remove X..1
-Insert X..1, remove 1..X
-Insert X..1, remove X..1
-	*** simple_check: done ***
-	*** compare_with_sptree_check ***
-	*** compare_with_sptree_check: done ***
-	*** compare_with_sptree_check_branches ***
-	*** compare_with_sptree_check_branches: done ***
-	*** bps_tree_debug_self_check ***
-	*** bps_tree_debug_self_check: done ***
-	*** loading_test ***
-	*** loading_test: done ***
-	*** printing_test ***
-Inserting 22
-[(1) 22]
-Inserting 21
-[(2) 21 22]
-Inserting 23
-[(3) 21 22 23]
-Inserting 20
-[(4) 20 21 22 23]
-Inserting 24
-[(5) 20 21 22 23 24]
-Inserting 19
-[(6) 19 20 21 22 23 24]
-Inserting 25
-[(7) 19 20 21 22 23 24 25]
-Inserting 18
-[(8) 18 19 20 21 22 23 24 25]
-Inserting 26
-[(9) 18 19 20 21 22 23 24 25 26]
-Inserting 17
-[(10) 17 18 19 20 21 22 23 24 25 26]
-Inserting 27
-[(11) 17 18 19 20 21 22 23 24 25 26 27]
-Inserting 16
-[(12) 16 17 18 19 20 21 22 23 24 25 26 27]
-Inserting 28
-[(13) 16 17 18 19 20 21 22 23 24 25 26 27 28]
-Inserting 15
-[(14) 15 16 17 18 19 20 21 22 23 24 25 26 27 28]
-Inserting 29
-  [(8) 15 16 17 18 19 20 21 22]
-22
-  [(7) 23 24 25 26 27 28 29]
-Inserting 14
-  [(9) 14 15 16 17 18 19 20 21 22]
-22
-  [(7) 23 24 25 26 27 28 29]
-Inserting 30
-  [(9) 14 15 16 17 18 19 20 21 22]
-22
-  [(8) 23 24 25 26 27 28 29 30]
-Inserting 13
-  [(10) 13 14 15 16 17 18 19 20 21 22]
-22
-  [(8) 23 24 25 26 27 28 29 30]
-Inserting 31
-  [(10) 13 14 15 16 17 18 19 20 21 22]
-22
-  [(9) 23 24 25 26 27 28 29 30 31]
-Inserting 12
-  [(11) 12 13 14 15 16 17 18 19 20 21 22]
-22
-  [(9) 23 24 25 26 27 28 29 30 31]
-Inserting 32
-  [(11) 12 13 14 15 16 17 18 19 20 21 22]
-22
-  [(10) 23 24 25 26 27 28 29 30 31 32]
-Inserting 11
-  [(12) 11 12 13 14 15 16 17 18 19 20 21 22]
-22
-  [(10) 23 24 25 26 27 28 29 30 31 32]
-Inserting 33
-  [(12) 11 12 13 14 15 16 17 18 19 20 21 22]
-22
-  [(11) 23 24 25 26 27 28 29 30 31 32 33]
-Inserting 10
-  [(13) 10 11 12 13 14 15 16 17 18 19 20 21 22]
-22
-  [(11) 23 24 25 26 27 28 29 30 31 32 33]
-Inserting 34
-  [(13) 10 11 12 13 14 15 16 17 18 19 20 21 22]
-22
-  [(12) 23 24 25 26 27 28 29 30 31 32 33 34]
-Inserting 9
-  [(14) 9 10 11 12 13 14 15 16 17 18 19 20 21 22]
-22
-  [(12) 23 24 25 26 27 28 29 30 31 32 33 34]
-Inserting 35
-  [(14) 9 10 11 12 13 14 15 16 17 18 19 20 21 22]
-22
-  [(13) 23 24 25 26 27 28 29 30 31 32 33 34 35]
-Inserting 8
-  [(14) 8 9 10 11 12 13 14 15 16 17 18 19 20 21]
-21
-  [(14) 22 23 24 25 26 27 28 29 30 31 32 33 34 35]
-Inserting 36
-  [(10) 8 9 10 11 12 13 14 15 16 17]
-17
-  [(10) 18 19 20 21 22 23 24 25 26 27]
-27
-  [(9) 28 29 30 31 32 33 34 35 36]
-Inserting 7
-  [(11) 7 8 9 10 11 12 13 14 15 16 17]
-17
-  [(10) 18 19 20 21 22 23 24 25 26 27]
-27
-  [(9) 28 29 30 31 32 33 34 35 36]
-Inserting 37
-  [(11) 7 8 9 10 11 12 13 14 15 16 17]
-17
-  [(10) 18 19 20 21 22 23 24 25 26 27]
-27
-  [(10) 28 29 30 31 32 33 34 35 36 37]
-Inserting 6
-  [(12) 6 7 8 9 10 11 12 13 14 15 16 17]
-17
-  [(10) 18 19 20 21 22 23 24 25 26 27]
-27
-  [(10) 28 29 30 31 32 33 34 35 36 37]
-Inserting 38
-  [(12) 6 7 8 9 10 11 12 13 14 15 16 17]
-17
-  [(10) 18 19 20 21 22 23 24 25 26 27]
-27
-  [(11) 28 29 30 31 32 33 34 35 36 37 38]
-Inserting 5
-  [(13) 5 6 7 8 9 10 11 12 13 14 15 16 17]
-17
-  [(10) 18 19 20 21 22 23 24 25 26 27]
-27
-  [(11) 28 29 30 31 32 33 34 35 36 37 38]
-Inserting 39
-  [(13) 5 6 7 8 9 10 11 12 13 14 15 16 17]
-17
-  [(10) 18 19 20 21 22 23 24 25 26 27]
-27
-  [(12) 28 29 30 31 32 33 34 35 36 37 38 39]
-Inserting 4
-  [(14) 4 5 6 7 8 9 10 11 12 13 14 15 16 17]
-17
-  [(10) 18 19 20 21 22 23 24 25 26 27]
-27
-  [(12) 28 29 30 31 32 33 34 35 36 37 38 39]
-Inserting 40
-  [(14) 4 5 6 7 8 9 10 11 12 13 14 15 16 17]
-17
-  [(10) 18 19 20 21 22 23 24 25 26 27]
-27
-  [(13) 28 29 30 31 32 33 34 35 36 37 38 39 40]
-Inserting 3
-  [(12) 3 4 5 6 7 8 9 10 11 12 13 14]
-14
-  [(13) 15 16 17 18 19 20 21 22 23 24 25 26 27]
-27
-  [(13) 28 29 30 31 32 33 34 35 36 37 38 39 40]
-Inserting 41
-  [(12) 3 4 5 6 7 8 9 10 11 12 13 14]
-14
-  [(13) 15 16 17 18 19 20 21 22 23 24 25 26 27]
-27
-  [(14) 28 29 30 31 32 33 34 35 36 37 38 39 40 41]
-Inserting 2
-  [(13) 2 3 4 5 6 7 8 9 10 11 12 13 14]
-14
-  [(13) 15 16 17 18 19 20 21 22 23 24 25 26 27]
-27
-  [(14) 28 29 30 31 32 33 34 35 36 37 38 39 40 41]
-Inserting 42
-  [(13) 2 3 4 5 6 7 8 9 10 11 12 13 14]
-14
-  [(14) 15 16 17 18 19 20 21 22 23 24 25 26 27 28]
-28
-  [(14) 29 30 31 32 33 34 35 36 37 38 39 40 41 42]
-Inserting 1
-  [(14) 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
-14
-  [(14) 15 16 17 18 19 20 21 22 23 24 25 26 27 28]
-28
-  [(14) 29 30 31 32 33 34 35 36 37 38 39 40 41 42]
-Inserting 43
-  [(11) 1 2 3 4 5 6 7 8 9 10 11]
-11
-  [(11) 12 13 14 15 16 17 18 19 20 21 22]
-22
-  [(11) 23 24 25 26 27 28 29 30 31 32 33]
-33
-  [(10) 34 35 36 37 38 39 40 41 42 43]
-Inserting 0
-  [(12) 0 1 2 3 4 5 6 7 8 9 10 11]
-11
-  [(11) 12 13 14 15 16 17 18 19 20 21 22]
-22
-  [(11) 23 24 25 26 27 28 29 30 31 32 33]
-33
-  [(10) 34 35 36 37 38 39 40 41 42 43]
-	*** printing_test: done ***
-	*** white_box_test ***
-full leaf:
-[(14) 0 1 2 3 4 5 6 7 8 9 10 11 12 13]
-split now:
-  [(8) 0 1 2 3 4 5 6 7]
-7
-  [(7) 8 9 10 11 12 13 14]
-full 2 leafs:
-  [(14) 0 1 2 3 4 5 6 7 8 9 10 11 12 13]
-13
-  [(14) 14 15 16 17 18 19 20 21 22 23 24 25 26 27]
-split now:
-  [(10) 0 1 2 3 4 5 6 7 8 9]
-9
-  [(10) 10 11 12 13 14 15 16 17 18 19]
-19
-  [(9) 20 21 22 23 24 25 26 27 28]
-full 3 leafs:
-  [(14) 0 1 2 3 4 5 6 7 8 9 10 11 12 13]
-13
-  [(14) 14 15 16 17 18 19 20 21 22 23 24 25 26 27]
-27
-  [(14) 28 29 30 31 32 33 34 35 36 37 38 39 40 41]
-split now:
-  [(11) 0 1 2 3 4 5 6 7 8 9 10]
-10
-  [(11) 11 12 13 14 15 16 17 18 19 20 21]
-21
-  [(11) 22 23 24 25 26 27 28 29 30 31 32]
-32
-  [(10) 33 34 35 36 37 38 39 40 41 42]
-full 10 leafs:
-  [(14) 0 1 2 3 4 5 6 7 8 9 10 11 12 13]
-13
-  [(14) 14 15 16 17 18 19 20 21 22 23 24 25 26 27]
-27
-  [(14) 28 29 30 31 32 33 34 35 36 37 38 39 40 41]
-41
-  [(14) 42 43 44 45 46 47 48 49 50 51 52 53 54 55]
-55
-  [(14) 56 57 58 59 60 61 62 63 64 65 66 67 68 69]
-69
-  [(14) 70 71 72 73 74 75 76 77 78 79 80 81 82 83]
-83
-  [(14) 84 85 86 87 88 89 90 91 92 93 94 95 96 97]
-97
-  [(14) 98 99 100 101 102 103 104 105 106 107 108 109 110 111]
-111
-  [(14) 112 113 114 115 116 117 118 119 120 121 122 123 124 125]
-125
-  [(14) 126 127 128 129 130 131 132 133 134 135 136 137 138 139]
-2-level split now:
-    [(14) 0 1 2 3 4 5 6 7 8 9 10 11 12 13]
-  13
-    [(14) 14 15 16 17 18 19 20 21 22 23 24 25 26 27]
-  27
-    [(14) 28 29 30 31 32 33 34 35 36 37 38 39 40 41]
-  41
-    [(14) 42 43 44 45 46 47 48 49 50 51 52 53 54 55]
-  55
-    [(14) 56 57 58 59 60 61 62 63 64 65 66 67 68 69]
-  69
-    [(14) 70 71 72 73 74 75 76 77 78 79 80 81 82 83]
-83
-    [(14) 84 85 86 87 88 89 90 91 92 93 94 95 96 97]
-  97
-    [(11) 98 99 100 101 102 103 104 105 106 107 108]
-  108
-    [(11) 109 110 111 112 113 114 115 116 117 118 119]
-  119
-    [(11) 120 121 122 123 124 125 126 127 128 129 130]
-  130
-    [(10) 131 132 133 134 135 136 137 138 139 140]
-	*** white_box_test: done ***
-	*** approximate_count ***
-Count: 10575 10575
-Count: 10575
-Error count: 0
-Count: 10575
-	*** approximate_count: done ***
-	*** insert_get_iterator ***
-	*** insert_get_iterator: done ***
-	*** delete_value_check ***
-	*** delete_value_check: done ***
diff --git a/test/unit/bps_tree_iterator.cc b/test/unit/bps_tree_iterator.cc
index 5c800bc69..bf1685a47 100644
--- a/test/unit/bps_tree_iterator.cc
+++ b/test/unit/bps_tree_iterator.cc
@@ -67,6 +67,7 @@ static void
 iterator_check()
 {
 	header();
+	plan(1);
 
 	test tree;
 	test_create(&tree, 0, extent_alloc, extent_free,
@@ -94,7 +95,7 @@ iterator_check()
 			test_insert(&tree, e, 0);
 		}
 	}
-	printf("Test tree size: %d\n", (int)test_size(&tree));
+	note("Test tree size: %d\n", (int)test_size(&tree));
 
 	/* Test that tree filled ok */
 	for (long i = 0; i < count1 * count2; i++) {
@@ -107,25 +108,24 @@ iterator_check()
 
 	/* Print first 7 elems */
 	{
-		printf("--> ");
+		note("--> ");
 		test_iterator iterator = test_iterator_first(&tree);
 		for (int i = 0; i < 7; i++) {
 			elem_t *elem = test_iterator_get_elem(&tree, &iterator);
-			printf("(%ld,%ld) ", elem->first, elem->second);
+			note("(%ld,%ld) ", elem->first, elem->second);
 			test_iterator_next(&tree, &iterator);
 		}
-		printf("\n");
 	}
 	/* Print last 7 elems */
 	{
-		printf("<-- ");
+		note("<-- ");
 		test_iterator iterator = test_iterator_last(&tree);
 		for (int i = 0; i < 7; i++) {
 			elem_t *elem = test_iterator_get_elem(&tree, &iterator);
-			printf("(%ld,%ld) ", elem->first, elem->second);
+			note("(%ld,%ld) ", elem->first, elem->second);
 			test_iterator_prev(&tree, &iterator);
 		}
-		printf("\n");
+		note("\n");
 	}
 
 	/* Iterate forward all elements 5 times */
@@ -180,24 +180,23 @@ iterator_check()
 		test_iterator end = test_upper_bound(&tree, key, &has_this_key2);
 		if (has_this_key1 != has_this_key2)
 			fail("Exact flag is broken", "true");
-		printf("Key %ld, %s range [%s, %s): ", key,
+		note("Key %ld, %s range [%s, %s): ", key,
 			has_this_key1 ? "not empty" : "empty",
 			test_iterator_is_invalid(&begin) ? "eof" : "ptr",
 			test_iterator_is_invalid(&end) ? "eof" : "ptr");
 		test_iterator runner = begin;
 		while (!test_iterator_are_equal(&tree, &runner, &end)) {
 			elem_t *elem = test_iterator_get_elem(&tree, &runner);
-			printf("(%ld,%ld) ", elem->first, elem->second);
+			note("(%ld,%ld) ", elem->first, elem->second);
 			test_iterator_next(&tree, &runner);
 		}
-		printf(" <-> ");
+		note(" <-> ");
 		runner = end;
 		while (!test_iterator_are_equal(&tree, &runner, &begin)) {
 			test_iterator_prev(&tree, &runner);
 			elem_t *elem = test_iterator_get_elem(&tree, &runner);
-			printf("(%ld,%ld) ", elem->first, elem->second);
+			note("(%ld,%ld) ", elem->first, elem->second);
 		}
-		printf("\n");
 	}
 
 	/* Check iterating in range from lower bound to upper bound */
@@ -230,23 +229,22 @@ iterator_check()
 		struct elem_t upper_elem_key = {key, LONG_MAX};
 		test_iterator begin = test_lower_bound_elem(&tree, lower_elem_key, NULL);
 		test_iterator end = test_upper_bound_elem(&tree, upper_elem_key, NULL);
-		printf("Key %ld, range [%s, %s): ", key,
+		note("Key %ld, range [%s, %s): ", key,
 		       test_iterator_is_invalid(&begin) ? "eof" : "ptr",
 		       test_iterator_is_invalid(&end) ? "eof" : "ptr");
 		test_iterator runner = begin;
 		while (!test_iterator_are_equal(&tree, &runner, &end)) {
 			elem_t *elem = test_iterator_get_elem(&tree, &runner);
-			printf("(%ld,%ld) ", elem->first, elem->second);
+			note("(%ld,%ld) ", elem->first, elem->second);
 			test_iterator_next(&tree, &runner);
 		}
-		printf(" <-> ");
+		note(" <-> ");
 		runner = end;
 		while (!test_iterator_are_equal(&tree, &runner, &begin)) {
 			test_iterator_prev(&tree, &runner);
 			elem_t *elem = test_iterator_get_elem(&tree, &runner);
-			printf("(%ld,%ld) ", elem->first, elem->second);
+			note("(%ld,%ld) ", elem->first, elem->second);
 		}
-		printf("\n");
 	}
 
 	/* Check iterating in range from lower bound to upper bound */
@@ -274,6 +272,8 @@ iterator_check()
 	}
 
 	test_destroy(&tree);
+	ok(1, "iterator check");
+	check_plan();
 
 	footer();
 }
@@ -282,6 +282,7 @@ static void
 iterator_invalidate_check()
 {
 	header();
+	plan(1);
 
 	const long test_size = 300;
 	const long max_delete_count = 100;
@@ -453,6 +454,8 @@ iterator_invalidate_check()
 		test_destroy(&tree);
 	}
 
+	ok(1, "iterator_invalidate_check");
+	check_plan();
 	footer();
 }
 
@@ -460,6 +463,7 @@ static void
 iterator_freeze_check()
 {
 	header();
+	plan(1);
 
 	const int test_rounds_size = 10;
 	const int test_data_size = 1000;
@@ -539,6 +543,8 @@ iterator_freeze_check()
 		test_destroy(&tree);
 	}
 
+	ok(1, "iterator_freeze_check");
+	check_plan();
 	footer();
 }
 
@@ -547,10 +553,12 @@ int
 main(void)
 {
 	srand(time(0));
+	plan(3);
 	iterator_check();
 	iterator_invalidate_check();
 	iterator_freeze_check();
 	if (total_extents_allocated) {
 		fail("memory leak", "true");
 	}
+	check_plan();
 }
diff --git a/test/unit/bps_tree_iterator.result b/test/unit/bps_tree_iterator.result
deleted file mode 100644
index 8a2e97eec..000000000
--- a/test/unit/bps_tree_iterator.result
+++ /dev/null
@@ -1,21 +0,0 @@
-	*** iterator_check ***
-Test tree size: 50000
---> (0,0) (0,1) (0,2) (0,3) (0,4) (2,0) (2,1) 
-<-- (19998,4) (19998,3) (19998,2) (19998,1) (19998,0) (19996,4) (19996,3) 
-Key -1, empty range [ptr, ptr):  <-> 
-Key 0, not empty range [ptr, ptr): (0,0) (0,1) (0,2) (0,3) (0,4)  <-> (0,4) (0,3) (0,2) (0,1) (0,0) 
-Key 10, not empty range [ptr, ptr): (10,0) (10,1) (10,2) (10,3) (10,4)  <-> (10,4) (10,3) (10,2) (10,1) (10,0) 
-Key 15, empty range [ptr, ptr):  <-> 
-Key 19998, not empty range [ptr, eof): (19998,0) (19998,1) (19998,2) (19998,3) (19998,4)  <-> (19998,4) (19998,3) (19998,2) (19998,1) (19998,0) 
-Key 20000, empty range [eof, eof):  <-> 
-Key -1, range [ptr, ptr):  <-> 
-Key 0, range [ptr, ptr): (0,0) (0,1) (0,2) (0,3) (0,4)  <-> (0,4) (0,3) (0,2) (0,1) (0,0) 
-Key 10, range [ptr, ptr): (10,0) (10,1) (10,2) (10,3) (10,4)  <-> (10,4) (10,3) (10,2) (10,1) (10,0) 
-Key 15, range [ptr, ptr):  <-> 
-Key 19998, range [ptr, eof): (19998,0) (19998,1) (19998,2) (19998,3) (19998,4)  <-> (19998,4) (19998,3) (19998,2) (19998,1) (19998,0) 
-Key 20000, range [eof, eof):  <-> 
-	*** iterator_check: done ***
-	*** iterator_invalidate_check ***
-	*** iterator_invalidate_check: done ***
-	*** iterator_freeze_check ***
-	*** iterator_freeze_check: done ***
diff --git a/test/unit/cbus.c b/test/unit/cbus.c
index ecf5fce72..09225c586 100644
--- a/test/unit/cbus.c
+++ b/test/unit/cbus.c
@@ -49,7 +49,7 @@ flush_cb(struct trigger *t, void *e)
 	(void) t;
 	(void) e;
 	++flushed_cnt;
-	printf("flush event, counter = %d\n", flushed_cnt);
+	note("flush event, counter = %d", flushed_cnt);
 	return 0;
 }
 
@@ -59,7 +59,7 @@ finish_execution(struct cmsg *m)
 {
 	(void) m;
 	fiber_cancel(fiber());
-	printf("break main fiber and finish test\n");
+	note("break main fiber and finish test");
 	is(flushed_cnt, expected_flushed_cnt,
 	   "flushed_cnt at the end of the test");
 }
@@ -84,7 +84,7 @@ worker_f(va_list ap)
 static void
 worker_start()
 {
-	printf("start worker\n");
+	note("start worker");
 	fail_if(cord_costart(&worker, "worker", worker_f, NULL) != 0);
 	cpipe_create(&pipe_to_worker, "worker");
 }
@@ -92,7 +92,7 @@ worker_start()
 static void
 worker_stop()
 {
-	printf("finish worker\n");
+	note("finish worker");
 	cbus_stop_loop(&pipe_to_worker);
 	cpipe_destroy(&pipe_to_worker);
 	fail_if(cord_join(&worker) != 0);
@@ -126,7 +126,7 @@ test_forced_flush(struct cmsg *m)
 {
 	(void) m;
 	is(flushed_cnt, 1, "1 flush after test_several_messages");
-	printf("\n*** Test forced flush ***\n");
+	note("*** Test forced flush ***");
 	flushed_cnt = 0;
 	static struct cmsg_hop test_forced_flush_route =
 		{ do_forced_flush, NULL };
@@ -160,7 +160,7 @@ test_several_messages(struct cmsg *m)
 {
 	(void) m;
 	is(flushed_cnt, 1, "1 flush after test_single_msg");
-	printf("\n*** Test several messages ***\n");
+	note("*** Test several messages ***");
 	flushed_cnt = 0;
 	static struct cmsg_hop test_event_route[] = {
 		{ do_some_event, &pipe_to_main },
@@ -190,7 +190,7 @@ test_several_messages(struct cmsg *m)
 static void
 test_single_msg()
 {
-	printf("\n*** Test single message ***\n");
+	note("*** Test single message ***");
 	static struct cmsg_hop test_single_flush_route[] = {
 		{ do_nothing, &pipe_to_main },
 		/* Schedule the next test. */
@@ -231,13 +231,13 @@ main()
 	memory_init();
 	fiber_init(fiber_c_invoke);
 	cbus_init();
-	printf("start main fiber\n");
+	note("start main fiber");
 	struct fiber *main_fiber = fiber_new("main", main_f);
 	assert(main_fiber != NULL);
 	fiber_wakeup(main_fiber);
-	printf("start main loop\n");
+	note("start main loop");
 	ev_run(loop(), 0);
-	printf("finish main loop\n");
+	note("finish main loop");
 	cbus_free();
 	fiber_free();
 	memory_free();
diff --git a/test/unit/cbus.result b/test/unit/cbus.result
deleted file mode 100644
index e87f861f3..000000000
--- a/test/unit/cbus.result
+++ /dev/null
@@ -1,24 +0,0 @@
-	*** main ***
-1..6
-start main fiber
-start main loop
-start worker
-
-*** Test single message ***
-flush event, counter = 1
-ok 1 - 1 flush after test_single_msg
-
-*** Test several messages ***
-ok 2 - no flush during loop
-ok 3 - no flush during loop
-ok 4 - no flush during loop
-flush event, counter = 1
-ok 5 - 1 flush after test_several_messages
-
-*** Test forced flush ***
-flush event, counter = 1
-break main fiber and finish test
-ok 6 - flushed_cnt at the end of the test
-finish worker
-finish main loop
-	*** main: done ***
diff --git a/test/unit/cbus_hang.c b/test/unit/cbus_hang.c
index 8b3671001..eac283890 100644
--- a/test/unit/cbus_hang.c
+++ b/test/unit/cbus_hang.c
@@ -33,7 +33,7 @@ pthread_cond_t endpoint_hack_cond_2;
 static
 void join_fail(int signum) {
 	(void)signum;
-	printf("Can't join the hang worker\n");
+	diag("Can't join the hang worker\n");
 	exit(EXIT_FAILURE);
 }
 
diff --git a/test/unit/cbus_hang.result b/test/unit/cbus_hang.result
deleted file mode 100644
index d5810e8cf..000000000
--- a/test/unit/cbus_hang.result
+++ /dev/null
@@ -1,4 +0,0 @@
-	*** main ***
-1..1
-ok 1 - The hang worker has been joined
-	*** main: done ***
diff --git a/test/unit/cbus_stress.c b/test/unit/cbus_stress.c
index 37e8e0f77..4d0b58a35 100644
--- a/test/unit/cbus_stress.c
+++ b/test/unit/cbus_stress.c
@@ -1,4 +1,3 @@
-#include <assert.h>
 #include <stdarg.h>
 #include <stddef.h>
 #include <stdlib.h>
@@ -94,25 +93,25 @@ thread_func(va_list ap);
 static void
 thread_create(struct thread *t, int id)
 {
-	assert(thread_count > 1);
-	assert(id >= 0 && id < thread_count);
+	fail_if(thread_count <= 1);
+	fail_if(!(id >= 0 && id < thread_count));
 
 	const int neighbor_count = thread_count - 1;
 
 	t->id = id;
 	snprintf(t->name, sizeof(t->name), "thread_%d", id);
-	assert(t->name != NULL);
+	fail_if(t->name == NULL);
 
 	t->connections = calloc(thread_count, sizeof(*t->connections));
-	assert(t->connections != NULL);
+	fail_if(t->connections == NULL);
 
 	t->connected_count = 0;
 	t->connected = calloc(neighbor_count, sizeof(*t->connected));
-	assert(t->connected != NULL);
+	fail_if(t->connected == NULL);
 
 	t->disconnected_count = 0;
 	t->disconnected = calloc(neighbor_count, sizeof(*t->disconnected));
-	assert(t->disconnected != NULL);
+	fail_if(t->disconnected == NULL);
 
 	/* Initially, we are not connected to anyone. */
 	for (int i = 0; i < thread_count; i++) {
@@ -120,7 +119,7 @@ thread_create(struct thread *t, int id)
 			continue; /* can't connect to self */
 		t->disconnected[t->disconnected_count++] = i;
 	}
-	assert(t->disconnected_count == neighbor_count);
+	fail_if(t->disconnected_count != neighbor_count);
 
 	t->sent = t->received = 0;
 	active_thread_count++;
@@ -139,7 +138,7 @@ thread_start_test_cb(struct cmsg *cmsg)
 {
 	struct thread *t = container_of(cmsg, struct thread, cmsg);
 	struct fiber *test_fiber = fiber_new("test", test_func);
-	assert(test_fiber != NULL);
+	fail_if(test_fiber == NULL);
 	fiber_start(test_fiber, t);
 }
 
@@ -173,10 +172,10 @@ thread_destroy(struct thread *t)
 static void
 thread_connect(struct thread *t, int dest_id)
 {
-	assert(dest_id != t->id);
-	assert(dest_id < thread_count);
+	fail_if(dest_id == t->id);
+	fail_if(dest_id >= thread_count);
 	struct conn *conn = &t->connections[dest_id];
-	assert(!conn->active);
+	fail_if(conn->active);
 	cbus_pair(thread_name(dest_id), t->name,
 		  &conn->to, &conn->from, NULL, NULL, NULL);
 	conn->active = true;
@@ -186,10 +185,10 @@ thread_connect(struct thread *t, int dest_id)
 static void
 thread_disconnect(struct thread *t, int dest_id)
 {
-	assert(dest_id != t->id);
-	assert(dest_id < thread_count);
+	fail_if(dest_id == t->id);
+	fail_if(dest_id >= thread_count);
 	struct conn *conn = &t->connections[dest_id];
-	assert(conn->active);
+	fail_if(!(conn->active));
 	cbus_unpair(&conn->to, &conn->from, NULL, NULL, NULL);
 	conn->active = false;
 }
@@ -198,8 +197,8 @@ thread_disconnect(struct thread *t, int dest_id)
 static void
 thread_connect_random(struct thread *t)
 {
-	assert(t->disconnected_count > 0);
-	assert(t->connected_count + t->disconnected_count == thread_count - 1);
+	fail_if(t->disconnected_count <= 0);
+	fail_if(t->connected_count + t->disconnected_count != thread_count - 1);
 	int idx = rand() % t->disconnected_count;
 	int dest_id = t->disconnected[idx];
 	t->disconnected[idx] = t->disconnected[--t->disconnected_count];
@@ -211,8 +210,8 @@ thread_connect_random(struct thread *t)
 static void
 thread_disconnect_random(struct thread *t)
 {
-	assert(t->connected_count > 0);
-	assert(t->connected_count + t->disconnected_count == thread_count - 1);
+	fail_if(t->connected_count <= 0);
+	fail_if(t->connected_count + t->disconnected_count != thread_count - 1);
 	int idx = rand() % t->connected_count;
 	int dest_id = t->connected[idx];
 	t->connected[idx] = t->connected[--t->connected_count];
@@ -242,9 +241,9 @@ thread_send(struct thread *t, int dest_id)
 		{ thread_msg_received_cb, NULL }
 	};
 	struct conn *c = &t->connections[dest_id];
-	assert(c->active);
+	fail_if(!(c->active));
 	struct thread_msg *msg = malloc(sizeof(*msg));
-	assert(msg != NULL);
+	fail_if(msg == NULL);
 	cmsg_init(&msg->cmsg, route);
 	msg->dest_id = dest_id;
 	cpipe_push(&c->to, &msg->cmsg);
@@ -255,7 +254,7 @@ thread_send(struct thread *t, int dest_id)
 static void
 thread_send_random(struct thread *t)
 {
-	assert(t->connected_count > 0);
+	fail_if(t->connected_count <= 0);
 	int idx = rand() % t->connected_count;
 	int dest_id = t->connected[idx];
 	thread_send(t, dest_id);
@@ -276,7 +275,7 @@ static void
 test_complete_cb(struct cmsg *cmsg)
 {
 	(void)cmsg;
-	assert(active_thread_count > 0);
+	fail_if(active_thread_count <= 0);
 	if (--active_thread_count == 0) {
 		/* Stop the main fiber when all workers are done. */
 		fiber_cancel(fiber());
@@ -334,7 +333,7 @@ main_func(va_list ap)
 	cbus_endpoint_create(&endpoint, "main", fiber_schedule_cb, fiber());
 
 	threads = calloc(thread_count, sizeof(*threads));
-	assert(threads != NULL);
+	fail_if(threads == NULL);
 
 	for (int i = 0; i < thread_count; i++)
 		thread_create(&threads[i], i);
@@ -351,7 +350,7 @@ main_func(va_list ap)
 		received += t->received;
 		thread_destroy(t);
 	}
-	assert(sent == received);
+	fail_if(sent != received);
 
 	cbus_endpoint_destroy(&endpoint, cbus_process);
 
@@ -373,12 +372,14 @@ main()
 	cbus_init();
 
 	header();
+	plan(1);
 
 	struct fiber *main_fiber = fiber_new("main", main_func);
-	assert(main_fiber != NULL);
+	isnt(main_fiber, NULL, "fiber started");
 	fiber_wakeup(main_fiber);
 	ev_run(loop(), 0);
 
+	check_plan();
 	footer();
 
 	cbus_free();
diff --git a/test/unit/cbus_stress.result b/test/unit/cbus_stress.result
deleted file mode 100644
index 8300f0550..000000000
--- a/test/unit/cbus_stress.result
+++ /dev/null
@@ -1,2 +0,0 @@
-	*** main ***
-	*** main: done ***
diff --git a/test/unit/checkpoint_schedule.result b/test/unit/checkpoint_schedule.result
deleted file mode 100644
index e34c762a1..000000000
--- a/test/unit/checkpoint_schedule.result
+++ /dev/null
@@ -1,41 +0,0 @@
-	*** main ***
-1..38
-ok 1 - checkpointing disabled - timeout after configuration
-ok 2 - checkpointing disabled - timeout after sleep
-ok 3 - checkpointing disabled - timeout after reset
-ok 4 - checkpoint interval 100 - timeout after configuration
-ok 5 - checkpoint interval 100 - initial timeout randomization
-ok 6 - checkpoint interval 100 - timeout after sleep 1
-ok 7 - checkpoint interval 100 - timeout after sleep 2
-ok 8 - checkpoint interval 100 - timeout after sleep 3
-ok 9 - checkpoint interval 100 - timeout after sleep 4
-ok 10 - checkpoint interval 100 - timeout after reset
-ok 11 - checkpoint interval 600 - timeout after configuration
-ok 12 - checkpoint interval 600 - initial timeout randomization
-ok 13 - checkpoint interval 600 - timeout after sleep 1
-ok 14 - checkpoint interval 600 - timeout after sleep 2
-ok 15 - checkpoint interval 600 - timeout after sleep 3
-ok 16 - checkpoint interval 600 - timeout after sleep 4
-ok 17 - checkpoint interval 600 - timeout after reset
-ok 18 - checkpoint interval 1200 - timeout after configuration
-ok 19 - checkpoint interval 1200 - initial timeout randomization
-ok 20 - checkpoint interval 1200 - timeout after sleep 1
-ok 21 - checkpoint interval 1200 - timeout after sleep 2
-ok 22 - checkpoint interval 1200 - timeout after sleep 3
-ok 23 - checkpoint interval 1200 - timeout after sleep 4
-ok 24 - checkpoint interval 1200 - timeout after reset
-ok 25 - checkpoint interval 1800 - timeout after configuration
-ok 26 - checkpoint interval 1800 - initial timeout randomization
-ok 27 - checkpoint interval 1800 - timeout after sleep 1
-ok 28 - checkpoint interval 1800 - timeout after sleep 2
-ok 29 - checkpoint interval 1800 - timeout after sleep 3
-ok 30 - checkpoint interval 1800 - timeout after sleep 4
-ok 31 - checkpoint interval 1800 - timeout after reset
-ok 32 - checkpoint interval 3600 - timeout after configuration
-ok 33 - checkpoint interval 3600 - initial timeout randomization
-ok 34 - checkpoint interval 3600 - timeout after sleep 1
-ok 35 - checkpoint interval 3600 - timeout after sleep 2
-ok 36 - checkpoint interval 3600 - timeout after sleep 3
-ok 37 - checkpoint interval 3600 - timeout after sleep 4
-ok 38 - checkpoint interval 3600 - timeout after reset
-	*** main: done ***
diff --git a/test/unit/coio.result b/test/unit/coio.result
deleted file mode 100644
index 5019fa48a..000000000
--- a/test/unit/coio.result
+++ /dev/null
@@ -1,12 +0,0 @@
-	*** stat_timeout_test ***
-	*** stat_timeout_test: done ***
-	*** stat_notify_test ***
-# filename: 1.out
-	*** stat_notify_test: done ***
-	*** test_call_f ***
-# call done with res 0
-	*** test_call_f: done ***
-	*** test_getaddrinfo ***
-1..1
-ok 1 - getaddrinfo
-	*** test_getaddrinfo: done ***
diff --git a/test/unit/coll.cpp b/test/unit/coll.cpp
index 8d7a3ff1e..16d2e28b4 100644
--- a/test/unit/coll.cpp
+++ b/test/unit/coll.cpp
@@ -2,7 +2,6 @@
 #include <vector>
 #include <algorithm>
 #include <string.h>
-#include <assert.h>
 #include <msgpuck.h>
 #include <diag.h>
 #include <fiber.h>
@@ -30,12 +29,13 @@ void
 test_sort_strings(vector<const char *> &strings, struct coll *coll)
 {
 	sort(strings.begin(), strings.end(), comp(coll));
-	cout << strings[0] << endl;
+	cout << "# " << strings[0] << endl;
 	for (size_t i = 1; i < strings.size(); i++) {
 		int cmp = coll->cmp(strings[i], strlen(strings[i]),
 				    strings[i - 1], strlen(strings[i - 1]),
 				    coll);
-		cout << strings[i]
+		cout << "# "
+		     << strings[i]
 		     << (cmp < 0 ? " LESS" : cmp > 0 ? " GREATER " : " EQUAL")
 		     << endl;
 	}
@@ -45,6 +45,7 @@ void
 manual_test()
 {
 	header();
+	plan(7);
 
 	vector<const char *> strings;
 	struct coll_def def;
@@ -54,62 +55,56 @@ manual_test()
 	def.icu.strength = COLL_ICU_STRENGTH_IDENTICAL;
 	struct coll *coll;
 
-	cout << " -- default ru_RU -- " << endl;
 	coll = coll_new(&def);
-	assert(coll != NULL);
+	isnt(coll, NULL, "-- default ru_RU --")
 	strings = {"Б", "бб", "е", "ЕЕЕЕ", "ё", "Ё", "и", "И", "123", "45" };
 	test_sort_strings(strings, coll);
 	coll_unref(coll);
 
-	cout << " -- --||-- + upper first -- " << endl;
 	def.icu.case_first = COLL_ICU_CF_UPPER_FIRST;
 	coll = coll_new(&def);
-	assert(coll != NULL);
+	isnt(coll, NULL, "-- --||-- + upper first --")
 	strings = {"Б", "бб", "е", "ЕЕЕЕ", "ё", "Ё", "и", "И", "123", "45" };
 	test_sort_strings(strings, coll);
 	coll_unref(coll);
 
-	cout << " -- --||-- + lower first -- " << endl;
 	def.icu.case_first = COLL_ICU_CF_LOWER_FIRST;
 	coll = coll_new(&def);
-	assert(coll != NULL);
+	isnt(coll, NULL, "-- --||-- + lower first --")
 	strings = {"Б", "бб", "е", "ЕЕЕЕ", "ё", "Ё", "и", "И", "123", "45" };
 	test_sort_strings(strings, coll);
 	coll_unref(coll);
 
-	cout << " -- --||-- + secondary strength + numeric -- " << endl;
 	def.icu.strength = COLL_ICU_STRENGTH_SECONDARY;
 	def.icu.numeric_collation = COLL_ICU_ON;
 	coll = coll_new(&def);
-	assert(coll != NULL);
+	isnt(coll, NULL, "-- --||-- + secondary strength + numeric --")
 	strings = {"Б", "бб", "е", "ЕЕЕЕ", "ё", "Ё", "и", "И", "123", "45" };
 	test_sort_strings(strings, coll);
 	coll_unref(coll);
 
-	cout << " -- --||-- + case level -- " << endl;
 	def.icu.case_level = COLL_ICU_ON;
 	coll = coll_new(&def);
-	assert(coll != NULL);
+	isnt(coll, NULL, "-- --||-- + case level --")
 	strings = {"Б", "бб", "е", "ЕЕЕЕ", "ё", "Ё", "и", "И", "123", "45" };
 	test_sort_strings(strings, coll);
 	coll_unref(coll);
 
-	cout << " -- en_EN -- " << endl;
 	snprintf(def.locale, sizeof(def.locale), "%s", "en_EN-EN");
 	coll = coll_new(&def);
-	assert(coll != NULL);
+	isnt(coll, NULL, "-- en_EN --")
 	strings = {"aa", "bb", "cc", "ch", "dd", "gg", "hh", "ii" };
 	test_sort_strings(strings, coll);
 	coll_unref(coll);
 
-	cout << " -- cs_CZ -- " << endl;
 	snprintf(def.locale, sizeof(def.locale), "%s", "cs_CZ");
 	coll = coll_new(&def);
-	assert(coll != NULL);
+	isnt(coll, NULL, "-- cs_CZ --")
 	strings = {"aa", "bb", "cc", "ch", "dd", "gg", "hh", "ii" };
 	test_sort_strings(strings, coll);
 	coll_unref(coll);
 
+	check_plan();
 	footer();
 }
 
@@ -127,6 +122,7 @@ void
 hash_test()
 {
 	header();
+	plan(8);
 
 	struct coll_def def;
 	memset(&def, 0, sizeof(def));
@@ -137,23 +133,22 @@ hash_test()
 
 	/* Case sensitive */
 	coll = coll_new(&def);
-	assert(coll != NULL);
-	cout << "Case sensitive" << endl;
-	cout << (calc_hash("ае", coll) != calc_hash("аё", coll) ? "OK" : "Fail") << endl;
-	cout << (calc_hash("ае", coll) != calc_hash("аЕ", coll) ? "OK" : "Fail") << endl;
-	cout << (calc_hash("аЕ", coll) != calc_hash("аё", coll) ? "OK" : "Fail") << endl;
+	isnt(coll, NULL, "Case sensitive");
+	isnt(calc_hash("ае", coll), calc_hash("аё", coll), "ае != аё");
+	isnt(calc_hash("ае", coll), calc_hash("аЕ", coll), "ае != аЕ");
+	isnt(calc_hash("аЕ", coll), calc_hash("аё", coll), "аЕ != аё");
 	coll_unref(coll);
 
 	/* Case insensitive */
 	def.icu.strength = COLL_ICU_STRENGTH_SECONDARY;
 	coll = coll_new(&def);
-	assert(coll != NULL);
-	cout << "Case insensitive" << endl;
-	cout << (calc_hash("ае", coll) != calc_hash("аё", coll) ? "OK" : "Fail") << endl;
-	cout << (calc_hash("ае", coll) == calc_hash("аЕ", coll) ? "OK" : "Fail") << endl;
-	cout << (calc_hash("аЕ", coll) != calc_hash("аё", coll) ? "OK" : "Fail") << endl;
+	isnt(coll, NULL, "Case insensitive");
+	isnt(calc_hash("ае", coll), calc_hash("аё", coll), "ае != аё");
+	is(calc_hash("ае", coll), calc_hash("аЕ", coll), "ае == аЕ");
+	isnt(calc_hash("аЕ", coll), calc_hash("аё", coll), "аЕ != аё");
 	coll_unref(coll);
 
+	check_plan();
 	footer();
 }
 
@@ -187,6 +182,7 @@ cache_test()
 int
 main(int, const char**)
 {
+	plan(3);
 	coll_init();
 	memory_init();
 	fiber_init(fiber_c_invoke);
@@ -196,4 +192,5 @@ main(int, const char**)
 	fiber_free();
 	memory_free();
 	coll_free();
+	check_plan();
 }
diff --git a/test/unit/coll.result b/test/unit/coll.result
deleted file mode 100644
index 269764246..000000000
--- a/test/unit/coll.result
+++ /dev/null
@@ -1,90 +0,0 @@
-	*** manual_test ***
- -- default ru_RU -- 
-123
-45 GREATER 
-Б GREATER 
-бб GREATER 
-е GREATER 
-Ñ‘ GREATER 
-Ё GREATER 
-ЕЕЕЕ GREATER 
-и GREATER 
-И GREATER 
- -- --||-- + upper first -- 
-123
-45 GREATER 
-Б GREATER 
-бб GREATER 
-е GREATER 
-Ё GREATER 
-Ñ‘ GREATER 
-ЕЕЕЕ GREATER 
-И GREATER 
-и GREATER 
- -- --||-- + lower first -- 
-123
-45 GREATER 
-Б GREATER 
-бб GREATER 
-е GREATER 
-Ñ‘ GREATER 
-Ё GREATER 
-ЕЕЕЕ GREATER 
-и GREATER 
-И GREATER 
- -- --||-- + secondary strength + numeric -- 
-45
-123 GREATER 
-Б GREATER 
-бб GREATER 
-е GREATER 
-Ñ‘ GREATER 
-Ё EQUAL
-ЕЕЕЕ GREATER 
-и GREATER 
-И EQUAL
- -- --||-- + case level -- 
-45
-123 GREATER 
-Б GREATER 
-бб GREATER 
-е GREATER 
-Ñ‘ GREATER 
-Ё GREATER 
-ЕЕЕЕ GREATER 
-и GREATER 
-И GREATER 
- -- en_EN -- 
-aa
-bb GREATER 
-cc GREATER 
-ch GREATER 
-dd GREATER 
-gg GREATER 
-hh GREATER 
-ii GREATER 
- -- cs_CZ -- 
-aa
-bb GREATER 
-cc GREATER 
-dd GREATER 
-gg GREATER 
-hh GREATER 
-ch GREATER 
-ii GREATER 
-	*** manual_test: done ***
-	*** hash_test ***
-Case sensitive
-OK
-OK
-OK
-Case insensitive
-OK
-OK
-OK
-	*** hash_test: done ***
-	*** cache_test ***
-1..2
-ok 1 - collations with the same definition are not duplicated
-ok 2 - collations with different definitions are different objects
-	*** cache_test: done ***
diff --git a/test/unit/column_mask.result b/test/unit/column_mask.result
deleted file mode 100644
index 1d87a2f24..000000000
--- a/test/unit/column_mask.result
+++ /dev/null
@@ -1,36 +0,0 @@
-	*** main ***
-1..28
-ok 1 - check result length
-ok 2 - tuple update is correct
-ok 3 - column_mask is correct
-ok 4 - check result length
-ok 5 - tuple update is correct
-ok 6 - column_mask is correct
-ok 7 - check result length
-ok 8 - tuple update is correct
-ok 9 - column_mask is correct
-ok 10 - check result length
-ok 11 - tuple update is correct
-ok 12 - column_mask is correct
-ok 13 - check result length
-ok 14 - tuple update is correct
-ok 15 - column_mask is correct
-ok 16 - check result length
-ok 17 - tuple update is correct
-ok 18 - column_mask is correct
-ok 19 - check result length
-ok 20 - tuple update is correct
-ok 21 - column_mask is correct
-ok 22 - check result length
-ok 23 - tuple update is correct
-ok 24 - column_mask is correct
-ok 25 - check result length
-ok 26 - tuple update is correct
-ok 27 - column_mask is correct
-	*** test_paths ***
-    1..2
-    ok 1 - JSON update works
-    ok 2 - column mask match
-ok 28 - subtests
-	*** test_paths: done ***
-	*** main: done ***
diff --git a/test/unit/crypto.result b/test/unit/crypto.result
deleted file mode 100644
index 6e01896b1..000000000
--- a/test/unit/crypto.result
+++ /dev/null
@@ -1,132 +0,0 @@
-	*** main ***
-1..5
-ok 1 - crypto checks that algo argument is correct
-	*** test_aes128_codec ***
-    1..20
-    ok 1 - encrypt returns needed number of bytes
-    ok 2 - encrypt does not write anything when too small buffer
-    ok 3 - encrypt does not allow 0 sized buffer
-    ok 4 - encrypt requires additional block when buffer size is multiple of block size
-    ok 5 - AES 126 IV size is 16
-    ok 6 - encrypt works when buffer is big enough
-    ok 7 - encrypt returns the same on second call
-    ok 8 - encrypted data is the same
-    ok 9 - and it is not just copied from the plain text
-    ok 10 - decrypt also checks length and returns needed number of bytes
-    ok 11 - decrypt returns correct number of bytes
-    ok 12 - and correctly decrypts data
-    ok 13 - decrypt can't correctly decode anything with a wrong IV
-    ok 14 - in case decrypt has totally failed, diag is set
-    ok 15 - encrypt with different IV and the same number of written bytes returned
-    ok 16 - the encrypted data looks different
-    ok 17 - decrypt works with correct but another IV
-    ok 18 - data is the same
-    ok 19 - encrypt with one codec, but decrypt with another codec and the same key
-    ok 20 - data is the same
-ok 2 - subtests
-	*** test_aes128_codec: done ***
-	*** test_aes128_stress ***
-    1..1
-    ok 1 - try encrypt/decrypt on a variety of sizes, keys, and ivs
-ok 3 - subtests
-	*** test_aes128_stress: done ***
-	*** test_each ***
-    1..80
-    ok 1 - none 0 ECB, create iv of size 0
-    ok 2 - encode
-    ok 3 - decode
-    ok 4 - data is correct
-    ok 5 - none 0 CBC, create iv of size 0
-    ok 6 - encode
-    ok 7 - decode
-    ok 8 - data is correct
-    ok 9 - none 0 CFB, create iv of size 0
-    ok 10 - encode
-    ok 11 - decode
-    ok 12 - data is correct
-    ok 13 - none 0 OFB, create iv of size 0
-    ok 14 - encode
-    ok 15 - decode
-    ok 16 - data is correct
-    ok 17 - AES128 16 ECB, create iv of size 0
-    ok 18 - encode
-    ok 19 - decode
-    ok 20 - data is correct
-    ok 21 - AES128 16 CBC, create iv of size 16
-    ok 22 - encode
-    ok 23 - decode
-    ok 24 - data is correct
-    ok 25 - AES128 16 CFB, create iv of size 16
-    ok 26 - encode
-    ok 27 - decode
-    ok 28 - data is correct
-    ok 29 - AES128 16 OFB, create iv of size 16
-    ok 30 - encode
-    ok 31 - decode
-    ok 32 - data is correct
-    ok 33 - AES192 24 ECB, create iv of size 0
-    ok 34 - encode
-    ok 35 - decode
-    ok 36 - data is correct
-    ok 37 - AES192 24 CBC, create iv of size 16
-    ok 38 - encode
-    ok 39 - decode
-    ok 40 - data is correct
-    ok 41 - AES192 24 CFB, create iv of size 16
-    ok 42 - encode
-    ok 43 - decode
-    ok 44 - data is correct
-    ok 45 - AES192 24 OFB, create iv of size 16
-    ok 46 - encode
-    ok 47 - decode
-    ok 48 - data is correct
-    ok 49 - AES256 32 ECB, create iv of size 0
-    ok 50 - encode
-    ok 51 - decode
-    ok 52 - data is correct
-    ok 53 - AES256 32 CBC, create iv of size 16
-    ok 54 - encode
-    ok 55 - decode
-    ok 56 - data is correct
-    ok 57 - AES256 32 CFB, create iv of size 16
-    ok 58 - encode
-    ok 59 - decode
-    ok 60 - data is correct
-    ok 61 - AES256 32 OFB, create iv of size 16
-    ok 62 - encode
-    ok 63 - decode
-    ok 64 - data is correct
-    ok 65 - DES 8 ECB, create iv of size 0
-    ok 66 - encode
-    ok 67 - decode
-    ok 68 - data is correct
-    ok 69 - DES 8 CBC, create iv of size 8
-    ok 70 - encode
-    ok 71 - decode
-    ok 72 - data is correct
-    ok 73 - DES 8 CFB, create iv of size 8
-    ok 74 - encode
-    ok 75 - decode
-    ok 76 - data is correct
-    ok 77 - DES 8 OFB, create iv of size 8
-    ok 78 - encode
-    ok 79 - decode
-    ok 80 - data is correct
-ok 4 - subtests
-	*** test_each: done ***
-	*** test_stream ***
-    1..11
-    ok 1 - stream begin checks key size
-    ok 2 - stream begin checks iv size
-    ok 3 - begin encryption
-    ok 4 - append checks size
-    ok 5 - append 5
-    ok 6 - append 10
-    ok 7 - last append 30
-    ok 8 - commit checks size
-    ok 9 - commit 16
-    ok 10 - decoder returned correct size
-    ok 11 - data is decoded correctly
-ok 5 - subtests
-	*** test_stream: done ***
-	*** main: done ***
diff --git a/test/unit/csv.result b/test/unit/csv.result
index 8f9dab5b2..783388aca 100644
--- a/test/unit/csv.result
+++ b/test/unit/csv.result
@@ -1,30 +1,30 @@
-	*** test1 ***
+# *** test1 ***
 |1|
 ||
 |1|	|2|	|3|
 |123|
-	*** test1: done ***
-	*** test2 ***
+# *** test1: done ***
+# *** test2 ***
 |123|	|456|	|abcac|	|'multiword field 4'|
 |none|	|none|	|0|
 ||	||	||
 ||	||	||
-	*** test2: done ***
-	*** test3 ***
+# *** test2: done ***
+# *** test3 ***
 |1|	||	|2|
-	*** test3: done ***
-	*** test4 ***
+# *** test3: done ***
+# *** test4 ***
 |123|	|5|	|92|	|0|	|0|
 |1|	|12  34|	|56|	|quote , |	|66|
 |ok|
-	*** test4: done ***
-	*** test5 ***
+# *** test4: done ***
+# *** test5 ***
 |abc|	|longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong|	|0|
 |123|	|456|	||
 |0|	||	||
 valid: yes
-	*** test5: done ***
-	*** test6 ***
+# *** test5: done ***
+# *** test6 ***
 ||
 ||
 |abc|
@@ -36,67 +36,67 @@ valid: yes
 ||
 | |
 valid: NO
-	*** test6: done ***
-	*** big_chunk_separated_test ***
+# *** test6: done ***
+# *** big_chunk_separated_test ***
 line_cnt=10000, fieldsizes_cnt=1920000, 1920000
-	*** big_chunk_separated_test: done ***
-	*** random_generated_test ***
+# *** big_chunk_separated_test: done ***
+# *** random_generated_test ***
 line_cnt=40, fieldsizes_cnt=183
 valid: yes
-	*** random_generated_test: done ***
-	*** common_test ***
+# *** random_generated_test: done ***
+# *** common_test ***
 |first|	|last|	|address|	|city|	|zip|
 |John|	|Doe|	|120 any st.|	|Anytown, WW|	|08123|
-	*** common_test: done ***
-	*** common_test ***
+# *** common_test: done ***
+# *** common_test ***
 |a|	|b|	|c|
 |1|	|"|	|"|
 |2|	|3|	|4|
-	*** common_test: done ***
-	*** common_test ***
+# *** common_test: done ***
+# *** common_test ***
 |a|	|b|
 |1|	|ha "ha" ha|
 |3|	|4|
-	*** common_test: done ***
-	*** common_test ***
+# *** common_test: done ***
+# *** common_test ***
 |key|	|val|
 |1|	|{"type": "Point", "coordinates": [102.0, 0.5]}|
-	*** common_test: done ***
-	*** common_test ***
+# *** common_test: done ***
+# *** common_test ***
 |a|	|b|	|c|
 |1|	|2|	|3|
 |Once upon 
 a time|	|5|	|6|
 |7|	|8|	|9|
-	*** common_test: done ***
-	*** common_test ***
+# *** common_test: done ***
+# *** common_test ***
 |a|	|b|
 |1|	|ha
 "ha"
 ha|
 |3|	|4|
-	*** common_test: done ***
-	*** common_test ***
+# *** common_test: done ***
+# *** common_test ***
 |a|	|b|	|c|
 |1|	|2|	|3|
 |4|	|5|	|а нет ли ошибок?|
-	*** common_test: done ***
-	*** common_test ***
+# *** common_test: done ***
+# *** common_test ***
 |www|	|aaa|	|tt  |
-	*** common_test: done ***
-	*** iter_test1 ***
+# *** common_test: done ***
+# *** iter_test1 ***
 ||	|d|	|e|
 |12|	|42|	|3|
 |o|
-	*** iter_test1: done ***
-	*** iter_test2 ***
+# *** iter_test1: done ***
+# *** iter_test2 ***
 |1|
 |23|
-	*** iter_test2: done ***
-	*** iter_test3 ***
+# *** iter_test2: done ***
+# *** iter_test3 ***
 |1|	|2|	|3|
 |4|	|5|	|6|
-	*** iter_test3: done ***
-	*** csv_out ***
+# *** iter_test3: done ***
+# *** csv_out ***
 abc<len=3>,"with,comma"<len=12>,""in quotes""<len=13>,1 "" quote<len=10>
-	*** csv_out: done ***
+# *** csv_out: done ***
diff --git a/test/unit/decimal.result b/test/unit/decimal.result
deleted file mode 100644
index e8432fb36..000000000
--- a/test/unit/decimal.result
+++ /dev/null
@@ -1,700 +0,0 @@
-1..281
-ok 1 - decimal(314)
-ok 2 - decimal(271)
-ok 3 - decimal(314) + decimal(271)
-ok 4 - decimal((314) + (271))
-ok 5 - decimal(314) + decimal(271) == (314) + (271)
-ok 6 - decimal(314) - decimal(271)
-ok 7 - decimal((314) - (271))
-ok 8 - decimal(314) - decimal(271) == (314) - (271)
-ok 9 - decimal(314) * decimal(271)
-ok 10 - decimal((314) * (271))
-ok 11 - decimal_round((314) * (271), 15)
-ok 12 - decimal(314) * decimal(271) == (314) * (271)
-ok 13 - decimal(314) / decimal(271)
-ok 14 - decimal((314) / (271))
-ok 15 - decimal_round((314)/(271), 15)
-ok 16 - decimal(314) / decimal(271) == (314) / (271)
-ok 17 - decimal(65535)
-ok 18 - decimal(23456)
-ok 19 - decimal(65535) + decimal(23456)
-ok 20 - decimal((65535) + (23456))
-ok 21 - decimal(65535) + decimal(23456) == (65535) + (23456)
-ok 22 - decimal(65535) - decimal(23456)
-ok 23 - decimal((65535) - (23456))
-ok 24 - decimal(65535) - decimal(23456) == (65535) - (23456)
-ok 25 - decimal(65535) * decimal(23456)
-ok 26 - decimal((65535) * (23456))
-ok 27 - decimal_round((65535) * (23456), 15)
-ok 28 - decimal(65535) * decimal(23456) == (65535) * (23456)
-ok 29 - decimal(65535) / decimal(23456)
-ok 30 - decimal((65535) / (23456))
-ok 31 - decimal_round((65535)/(23456), 15)
-ok 32 - decimal(65535) / decimal(23456) == (65535) / (23456)
-ok 33 - decimal(0)
-ok 34 - decimal(1)
-ok 35 - decimal(0) + decimal(1)
-ok 36 - decimal((0) + (1))
-ok 37 - decimal(0) + decimal(1) == (0) + (1)
-ok 38 - decimal(0) - decimal(1)
-ok 39 - decimal((0) - (1))
-ok 40 - decimal(0) - decimal(1) == (0) - (1)
-ok 41 - decimal(0) * decimal(1)
-ok 42 - decimal((0) * (1))
-ok 43 - decimal_round((0) * (1), 15)
-ok 44 - decimal(0) * decimal(1) == (0) * (1)
-ok 45 - decimal(0) / decimal(1)
-ok 46 - decimal((0) / (1))
-ok 47 - decimal_round((0)/(1), 15)
-ok 48 - decimal(0) / decimal(1) == (0) / (1)
-ok 49 - decimal(0)
-ok 50 - decimal(-1)
-ok 51 - decimal(0) + decimal(-1)
-ok 52 - decimal((0) + (-1))
-ok 53 - decimal(0) + decimal(-1) == (0) + (-1)
-ok 54 - decimal(0) - decimal(-1)
-ok 55 - decimal((0) - (-1))
-ok 56 - decimal(0) - decimal(-1) == (0) - (-1)
-ok 57 - decimal(0) * decimal(-1)
-ok 58 - decimal((0) * (-1))
-ok 59 - decimal_round((0) * (-1), 15)
-ok 60 - decimal(0) * decimal(-1) == (0) * (-1)
-ok 61 - decimal(0) / decimal(-1)
-ok 62 - decimal((0) / (-1))
-ok 63 - decimal_round((0)/(-1), 15)
-ok 64 - decimal(0) / decimal(-1) == (0) / (-1)
-ok 65 - decimal(-1)
-ok 66 - decimal(1)
-ok 67 - decimal(-1) + decimal(1)
-ok 68 - decimal((-1) + (1))
-ok 69 - decimal(-1) + decimal(1) == (-1) + (1)
-ok 70 - decimal(-1) - decimal(1)
-ok 71 - decimal((-1) - (1))
-ok 72 - decimal(-1) - decimal(1) == (-1) - (1)
-ok 73 - decimal(-1) * decimal(1)
-ok 74 - decimal((-1) * (1))
-ok 75 - decimal_round((-1) * (1), 15)
-ok 76 - decimal(-1) * decimal(1) == (-1) * (1)
-ok 77 - decimal(-1) / decimal(1)
-ok 78 - decimal((-1) / (1))
-ok 79 - decimal_round((-1)/(1), 15)
-ok 80 - decimal(-1) / decimal(1) == (-1) / (1)
-ok 81 - decimal(INT_MIN)
-ok 82 - decimal(INT_MAX)
-ok 83 - decimal(INT_MIN) + decimal(INT_MAX)
-ok 84 - decimal((INT_MIN) + (INT_MAX))
-ok 85 - decimal(INT_MIN) + decimal(INT_MAX) == (INT_MIN) + (INT_MAX)
-ok 86 - decimal(INT_MIN) - decimal(INT_MAX)
-ok 87 - decimal((INT_MIN) - (INT_MAX))
-ok 88 - decimal(INT_MIN) - decimal(INT_MAX) == (INT_MIN) - (INT_MAX)
-ok 89 - decimal(INT_MIN) * decimal(INT_MAX)
-ok 90 - decimal((INT_MIN) * (INT_MAX))
-ok 91 - decimal_round((INT_MIN) * (INT_MAX), 15)
-ok 92 - decimal(INT_MIN) * decimal(INT_MAX) == (INT_MIN) * (INT_MAX)
-ok 93 - decimal(INT_MIN) / decimal(INT_MAX)
-ok 94 - decimal((INT_MIN) / (INT_MAX))
-ok 95 - decimal_round((INT_MIN)/(INT_MAX), 15)
-ok 96 - decimal(INT_MIN) / decimal(INT_MAX) == (INT_MIN) / (INT_MAX)
-ok 97 - decimal(-314)
-ok 98 - decimal(-271)
-ok 99 - decimal(-314) + decimal(-271)
-ok 100 - decimal((-314) + (-271))
-ok 101 - decimal(-314) + decimal(-271) == (-314) + (-271)
-ok 102 - decimal(-314) - decimal(-271)
-ok 103 - decimal((-314) - (-271))
-ok 104 - decimal(-314) - decimal(-271) == (-314) - (-271)
-ok 105 - decimal(-314) * decimal(-271)
-ok 106 - decimal((-314) * (-271))
-ok 107 - decimal_round((-314) * (-271), 15)
-ok 108 - decimal(-314) * decimal(-271) == (-314) * (-271)
-ok 109 - decimal(-314) / decimal(-271)
-ok 110 - decimal((-314) / (-271))
-ok 111 - decimal_round((-314)/(-271), 15)
-ok 112 - decimal(-314) / decimal(-271) == (-314) / (-271)
-ok 113 - decimal(-159615516)
-ok 114 - decimal(172916921)
-ok 115 - decimal(-159615516) + decimal(172916921)
-ok 116 - decimal((-159615516) + (172916921))
-ok 117 - decimal(-159615516) + decimal(172916921) == (-159615516) + (172916921)
-ok 118 - decimal(-159615516) - decimal(172916921)
-ok 119 - decimal((-159615516) - (172916921))
-ok 120 - decimal(-159615516) - decimal(172916921) == (-159615516) - (172916921)
-ok 121 - decimal(-159615516) * decimal(172916921)
-ok 122 - decimal((-159615516) * (172916921))
-ok 123 - decimal_round((-159615516) * (172916921), 15)
-ok 124 - decimal(-159615516) * decimal(172916921) == (-159615516) * (172916921)
-ok 125 - decimal(-159615516) / decimal(172916921)
-ok 126 - decimal((-159615516) / (172916921))
-ok 127 - decimal_round((-159615516)/(172916921), 15)
-ok 128 - decimal(-159615516) / decimal(172916921) == (-159615516) / (172916921)
-ok 129 - decimal(1.1)
-ok 130 - decimal(2.3)
-ok 131 - decimal(1.1) + decimal(2.3)
-ok 132 - decimal((1.1) + (2.3))
-ok 133 - decimal(1.1) + decimal(2.3) == (1.1) + (2.3)
-ok 134 - decimal(1.1) - decimal(2.3)
-ok 135 - decimal((1.1) - (2.3))
-ok 136 - decimal(1.1) - decimal(2.3) == (1.1) - (2.3)
-ok 137 - decimal(1.1) * decimal(2.3)
-ok 138 - decimal((1.1) * (2.3))
-ok 139 - decimal_round((1.1) * (2.3), 15)
-ok 140 - decimal(1.1) * decimal(2.3) == (1.1) * (2.3)
-ok 141 - decimal(1.1) / decimal(2.3)
-ok 142 - decimal((1.1) / (2.3))
-ok 143 - decimal_round((1.1)/(2.3), 15)
-ok 144 - decimal(1.1) / decimal(2.3) == (1.1) / (2.3)
-ok 145 - decimal(1e10)
-ok 146 - decimal(1e10)
-ok 147 - decimal(1e10) + decimal(1e10)
-ok 148 - decimal((1e10) + (1e10))
-ok 149 - decimal(1e10) + decimal(1e10) == (1e10) + (1e10)
-ok 150 - decimal(1e10) - decimal(1e10)
-ok 151 - decimal((1e10) - (1e10))
-ok 152 - decimal(1e10) - decimal(1e10) == (1e10) - (1e10)
-ok 153 - decimal(1e10) * decimal(1e10)
-ok 154 - decimal((1e10) * (1e10))
-ok 155 - decimal_round((1e10) * (1e10), 15)
-ok 156 - decimal(1e10) * decimal(1e10) == (1e10) * (1e10)
-ok 157 - decimal(1e10) / decimal(1e10)
-ok 158 - decimal((1e10) / (1e10))
-ok 159 - decimal_round((1e10)/(1e10), 15)
-ok 160 - decimal(1e10) / decimal(1e10) == (1e10) / (1e10)
-ok 161 - decimal(1.23456789)
-ok 162 - decimal(4.567890123)
-ok 163 - decimal(1.23456789) + decimal(4.567890123)
-ok 164 - decimal((1.23456789) + (4.567890123))
-ok 165 - decimal(1.23456789) + decimal(4.567890123) == (1.23456789) + (4.567890123)
-ok 166 - decimal(1.23456789) - decimal(4.567890123)
-ok 167 - decimal((1.23456789) - (4.567890123))
-ok 168 - decimal(1.23456789) - decimal(4.567890123) == (1.23456789) - (4.567890123)
-ok 169 - decimal(1.23456789) * decimal(4.567890123)
-ok 170 - decimal((1.23456789) * (4.567890123))
-ok 171 - decimal_round((1.23456789) * (4.567890123), 15)
-ok 172 - decimal(1.23456789) * decimal(4.567890123) == (1.23456789) * (4.567890123)
-ok 173 - decimal(1.23456789) / decimal(4.567890123)
-ok 174 - decimal((1.23456789) / (4.567890123))
-ok 175 - decimal_round((1.23456789)/(4.567890123), 15)
-ok 176 - decimal(1.23456789) / decimal(4.567890123) == (1.23456789) / (4.567890123)
-ok 177 - decimal_from_string(1e-38)
-ok 178 - decimal_from_string(1e-38)
-ok 179 - decimal_from_string(2e-38)
-ok 180 - decimal_add(1e-38, 1e-38)
-ok 181 - decimal_compare(2e-38)
-ok 182 - decimal_from_string(-1e-38)
-ok 183 - decimal_from_string(1e-38)
-ok 184 - decimal_from_string(0)
-ok 185 - decimal_add(-1e-38, 1e-38)
-ok 186 - decimal_compare(0)
-ok 187 - decimal_from_string(1e-39)
-ok 188 - decimal_from_string(0)
-ok 189 - decimal_from_string(0)
-ok 190 - decimal_add(1e-39, 0)
-ok 191 - decimal_compare(0)
-ok 192 - decimal_from_string(1e-39)
-ok 193 - decimal_from_string(1e-38)
-ok 194 - decimal_from_string(1e-38)
-ok 195 - decimal_add(1e-39, 1e-38)
-ok 196 - decimal_compare(1e-38)
-ok 197 - decimal_from_string(1e-19)
-ok 198 - decimal_from_string(1e-19)
-ok 199 - decimal_from_string(1e-38)
-ok 200 - decimal_mul(1e-19, 1e-19)
-ok 201 - decimal_compare(1e-38)
-ok 202 - decimal_from_string(1e37)
-ok 203 - decimal_from_string(0)
-ok 204 - decimal_from_string(1e37)
-ok 205 - decimal_add(1e37, 0)
-ok 206 - decimal_compare(1e37)
-ok 207 - decimal_from_string(1e18)
-ok 208 - decimal_from_string(1e18)
-ok 209 - decimal_from_string(1e36)
-ok 210 - decimal_mul(1e18, 1e18)
-ok 211 - decimal_compare(1e36)
-ok 212 - decimal_from_string(10)
-ok 213 - decimal_from_string(2)
-ok 214 - decimal_from_string(100)
-ok 215 - decimal_pow(10, 2)
-ok 216 - decimal_compare(100)
-ok 217 - decimal_from_string(2)
-ok 218 - decimal_from_string(10)
-ok 219 - decimal_from_string(1024)
-ok 220 - decimal_pow(2, 10)
-ok 221 - decimal_compare(1024)
-ok 222 - decimal_from_string(100)
-ok 223 - decimal_from_string(0.5)
-ok 224 - decimal_from_string(10)
-ok 225 - decimal_pow(100, 0.5)
-ok 226 - decimal_compare(10)
-ok 227 - decimal_from_string(100)
-ok 228 - decimal_from_string(2)
-ok 229 - decimal_log10(100)
-ok 230 - decimal_compare(2)
-ok 231 - decimal_from_string(10)
-ok 232 - decimal_from_string(2.3)
-ok 233 - decimal_ln(10)
-ok 234 - decimal_compare(2.3)
-ok 235 - decimal_from_string(1.1)
-ok 236 - decimal_from_string(0.1)
-ok 237 - decimal_ln(1.1)
-ok 238 - decimal_compare(0.1)
-ok 239 - decimal_from_string(1.0000000000000000000000000000000000001)
-ok 240 - decimal_from_string(0.0000000000000000000000000000000000001)
-ok 241 - decimal_ln(1.0000000000000000000000000000000000001)
-ok 242 - decimal_compare(0.0000000000000000000000000000000000001)
-ok 243 - decimal_from_string(2)
-ok 244 - decimal_from_string(7.39)
-ok 245 - decimal_exp(2)
-ok 246 - decimal_compare(7.39)
-ok 247 - decimal_from_string(100)
-ok 248 - decimal_from_string(10)
-ok 249 - decimal_sqrt(100)
-ok 250 - decimal_compare(10)
-ok 251 - decimal construction from 2e38 failure
-ok 252 - decimal construction from "1e38" failure
-ok 253 - decimal construction from "100000000000000000000000000000000000000" failure
-ok 254 - decimal construction from "inf" failure
-ok 255 - decimal construction from "NaN" failure
-ok 256 - decimal construction from "a random string" failure
-ok 257 - decimal construction from LONG_MIN success
-ok 258 - decimal construction from LONG_MAX success
-ok 259 - decimal construction from ULONG_MAX success
-ok 260 - decimal_from_string(9e37)
-ok 261 - decimal_from_string(1e37)
-ok 262 - decimal_add(9e37, 1e37) - overflow
-ok 263 - decimal_from_string(1e19)
-ok 264 - decimal_from_string(1e19)
-ok 265 - decimal_mul(1e19, 1e19) - overflow
-ok 266 - decimal_from_string(1e19)
-ok 267 - decimal_from_string(1e-19)
-ok 268 - decimal_div(1e19, 1e-19) - overflow
-ok 269 - decimal_from_string(0)
-ok 270 - decimal_ln(0) - error on wrong operands.
-ok 271 - decimal_from_string(-1)
-ok 272 - decimal_ln(-1) - error on wrong operands.
-ok 273 - decimal_from_string(0)
-ok 274 - decimal_log10(0) - error on wrong operands.
-ok 275 - decimal_from_string(-1)
-ok 276 - decimal_log10(-1) - error on wrong operands.
-ok 277 - decimal_from_string(-10)
-ok 278 - decimal_sqrt(-10) - error on wrong operands.
-    1..66
-    ok 1 - Conversion of 18446744073709551615 to decimal and back to uint64 successful
-    ok 2 - Conversion back to uint64 correct
-    ok 3 - Conversion of 9223372036854775807 to decimal and back to int64 successful
-    ok 4 - Conversion back to int64 correct
-    ok 5 - Conversion of -9223372036854775808 to decimal and back to int64 successful
-    ok 6 - Conversion back to int64 correct
-    ok 7 - Conversion of 0 to decimal and back to uint64 successful
-    ok 8 - Conversion back to uint64 correct
-    ok 9 - Conversion of 0 to decimal and back to int64 successful
-    ok 10 - Conversion back to int64 correct
-    ok 11 - Conversion of -1 to decimal and back to int64 successful
-    ok 12 - Conversion back to int64 correct
-    ok 13 - Conversion of 117495185182863386 to decimal and back to uint64 successful
-    ok 14 - Conversion back to uint64 correct
-    ok 15 - Conversion of 58747592591431693 to decimal and back to int64 successful
-    ok 16 - Conversion back to int64 correct
-    ok 17 - Conversion of -58747592591431693 to decimal and back to int64 successful
-    ok 18 - Conversion back to int64 correct
-    ok 19 - Conversion of 778113809158035 to decimal and back to uint64 successful
-    ok 20 - Conversion back to uint64 correct
-    ok 21 - Conversion of 389056904579017 to decimal and back to int64 successful
-    ok 22 - Conversion back to int64 correct
-    ok 23 - Conversion of -389056904579017 to decimal and back to int64 successful
-    ok 24 - Conversion back to int64 correct
-    ok 25 - Conversion of 5222240329919 to decimal and back to uint64 successful
-    ok 26 - Conversion back to uint64 correct
-    ok 27 - Conversion of 2611120164959 to decimal and back to int64 successful
-    ok 28 - Conversion back to int64 correct
-    ok 29 - Conversion of -2611120164959 to decimal and back to int64 successful
-    ok 30 - Conversion back to int64 correct
-    ok 31 - Conversion of 37570074315 to decimal and back to uint64 successful
-    ok 32 - Conversion back to uint64 correct
-    ok 33 - Conversion of 18785037157 to decimal and back to int64 successful
-    ok 34 - Conversion back to int64 correct
-    ok 35 - Conversion of -18785037157 to decimal and back to int64 successful
-    ok 36 - Conversion back to int64 correct
-    ok 37 - Conversion of 274234119 to decimal and back to uint64 successful
-    ok 38 - Conversion back to uint64 correct
-    ok 39 - Conversion of 137996015 to decimal and back to int64 successful
-    ok 40 - Conversion back to int64 correct
-    ok 41 - Conversion of -137996015 to decimal and back to int64 successful
-    ok 42 - Conversion back to int64 correct
-    ok 43 - Conversion of 4294967295 to decimal and back to uint64 successful
-    ok 44 - Conversion back to uint64 correct
-    ok 45 - Conversion of 2147483647 to decimal and back to int64 successful
-    ok 46 - Conversion back to int64 correct
-    ok 47 - Conversion of -2147483648 to decimal and back to int64 successful
-    ok 48 - Conversion back to int64 correct
-    ok 49 - Conversion of 27356479 to decimal and back to uint64 successful
-    ok 50 - Conversion back to uint64 correct
-    ok 51 - Conversion of 13678239 to decimal and back to int64 successful
-    ok 52 - Conversion back to int64 correct
-    ok 53 - Conversion of -13678239 to decimal and back to int64 successful
-    ok 54 - Conversion back to int64 correct
-    ok 55 - Conversion of 181168 to decimal and back to uint64 successful
-    ok 56 - Conversion back to uint64 correct
-    ok 57 - Conversion of 90584 to decimal and back to int64 successful
-    ok 58 - Conversion back to int64 correct
-    ok 59 - Conversion of -90584 to decimal and back to int64 successful
-    ok 60 - Conversion back to int64 correct
-    ok 61 - Conversion of 1215 to decimal and back to uint64 successful
-    ok 62 - Conversion back to uint64 correct
-    ok 63 - Conversion of 607 to decimal and back to int64 successful
-    ok 64 - Conversion back to int64 correct
-    ok 65 - Conversion of -607 to decimal and back to int64 successful
-    ok 66 - Conversion back to int64 correct
-ok 279 - subtests
-    1..151
-    ok 1 - decimal_len(0)
-    ok 2 - decimal_len(0) == len(decimal_pack(0)
-    ok 3 - decimal_unpack(decimal_pack(0))
-    ok 4 - decimal_unpack(decimal_pack(0)) len
-    ok 5 - decimal_unpack(decimal_pack(0)) value
-    ok 6 - decimal_unpack(decimal_pack(0)) scale
-    ok 7 - decimal_unpack(decimal_pack(0)) precision
-    ok 8 - str(decimal_unpack(decimal_pack(0)) == 0
-    ok 9 - decimal_len(-0)
-    ok 10 - decimal_len(-0) == len(decimal_pack(-0)
-    ok 11 - decimal_unpack(decimal_pack(-0))
-    ok 12 - decimal_unpack(decimal_pack(-0)) len
-    ok 13 - decimal_unpack(decimal_pack(-0)) value
-    ok 14 - decimal_unpack(decimal_pack(-0)) scale
-    ok 15 - decimal_unpack(decimal_pack(-0)) precision
-    ok 16 - str(decimal_unpack(decimal_pack(-0)) == -0
-    ok 17 - decimal_len(1)
-    ok 18 - decimal_len(1) == len(decimal_pack(1)
-    ok 19 - decimal_unpack(decimal_pack(1))
-    ok 20 - decimal_unpack(decimal_pack(1)) len
-    ok 21 - decimal_unpack(decimal_pack(1)) value
-    ok 22 - decimal_unpack(decimal_pack(1)) scale
-    ok 23 - decimal_unpack(decimal_pack(1)) precision
-    ok 24 - str(decimal_unpack(decimal_pack(1)) == 1
-    ok 25 - decimal_len(-1)
-    ok 26 - decimal_len(-1) == len(decimal_pack(-1)
-    ok 27 - decimal_unpack(decimal_pack(-1))
-    ok 28 - decimal_unpack(decimal_pack(-1)) len
-    ok 29 - decimal_unpack(decimal_pack(-1)) value
-    ok 30 - decimal_unpack(decimal_pack(-1)) scale
-    ok 31 - decimal_unpack(decimal_pack(-1)) precision
-    ok 32 - str(decimal_unpack(decimal_pack(-1)) == -1
-    ok 33 - decimal_len(0.1)
-    ok 34 - decimal_len(0.1) == len(decimal_pack(0.1)
-    ok 35 - decimal_unpack(decimal_pack(0.1))
-    ok 36 - decimal_unpack(decimal_pack(0.1)) len
-    ok 37 - decimal_unpack(decimal_pack(0.1)) value
-    ok 38 - decimal_unpack(decimal_pack(0.1)) scale
-    ok 39 - decimal_unpack(decimal_pack(0.1)) precision
-    ok 40 - str(decimal_unpack(decimal_pack(0.1)) == 0.1
-    ok 41 - decimal_len(-0.1)
-    ok 42 - decimal_len(-0.1) == len(decimal_pack(-0.1)
-    ok 43 - decimal_unpack(decimal_pack(-0.1))
-    ok 44 - decimal_unpack(decimal_pack(-0.1)) len
-    ok 45 - decimal_unpack(decimal_pack(-0.1)) value
-    ok 46 - decimal_unpack(decimal_pack(-0.1)) scale
-    ok 47 - decimal_unpack(decimal_pack(-0.1)) precision
-    ok 48 - str(decimal_unpack(decimal_pack(-0.1)) == -0.1
-    ok 49 - decimal_len(2.718281828459045)
-    ok 50 - decimal_len(2.718281828459045) == len(decimal_pack(2.718281828459045)
-    ok 51 - decimal_unpack(decimal_pack(2.718281828459045))
-    ok 52 - decimal_unpack(decimal_pack(2.718281828459045)) len
-    ok 53 - decimal_unpack(decimal_pack(2.718281828459045)) value
-    ok 54 - decimal_unpack(decimal_pack(2.718281828459045)) scale
-    ok 55 - decimal_unpack(decimal_pack(2.718281828459045)) precision
-    ok 56 - str(decimal_unpack(decimal_pack(2.718281828459045)) == 2.718281828459045
-    ok 57 - decimal_len(-2.718281828459045)
-    ok 58 - decimal_len(-2.718281828459045) == len(decimal_pack(-2.718281828459045)
-    ok 59 - decimal_unpack(decimal_pack(-2.718281828459045))
-    ok 60 - decimal_unpack(decimal_pack(-2.718281828459045)) len
-    ok 61 - decimal_unpack(decimal_pack(-2.718281828459045)) value
-    ok 62 - decimal_unpack(decimal_pack(-2.718281828459045)) scale
-    ok 63 - decimal_unpack(decimal_pack(-2.718281828459045)) precision
-    ok 64 - str(decimal_unpack(decimal_pack(-2.718281828459045)) == -2.718281828459045
-    ok 65 - decimal_len(3.141592653589793)
-    ok 66 - decimal_len(3.141592653589793) == len(decimal_pack(3.141592653589793)
-    ok 67 - decimal_unpack(decimal_pack(3.141592653589793))
-    ok 68 - decimal_unpack(decimal_pack(3.141592653589793)) len
-    ok 69 - decimal_unpack(decimal_pack(3.141592653589793)) value
-    ok 70 - decimal_unpack(decimal_pack(3.141592653589793)) scale
-    ok 71 - decimal_unpack(decimal_pack(3.141592653589793)) precision
-    ok 72 - str(decimal_unpack(decimal_pack(3.141592653589793)) == 3.141592653589793
-    ok 73 - decimal_len(-3.141592653589793)
-    ok 74 - decimal_len(-3.141592653589793) == len(decimal_pack(-3.141592653589793)
-    ok 75 - decimal_unpack(decimal_pack(-3.141592653589793))
-    ok 76 - decimal_unpack(decimal_pack(-3.141592653589793)) len
-    ok 77 - decimal_unpack(decimal_pack(-3.141592653589793)) value
-    ok 78 - decimal_unpack(decimal_pack(-3.141592653589793)) scale
-    ok 79 - decimal_unpack(decimal_pack(-3.141592653589793)) precision
-    ok 80 - str(decimal_unpack(decimal_pack(-3.141592653589793)) == -3.141592653589793
-    ok 81 - decimal_len(1234567891234567890.0987654321987654321)
-    ok 82 - decimal_len(1234567891234567890.0987654321987654321) == len(decimal_pack(1234567891234567890.0987654321987654321)
-    ok 83 - decimal_unpack(decimal_pack(1234567891234567890.0987654321987654321))
-    ok 84 - decimal_unpack(decimal_pack(1234567891234567890.0987654321987654321)) len
-    ok 85 - decimal_unpack(decimal_pack(1234567891234567890.0987654321987654321)) value
-    ok 86 - decimal_unpack(decimal_pack(1234567891234567890.0987654321987654321)) scale
-    ok 87 - decimal_unpack(decimal_pack(1234567891234567890.0987654321987654321)) precision
-    ok 88 - str(decimal_unpack(decimal_pack(1234567891234567890.0987654321987654321)) == 1234567891234567890.0987654321987654321
-    ok 89 - decimal_len(-1234567891234567890.0987654321987654321)
-    ok 90 - decimal_len(-1234567891234567890.0987654321987654321) == len(decimal_pack(-1234567891234567890.0987654321987654321)
-    ok 91 - decimal_unpack(decimal_pack(-1234567891234567890.0987654321987654321))
-    ok 92 - decimal_unpack(decimal_pack(-1234567891234567890.0987654321987654321)) len
-    ok 93 - decimal_unpack(decimal_pack(-1234567891234567890.0987654321987654321)) value
-    ok 94 - decimal_unpack(decimal_pack(-1234567891234567890.0987654321987654321)) scale
-    ok 95 - decimal_unpack(decimal_pack(-1234567891234567890.0987654321987654321)) precision
-    ok 96 - str(decimal_unpack(decimal_pack(-1234567891234567890.0987654321987654321)) == -1234567891234567890.0987654321987654321
-    ok 97 - decimal_len(0.0000000000000000000000000000000000001)
-    ok 98 - decimal_len(0.0000000000000000000000000000000000001) == len(decimal_pack(0.0000000000000000000000000000000000001)
-    ok 99 - decimal_unpack(decimal_pack(0.0000000000000000000000000000000000001))
-    ok 100 - decimal_unpack(decimal_pack(0.0000000000000000000000000000000000001)) len
-    ok 101 - decimal_unpack(decimal_pack(0.0000000000000000000000000000000000001)) value
-    ok 102 - decimal_unpack(decimal_pack(0.0000000000000000000000000000000000001)) scale
-    ok 103 - decimal_unpack(decimal_pack(0.0000000000000000000000000000000000001)) precision
-    ok 104 - str(decimal_unpack(decimal_pack(0.0000000000000000000000000000000000001)) == 0.0000000000000000000000000000000000001
-    ok 105 - decimal_len(-0.0000000000000000000000000000000000001)
-    ok 106 - decimal_len(-0.0000000000000000000000000000000000001) == len(decimal_pack(-0.0000000000000000000000000000000000001)
-    ok 107 - decimal_unpack(decimal_pack(-0.0000000000000000000000000000000000001))
-    ok 108 - decimal_unpack(decimal_pack(-0.0000000000000000000000000000000000001)) len
-    ok 109 - decimal_unpack(decimal_pack(-0.0000000000000000000000000000000000001)) value
-    ok 110 - decimal_unpack(decimal_pack(-0.0000000000000000000000000000000000001)) scale
-    ok 111 - decimal_unpack(decimal_pack(-0.0000000000000000000000000000000000001)) precision
-    ok 112 - str(decimal_unpack(decimal_pack(-0.0000000000000000000000000000000000001)) == -0.0000000000000000000000000000000000001
-    ok 113 - decimal_len(0.00000000000000000000000000000000000001)
-    ok 114 - decimal_len(0.00000000000000000000000000000000000001) == len(decimal_pack(0.00000000000000000000000000000000000001)
-    ok 115 - decimal_unpack(decimal_pack(0.00000000000000000000000000000000000001))
-    ok 116 - decimal_unpack(decimal_pack(0.00000000000000000000000000000000000001)) len
-    ok 117 - decimal_unpack(decimal_pack(0.00000000000000000000000000000000000001)) value
-    ok 118 - decimal_unpack(decimal_pack(0.00000000000000000000000000000000000001)) scale
-    ok 119 - decimal_unpack(decimal_pack(0.00000000000000000000000000000000000001)) precision
-    ok 120 - str(decimal_unpack(decimal_pack(0.00000000000000000000000000000000000001)) == 0.00000000000000000000000000000000000001
-    ok 121 - decimal_len(-0.00000000000000000000000000000000000001)
-    ok 122 - decimal_len(-0.00000000000000000000000000000000000001) == len(decimal_pack(-0.00000000000000000000000000000000000001)
-    ok 123 - decimal_unpack(decimal_pack(-0.00000000000000000000000000000000000001))
-    ok 124 - decimal_unpack(decimal_pack(-0.00000000000000000000000000000000000001)) len
-    ok 125 - decimal_unpack(decimal_pack(-0.00000000000000000000000000000000000001)) value
-    ok 126 - decimal_unpack(decimal_pack(-0.00000000000000000000000000000000000001)) scale
-    ok 127 - decimal_unpack(decimal_pack(-0.00000000000000000000000000000000000001)) precision
-    ok 128 - str(decimal_unpack(decimal_pack(-0.00000000000000000000000000000000000001)) == -0.00000000000000000000000000000000000001
-    ok 129 - decimal_len(99999999999999999999999999999999999999)
-    ok 130 - decimal_len(99999999999999999999999999999999999999) == len(decimal_pack(99999999999999999999999999999999999999)
-    ok 131 - decimal_unpack(decimal_pack(99999999999999999999999999999999999999))
-    ok 132 - decimal_unpack(decimal_pack(99999999999999999999999999999999999999)) len
-    ok 133 - decimal_unpack(decimal_pack(99999999999999999999999999999999999999)) value
-    ok 134 - decimal_unpack(decimal_pack(99999999999999999999999999999999999999)) scale
-    ok 135 - decimal_unpack(decimal_pack(99999999999999999999999999999999999999)) precision
-    ok 136 - str(decimal_unpack(decimal_pack(99999999999999999999999999999999999999)) == 99999999999999999999999999999999999999
-    ok 137 - decimal_len(-99999999999999999999999999999999999999)
-    ok 138 - decimal_len(-99999999999999999999999999999999999999) == len(decimal_pack(-99999999999999999999999999999999999999)
-    ok 139 - decimal_unpack(decimal_pack(-99999999999999999999999999999999999999))
-    ok 140 - decimal_unpack(decimal_pack(-99999999999999999999999999999999999999)) len
-    ok 141 - decimal_unpack(decimal_pack(-99999999999999999999999999999999999999)) value
-    ok 142 - decimal_unpack(decimal_pack(-99999999999999999999999999999999999999)) scale
-    ok 143 - decimal_unpack(decimal_pack(-99999999999999999999999999999999999999)) precision
-    ok 144 - str(decimal_unpack(decimal_pack(-99999999999999999999999999999999999999)) == -99999999999999999999999999999999999999
-    ok 145 - decimal_len() is small for positive exponent decimal
-    ok 146 - positive exponent decimal length
-    ok 147 - decimal_unpack() of a positive exponent decimal
-    ok 148 - decimal_unpack uses every byte packed by decimal_pack
-    ok 149 - positive exponent number is packed/unpacked correctly
-    ok 150 - unpack malformed decimal fails
-    ok 151 - decode malformed decimal preserves buffer position
-ok 280 - subtests
-    1..198
-    ok 1 - mp_sizeof_decimal(0)
-    ok 2 - mp_sizeof_decimal(0) == len(mp_encode_decimal(0))
-    ok 3 - mp_next(mp_encode(0))
-    ok 4 - mp_decode(mp_encode(0) len
-    ok 5 - mp_decode(mp_encode(0)) value
-    ok 6 - mp_decode(mp_encode(0)) scale
-    ok 7 - str(mp_decode(mp_encode(0))) == 0
-    ok 8 - mp_ext_type is MP_DECIMAL
-    ok 9 - decimal_unpack() after mp_decode_extl()
-    ok 10 - decimal_unpack() after mp_decode_extl() value
-    ok 11 - decimal_unpack() after mp_decode_extl() len
-    ok 12 - mp_sizeof_decimal(-0)
-    ok 13 - mp_sizeof_decimal(-0) == len(mp_encode_decimal(-0))
-    ok 14 - mp_next(mp_encode(-0))
-    ok 15 - mp_decode(mp_encode(-0) len
-    ok 16 - mp_decode(mp_encode(-0)) value
-    ok 17 - mp_decode(mp_encode(-0)) scale
-    ok 18 - str(mp_decode(mp_encode(-0))) == -0
-    ok 19 - mp_ext_type is MP_DECIMAL
-    ok 20 - decimal_unpack() after mp_decode_extl()
-    ok 21 - decimal_unpack() after mp_decode_extl() value
-    ok 22 - decimal_unpack() after mp_decode_extl() len
-    ok 23 - mp_sizeof_decimal(1)
-    ok 24 - mp_sizeof_decimal(1) == len(mp_encode_decimal(1))
-    ok 25 - mp_next(mp_encode(1))
-    ok 26 - mp_decode(mp_encode(1) len
-    ok 27 - mp_decode(mp_encode(1)) value
-    ok 28 - mp_decode(mp_encode(1)) scale
-    ok 29 - str(mp_decode(mp_encode(1))) == 1
-    ok 30 - mp_ext_type is MP_DECIMAL
-    ok 31 - decimal_unpack() after mp_decode_extl()
-    ok 32 - decimal_unpack() after mp_decode_extl() value
-    ok 33 - decimal_unpack() after mp_decode_extl() len
-    ok 34 - mp_sizeof_decimal(-1)
-    ok 35 - mp_sizeof_decimal(-1) == len(mp_encode_decimal(-1))
-    ok 36 - mp_next(mp_encode(-1))
-    ok 37 - mp_decode(mp_encode(-1) len
-    ok 38 - mp_decode(mp_encode(-1)) value
-    ok 39 - mp_decode(mp_encode(-1)) scale
-    ok 40 - str(mp_decode(mp_encode(-1))) == -1
-    ok 41 - mp_ext_type is MP_DECIMAL
-    ok 42 - decimal_unpack() after mp_decode_extl()
-    ok 43 - decimal_unpack() after mp_decode_extl() value
-    ok 44 - decimal_unpack() after mp_decode_extl() len
-    ok 45 - mp_sizeof_decimal(0.1)
-    ok 46 - mp_sizeof_decimal(0.1) == len(mp_encode_decimal(0.1))
-    ok 47 - mp_next(mp_encode(0.1))
-    ok 48 - mp_decode(mp_encode(0.1) len
-    ok 49 - mp_decode(mp_encode(0.1)) value
-    ok 50 - mp_decode(mp_encode(0.1)) scale
-    ok 51 - str(mp_decode(mp_encode(0.1))) == 0.1
-    ok 52 - mp_ext_type is MP_DECIMAL
-    ok 53 - decimal_unpack() after mp_decode_extl()
-    ok 54 - decimal_unpack() after mp_decode_extl() value
-    ok 55 - decimal_unpack() after mp_decode_extl() len
-    ok 56 - mp_sizeof_decimal(-0.1)
-    ok 57 - mp_sizeof_decimal(-0.1) == len(mp_encode_decimal(-0.1))
-    ok 58 - mp_next(mp_encode(-0.1))
-    ok 59 - mp_decode(mp_encode(-0.1) len
-    ok 60 - mp_decode(mp_encode(-0.1)) value
-    ok 61 - mp_decode(mp_encode(-0.1)) scale
-    ok 62 - str(mp_decode(mp_encode(-0.1))) == -0.1
-    ok 63 - mp_ext_type is MP_DECIMAL
-    ok 64 - decimal_unpack() after mp_decode_extl()
-    ok 65 - decimal_unpack() after mp_decode_extl() value
-    ok 66 - decimal_unpack() after mp_decode_extl() len
-    ok 67 - mp_sizeof_decimal(2.718281828459045)
-    ok 68 - mp_sizeof_decimal(2.718281828459045) == len(mp_encode_decimal(2.718281828459045))
-    ok 69 - mp_next(mp_encode(2.718281828459045))
-    ok 70 - mp_decode(mp_encode(2.718281828459045) len
-    ok 71 - mp_decode(mp_encode(2.718281828459045)) value
-    ok 72 - mp_decode(mp_encode(2.718281828459045)) scale
-    ok 73 - str(mp_decode(mp_encode(2.718281828459045))) == 2.718281828459045
-    ok 74 - mp_ext_type is MP_DECIMAL
-    ok 75 - decimal_unpack() after mp_decode_extl()
-    ok 76 - decimal_unpack() after mp_decode_extl() value
-    ok 77 - decimal_unpack() after mp_decode_extl() len
-    ok 78 - mp_sizeof_decimal(-2.718281828459045)
-    ok 79 - mp_sizeof_decimal(-2.718281828459045) == len(mp_encode_decimal(-2.718281828459045))
-    ok 80 - mp_next(mp_encode(-2.718281828459045))
-    ok 81 - mp_decode(mp_encode(-2.718281828459045) len
-    ok 82 - mp_decode(mp_encode(-2.718281828459045)) value
-    ok 83 - mp_decode(mp_encode(-2.718281828459045)) scale
-    ok 84 - str(mp_decode(mp_encode(-2.718281828459045))) == -2.718281828459045
-    ok 85 - mp_ext_type is MP_DECIMAL
-    ok 86 - decimal_unpack() after mp_decode_extl()
-    ok 87 - decimal_unpack() after mp_decode_extl() value
-    ok 88 - decimal_unpack() after mp_decode_extl() len
-    ok 89 - mp_sizeof_decimal(3.141592653589793)
-    ok 90 - mp_sizeof_decimal(3.141592653589793) == len(mp_encode_decimal(3.141592653589793))
-    ok 91 - mp_next(mp_encode(3.141592653589793))
-    ok 92 - mp_decode(mp_encode(3.141592653589793) len
-    ok 93 - mp_decode(mp_encode(3.141592653589793)) value
-    ok 94 - mp_decode(mp_encode(3.141592653589793)) scale
-    ok 95 - str(mp_decode(mp_encode(3.141592653589793))) == 3.141592653589793
-    ok 96 - mp_ext_type is MP_DECIMAL
-    ok 97 - decimal_unpack() after mp_decode_extl()
-    ok 98 - decimal_unpack() after mp_decode_extl() value
-    ok 99 - decimal_unpack() after mp_decode_extl() len
-    ok 100 - mp_sizeof_decimal(-3.141592653589793)
-    ok 101 - mp_sizeof_decimal(-3.141592653589793) == len(mp_encode_decimal(-3.141592653589793))
-    ok 102 - mp_next(mp_encode(-3.141592653589793))
-    ok 103 - mp_decode(mp_encode(-3.141592653589793) len
-    ok 104 - mp_decode(mp_encode(-3.141592653589793)) value
-    ok 105 - mp_decode(mp_encode(-3.141592653589793)) scale
-    ok 106 - str(mp_decode(mp_encode(-3.141592653589793))) == -3.141592653589793
-    ok 107 - mp_ext_type is MP_DECIMAL
-    ok 108 - decimal_unpack() after mp_decode_extl()
-    ok 109 - decimal_unpack() after mp_decode_extl() value
-    ok 110 - decimal_unpack() after mp_decode_extl() len
-    ok 111 - mp_sizeof_decimal(1234567891234567890.0987654321987654321)
-    ok 112 - mp_sizeof_decimal(1234567891234567890.0987654321987654321) == len(mp_encode_decimal(1234567891234567890.0987654321987654321))
-    ok 113 - mp_next(mp_encode(1234567891234567890.0987654321987654321))
-    ok 114 - mp_decode(mp_encode(1234567891234567890.0987654321987654321) len
-    ok 115 - mp_decode(mp_encode(1234567891234567890.0987654321987654321)) value
-    ok 116 - mp_decode(mp_encode(1234567891234567890.0987654321987654321)) scale
-    ok 117 - str(mp_decode(mp_encode(1234567891234567890.0987654321987654321))) == 1234567891234567890.0987654321987654321
-    ok 118 - mp_ext_type is MP_DECIMAL
-    ok 119 - decimal_unpack() after mp_decode_extl()
-    ok 120 - decimal_unpack() after mp_decode_extl() value
-    ok 121 - decimal_unpack() after mp_decode_extl() len
-    ok 122 - mp_sizeof_decimal(-1234567891234567890.0987654321987654321)
-    ok 123 - mp_sizeof_decimal(-1234567891234567890.0987654321987654321) == len(mp_encode_decimal(-1234567891234567890.0987654321987654321))
-    ok 124 - mp_next(mp_encode(-1234567891234567890.0987654321987654321))
-    ok 125 - mp_decode(mp_encode(-1234567891234567890.0987654321987654321) len
-    ok 126 - mp_decode(mp_encode(-1234567891234567890.0987654321987654321)) value
-    ok 127 - mp_decode(mp_encode(-1234567891234567890.0987654321987654321)) scale
-    ok 128 - str(mp_decode(mp_encode(-1234567891234567890.0987654321987654321))) == -1234567891234567890.0987654321987654321
-    ok 129 - mp_ext_type is MP_DECIMAL
-    ok 130 - decimal_unpack() after mp_decode_extl()
-    ok 131 - decimal_unpack() after mp_decode_extl() value
-    ok 132 - decimal_unpack() after mp_decode_extl() len
-    ok 133 - mp_sizeof_decimal(0.0000000000000000000000000000000000001)
-    ok 134 - mp_sizeof_decimal(0.0000000000000000000000000000000000001) == len(mp_encode_decimal(0.0000000000000000000000000000000000001))
-    ok 135 - mp_next(mp_encode(0.0000000000000000000000000000000000001))
-    ok 136 - mp_decode(mp_encode(0.0000000000000000000000000000000000001) len
-    ok 137 - mp_decode(mp_encode(0.0000000000000000000000000000000000001)) value
-    ok 138 - mp_decode(mp_encode(0.0000000000000000000000000000000000001)) scale
-    ok 139 - str(mp_decode(mp_encode(0.0000000000000000000000000000000000001))) == 0.0000000000000000000000000000000000001
-    ok 140 - mp_ext_type is MP_DECIMAL
-    ok 141 - decimal_unpack() after mp_decode_extl()
-    ok 142 - decimal_unpack() after mp_decode_extl() value
-    ok 143 - decimal_unpack() after mp_decode_extl() len
-    ok 144 - mp_sizeof_decimal(-0.0000000000000000000000000000000000001)
-    ok 145 - mp_sizeof_decimal(-0.0000000000000000000000000000000000001) == len(mp_encode_decimal(-0.0000000000000000000000000000000000001))
-    ok 146 - mp_next(mp_encode(-0.0000000000000000000000000000000000001))
-    ok 147 - mp_decode(mp_encode(-0.0000000000000000000000000000000000001) len
-    ok 148 - mp_decode(mp_encode(-0.0000000000000000000000000000000000001)) value
-    ok 149 - mp_decode(mp_encode(-0.0000000000000000000000000000000000001)) scale
-    ok 150 - str(mp_decode(mp_encode(-0.0000000000000000000000000000000000001))) == -0.0000000000000000000000000000000000001
-    ok 151 - mp_ext_type is MP_DECIMAL
-    ok 152 - decimal_unpack() after mp_decode_extl()
-    ok 153 - decimal_unpack() after mp_decode_extl() value
-    ok 154 - decimal_unpack() after mp_decode_extl() len
-    ok 155 - mp_sizeof_decimal(0.00000000000000000000000000000000000001)
-    ok 156 - mp_sizeof_decimal(0.00000000000000000000000000000000000001) == len(mp_encode_decimal(0.00000000000000000000000000000000000001))
-    ok 157 - mp_next(mp_encode(0.00000000000000000000000000000000000001))
-    ok 158 - mp_decode(mp_encode(0.00000000000000000000000000000000000001) len
-    ok 159 - mp_decode(mp_encode(0.00000000000000000000000000000000000001)) value
-    ok 160 - mp_decode(mp_encode(0.00000000000000000000000000000000000001)) scale
-    ok 161 - str(mp_decode(mp_encode(0.00000000000000000000000000000000000001))) == 0.00000000000000000000000000000000000001
-    ok 162 - mp_ext_type is MP_DECIMAL
-    ok 163 - decimal_unpack() after mp_decode_extl()
-    ok 164 - decimal_unpack() after mp_decode_extl() value
-    ok 165 - decimal_unpack() after mp_decode_extl() len
-    ok 166 - mp_sizeof_decimal(-0.00000000000000000000000000000000000001)
-    ok 167 - mp_sizeof_decimal(-0.00000000000000000000000000000000000001) == len(mp_encode_decimal(-0.00000000000000000000000000000000000001))
-    ok 168 - mp_next(mp_encode(-0.00000000000000000000000000000000000001))
-    ok 169 - mp_decode(mp_encode(-0.00000000000000000000000000000000000001) len
-    ok 170 - mp_decode(mp_encode(-0.00000000000000000000000000000000000001)) value
-    ok 171 - mp_decode(mp_encode(-0.00000000000000000000000000000000000001)) scale
-    ok 172 - str(mp_decode(mp_encode(-0.00000000000000000000000000000000000001))) == -0.00000000000000000000000000000000000001
-    ok 173 - mp_ext_type is MP_DECIMAL
-    ok 174 - decimal_unpack() after mp_decode_extl()
-    ok 175 - decimal_unpack() after mp_decode_extl() value
-    ok 176 - decimal_unpack() after mp_decode_extl() len
-    ok 177 - mp_sizeof_decimal(99999999999999999999999999999999999999)
-    ok 178 - mp_sizeof_decimal(99999999999999999999999999999999999999) == len(mp_encode_decimal(99999999999999999999999999999999999999))
-    ok 179 - mp_next(mp_encode(99999999999999999999999999999999999999))
-    ok 180 - mp_decode(mp_encode(99999999999999999999999999999999999999) len
-    ok 181 - mp_decode(mp_encode(99999999999999999999999999999999999999)) value
-    ok 182 - mp_decode(mp_encode(99999999999999999999999999999999999999)) scale
-    ok 183 - str(mp_decode(mp_encode(99999999999999999999999999999999999999))) == 99999999999999999999999999999999999999
-    ok 184 - mp_ext_type is MP_DECIMAL
-    ok 185 - decimal_unpack() after mp_decode_extl()
-    ok 186 - decimal_unpack() after mp_decode_extl() value
-    ok 187 - decimal_unpack() after mp_decode_extl() len
-    ok 188 - mp_sizeof_decimal(-99999999999999999999999999999999999999)
-    ok 189 - mp_sizeof_decimal(-99999999999999999999999999999999999999) == len(mp_encode_decimal(-99999999999999999999999999999999999999))
-    ok 190 - mp_next(mp_encode(-99999999999999999999999999999999999999))
-    ok 191 - mp_decode(mp_encode(-99999999999999999999999999999999999999) len
-    ok 192 - mp_decode(mp_encode(-99999999999999999999999999999999999999)) value
-    ok 193 - mp_decode(mp_encode(-99999999999999999999999999999999999999)) scale
-    ok 194 - str(mp_decode(mp_encode(-99999999999999999999999999999999999999))) == -99999999999999999999999999999999999999
-    ok 195 - mp_ext_type is MP_DECIMAL
-    ok 196 - decimal_unpack() after mp_decode_extl()
-    ok 197 - decimal_unpack() after mp_decode_extl() value
-    ok 198 - decimal_unpack() after mp_decode_extl() len
-ok 281 - subtests
diff --git a/test/unit/fiber.cc b/test/unit/fiber.cc
index b0dfc9b14..e2c885009 100644
--- a/test/unit/fiber.cc
+++ b/test/unit/fiber.cc
@@ -74,6 +74,7 @@ static void
 fiber_join_test()
 {
 	header();
+	plan(1);
 
 	struct fiber *fiber = fiber_new_xc("join", noop_f);
 	fiber_set_joinable(fiber, true);
@@ -98,7 +99,7 @@ fiber_join_test()
 		note("exception propagated");
 	}
 
-	fputs("#gh-1238: log uncaught errors\n", stderr);
+	note("log uncaught errors (gh-1238)");
 	fiber = fiber_new_xc("exception", exception_f);
 	fiber_wakeup(fiber);
 
@@ -123,7 +124,9 @@ fiber_join_test()
 	note("by this time the fiber should be dead already");
 	fiber_cancel(fiber);
 	fiber_join(fiber);
-
+	
+	ok(1, "fiber join test");
+	check_plan();
 	footer();
 }
 
@@ -131,6 +134,7 @@ void
 fiber_stack_test()
 {
 	header();
+	plan(1);
 
 	struct fiber *fiber;
 	struct fiber_attr *fiber_attr;
@@ -158,6 +162,8 @@ fiber_stack_test()
 	fiber_sleep(0);
 	note("big-stack fiber not crashed");
 
+	ok(1, "fiber stack test");
+	check_plan();
 	footer();
 }
 
@@ -165,11 +171,12 @@ void
 fiber_name_test()
 {
 	header();
-	note("name of a new fiber: %s.\n", fiber_name(fiber()));
+	plan(1);
+	note("name of a new fiber: %s", fiber_name(fiber()));
 
 	fiber_set_name(fiber(), "Horace");
 
-	note("set new fiber name: %s.\n", fiber_name(fiber()));
+	note("set new fiber name: %s", fiber_name(fiber()));
 
 	char long_name[FIBER_NAME_MAX + 30];
 	memset(long_name, 'a', sizeof(long_name));
@@ -177,17 +184,21 @@ fiber_name_test()
 
 	fiber_set_name(fiber(), long_name);
 
-	note("fiber name is truncated: %s.\n", fiber_name(fiber()));
+	note("fiber name is truncated: %s", fiber_name(fiber()));
+	ok(1, "fiber name test");
+	check_plan();
 	footer();
 }
 
 static int
 main_f(va_list ap)
 {
+	plan(3);
 	fiber_name_test();
 	fiber_join_test();
 	fiber_stack_test();
 	ev_break(loop(), EVBREAK_ALL);
+	check_plan();
 	return 0;
 }
 
diff --git a/test/unit/fiber.result b/test/unit/fiber.result
deleted file mode 100644
index a61e0a2b8..000000000
--- a/test/unit/fiber.result
+++ /dev/null
@@ -1,19 +0,0 @@
-#gh-1238: log uncaught errors
-SystemError Failed to allocate 42 bytes in allocator for exception: Cannot allocate memory
-	*** fiber_name_test ***
-# name of a new fiber: main.
-
-# set new fiber name: Horace.
-
-# fiber name is truncated: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.
-
-	*** fiber_name_test: done ***
-	*** fiber_join_test ***
-# exception propagated
-# cancel dead has started
-# by this time the fiber should be dead already
-	*** fiber_join_test: done ***
-	*** fiber_stack_test ***
-# normal-stack fiber not crashed
-# big-stack fiber not crashed
-	*** fiber_stack_test: done ***
diff --git a/test/unit/fiber_channel.cc b/test/unit/fiber_channel.cc
index 90c73a581..3b403768a 100644
--- a/test/unit/fiber_channel.cc
+++ b/test/unit/fiber_channel.cc
@@ -90,6 +90,7 @@ main_f(va_list ap)
 
 int main()
 {
+	plan(2);
 	memory_init();
 	fiber_init(fiber_c_invoke);
 	struct fiber *main= fiber_new_xc("main", main_f);
@@ -97,5 +98,6 @@ int main()
 	ev_run(loop(), 0);
 	fiber_free();
 	memory_free();
+	check_plan();
 	return status;
 }
diff --git a/test/unit/fiber_channel.result b/test/unit/fiber_channel.result
deleted file mode 100644
index b03949d8c..000000000
--- a/test/unit/fiber_channel.result
+++ /dev/null
@@ -1,23 +0,0 @@
-	*** fiber_channel_basic ***
-1..10
-ok 1 - fiber_channel_new()
-ok 2 - fiber_channel_size()
-ok 3 - fiber_channel_count()
-ok 4 - fiber_channel_is_full()
-ok 5 - fiber_channel_is_empty()
-ok 6 - fiber_channel_size(1)
-ok 7 - fiber_channel_count(1)
-ok 8 - fiber_channel_is_full(1)
-ok 9 - fiber_channel_is_empty(1)
-ok 10 - fiber_channel_get()
-	*** fiber_channel_basic: done ***
-	*** fiber_channel_get ***
-1..7
-ok 1 - fiber_channel_put(0)
-ok 2 - fiber_channel_put_timeout(0)
-ok 3 - fiber_channel_get(0)
-ok 4 - fiber_channel_put_timeout(1)
-ok 5 - fiber_channel_get(1)
-ok 6 - fiber_channel_put(closed)
-ok 7 - fiber_channel_get(closed)
-	*** fiber_channel_get: done ***
diff --git a/test/unit/fiber_channel_stress.cc b/test/unit/fiber_channel_stress.cc
index 98aec697b..1ac1d8ae5 100644
--- a/test/unit/fiber_channel_stress.cc
+++ b/test/unit/fiber_channel_stress.cc
@@ -50,6 +50,7 @@ main_f(va_list ap)
 
 int main()
 {
+	plan(1);
 	memory_init();
 	fiber_init(fiber_c_invoke);
 	struct fiber *main= fiber_new_xc("main", main_f);
@@ -57,5 +58,7 @@ int main()
 	ev_run(loop(), 0);
 	fiber_free();
 	memory_free();
+	ok(1, "fiber channel stress");
+	check_plan();
 	return 0;
 }
diff --git a/test/unit/fiber_channel_stress.result b/test/unit/fiber_channel_stress.result
deleted file mode 100644
index 7abdb54e0..000000000
--- a/test/unit/fiber_channel_stress.result
+++ /dev/null
@@ -1,2 +0,0 @@
-	*** main_f ***
-	*** main_f: done ***
diff --git a/test/unit/fiber_cond.result b/test/unit/fiber_cond.result
deleted file mode 100644
index 20539e2be..000000000
--- a/test/unit/fiber_cond.result
+++ /dev/null
@@ -1,8 +0,0 @@
-1..7
-ok 1 - timeout
-ok 2 - timeout
-ok 3 - signal
-ok 4 - signal
-ok 5 - order
-ok 6 - broadcast
-ok 7 - broadcast
diff --git a/test/unit/fiber_stack.c b/test/unit/fiber_stack.c
index 41abe3764..3d1fce7ba 100644
--- a/test/unit/fiber_stack.c
+++ b/test/unit/fiber_stack.c
@@ -97,6 +97,8 @@ main_f(va_list ap)
 
 int main()
 {
+	header();
+	plan(1);
 	memory_init();
 	fiber_init(fiber_c_invoke);
 	fiber_attr_create(&default_attr);
@@ -105,5 +107,6 @@ int main()
 	ev_run(loop(), 0);
 	fiber_free();
 	memory_free();
+	check_plan();
 	return 0;
 }
diff --git a/test/unit/fiber_stack.result b/test/unit/fiber_stack.result
deleted file mode 100644
index 7cae4e96c..000000000
--- a/test/unit/fiber_stack.result
+++ /dev/null
@@ -1,11 +0,0 @@
-SystemError fiber mprotect failed: Cannot allocate memory
-fiber: Can't put guard page to slab. Leak 57344 bytes: Cannot allocate memory
-	*** main_f ***
-1..6
-ok 1 - mprotect: failed to setup fiber guard page
-ok 2 - mprotect: diag is armed after error
-ok 3 - madvise: non critical error on madvise hint
-ok 4 - madvise: diag is armed after error
-ok 5 - fiber with custom stack
-ok 6 - expected leak detected
-	*** main_f: done ***
diff --git a/test/unit/fiber_stress.cc b/test/unit/fiber_stress.cc
index 44ab12487..a0baf5fbd 100644
--- a/test/unit/fiber_stress.cc
+++ b/test/unit/fiber_stress.cc
@@ -1,5 +1,6 @@
 #include "memory.h"
 #include "fiber.h"
+#include "unit.h"
 
 enum {
 	ITERATIONS = 50000,
@@ -35,6 +36,7 @@ benchmark_f(va_list ap)
 
 int main()
 {
+	plan(1);
 	memory_init();
 	fiber_init(fiber_cxx_invoke);
 	struct fiber *benchmark = fiber_new_xc("benchmark", benchmark_f);
@@ -42,5 +44,7 @@ int main()
 	ev_run(loop(), 0);
 	fiber_free();
 	memory_free();
+	ok(1, "fiber stress");
+	check_plan();
 	return 0;
 }
diff --git a/test/unit/fiber_stress.result b/test/unit/fiber_stress.result
deleted file mode 100644
index e69de29bb..000000000
diff --git a/test/unit/find_path.c b/test/unit/find_path.c
index 5c6c0a8b6..2d4eb29d7 100644
--- a/test/unit/find_path.c
+++ b/test/unit/find_path.c
@@ -11,6 +11,9 @@ int
 main(int argc, char *argv[])
 {
 	header();
+	plan(1);
 	fail_unless(open(find_path(argv[0]), O_RDONLY) >= 0);
+	ok(1, "find_path");
+	check_plan();
 	footer();
 }
diff --git a/test/unit/find_path.result b/test/unit/find_path.result
deleted file mode 100644
index 8300f0550..000000000
--- a/test/unit/find_path.result
+++ /dev/null
@@ -1,2 +0,0 @@
-	*** main ***
-	*** main: done ***
diff --git a/test/unit/guard.cc b/test/unit/guard.cc
index a2953b829..ddf2e0d87 100644
--- a/test/unit/guard.cc
+++ b/test/unit/guard.cc
@@ -7,7 +7,7 @@ static struct fiber_attr default_attr;
 static void
 sigsegf_handler(int signo)
 {
-	note("signal handler called");
+	ok(1, "signal handler called");
 	exit(0);
 }
 
@@ -53,6 +53,7 @@ main_f(va_list ap)
 
 int main()
 {
+	plan(1);
 	memory_init();
 	fiber_init(fiber_cxx_invoke);
 	fiber_attr_create(&default_attr);
diff --git a/test/unit/guard.result b/test/unit/guard.result
deleted file mode 100644
index bc9889d42..000000000
--- a/test/unit/guard.result
+++ /dev/null
@@ -1 +0,0 @@
-# signal handler called
diff --git a/test/unit/guava.c b/test/unit/guava.c
index 4e3ced76a..4100c6b61 100644
--- a/test/unit/guava.c
+++ b/test/unit/guava.c
@@ -21,12 +21,15 @@ static void
 correctness_check()
 {
 	header();
+	plan(1);
 	int64_t i_vals[] = {0, 1, 2};
 	for (size_t i = 0; i < sizeof(i_vals) / sizeof(int64_t); ++i)
 		check_guava_correctness(i_vals[i]);
 	srand(time(NULL));
 	for (size_t i = 0; i < 20; ++i)
 		check_guava_correctness(rand() % 7);
+	ok(1, "correctness check");
+	check_plan();
 	footer();
 }
 
@@ -34,7 +37,10 @@ static void
 sameresult_check()
 {
 	header();
+	plan(1);
 	fail_if(guava(100, 20) != guava(100, 20));
+	ok(1, "sameresult check");
+	check_plan();
 	footer();
 }
 
@@ -42,6 +48,7 @@ static void
 lcg_compat_check()
 {
 	header();
+	plan(1);
 	int32_t golden100[] = {
 		0, 55, 62, 8, 45, 59, 86, 97, 82, 59,
 		73, 37, 17, 56, 86, 21, 90, 37, 38, 83
@@ -55,13 +62,17 @@ lcg_compat_check()
 	fail_if(80343 != guava(2, 100001));
 	fail_if(22152 != guava(2201, 100001));
 	fail_if(15018 != guava(2202, 100001));
+	ok(1, "lcg compat check");
+	check_plan();
 	footer();
 }
 
 int
 main(void)
 {
+	plan(3);
 	correctness_check();
 	lcg_compat_check();
 	sameresult_check();
+	check_plan();
 }
diff --git a/test/unit/guava.result b/test/unit/guava.result
deleted file mode 100644
index afc3e890f..000000000
--- a/test/unit/guava.result
+++ /dev/null
@@ -1,6 +0,0 @@
-	*** correctness_check ***
-	*** correctness_check: done ***
-	*** lcg_compat_check ***
-	*** lcg_compat_check: done ***
-	*** sameresult_check ***
-	*** sameresult_check: done ***
diff --git a/test/unit/heap.c b/test/unit/heap.c
index 89806c633..a2480b5d4 100644
--- a/test/unit/heap.c
+++ b/test/unit/heap.c
@@ -51,6 +51,7 @@ static void
 test_insert_1_to_3()
 {
 	header();
+	plan(1);
 	struct test_type *value, *root_value;
 	heap_t heap;
 	test_heap_create(&heap);
@@ -73,7 +74,9 @@ test_insert_1_to_3()
 
 	free_all_nodes(&heap);
 	test_heap_destroy(&heap);
+	ok(1, "test insert 1 to 3");
 
+	check_plan();
 	footer();
 }
 
@@ -81,6 +84,7 @@ static void
 test_insert_3_to_1()
 {
 	header();
+	plan(1);
 	struct test_type *value, *root_value;
 	heap_t heap;
 	test_heap_create(&heap);
@@ -103,7 +107,9 @@ test_insert_3_to_1()
 
 	free_all_nodes(&heap);
 	test_heap_destroy(&heap);
+	ok(1, "test insert 3 to 1");
 
+	check_plan();
 	footer();
 }
 
@@ -111,6 +117,7 @@ static void
 test_insert_50_to_150_mod_100()
 {
 	header();
+	plan(1);
 	struct test_type *value, *root_value;
 	heap_t heap;
 	test_heap_create(&heap);
@@ -143,7 +150,9 @@ test_insert_50_to_150_mod_100()
 		free(root_value);
 	}
 	test_heap_destroy(&heap);
+	ok(1, "test insert 50 to 150 mod 100");
 
+	check_plan();
 	footer();
 }
 
@@ -151,6 +160,7 @@ static void
 test_insert_many_random()
 {
 	header();
+	plan(1);
 	uint32_t ans = UINT_MAX;
 	struct test_type *value, *root_value;
 	heap_t heap;
@@ -179,6 +189,8 @@ test_insert_many_random()
 
 	free_all_nodes(&heap);
 	test_heap_destroy(&heap);
+	ok(1, "test insert many random");
+	check_plan();
 	footer();
 }
 
@@ -186,6 +198,7 @@ static void
 test_insert_10_to_1_pop()
 {
 	header();
+	plan(1);
 	struct test_type *value, *root_value;
 	heap_t heap;
 	test_heap_create(&heap);
@@ -221,7 +234,9 @@ test_insert_10_to_1_pop()
 		free(root_value);
 	}
 	test_heap_destroy(&heap);
+	ok(1, "test insert 10 to 1 pop");
 
+	check_plan();
 	footer();
 }
 
@@ -243,6 +258,7 @@ static void
 test_insert_many_pop_many_random()
 {
 	header();
+	plan(1);
 	uint32_t ans = UINT_MAX;
 
 	struct test_type *value, *root_value;
@@ -309,8 +325,10 @@ test_insert_many_pop_many_random()
 		free(root_value);
 	}
 	test_heap_destroy(&heap);
+	ok(1, "test insert many pop many random");
 
 	free(keys);
+	check_plan();
 	footer();
 }
 
@@ -318,6 +336,7 @@ static void
 test_insert_pop_workload()
 {
 	header();
+	plan(1);
 	uint32_t ans = UINT_MAX;
 
 	struct test_type *value, *root_value;
@@ -354,6 +373,8 @@ test_insert_pop_workload()
 
 	free_all_nodes(&heap);
 	test_heap_destroy(&heap);
+	ok(1, "test insert pop workload");
+	check_plan();
 	footer();
 }
 
@@ -361,6 +382,7 @@ static void
 test_pop_last()
 {
 	header();
+	plan(1);
 	uint32_t ans = UINT_MAX;
 
 	struct test_type *value, *root_value;
@@ -377,6 +399,8 @@ test_pop_last()
 
 	test_heap_destroy(&heap);
 	free(value);
+	ok(1, "test pop last");
+	check_plan();
 	footer();
 }
 
@@ -384,6 +408,7 @@ static void
 test_insert_update_workload()
 {
 	header();
+	plan(1);
 	uint32_t nodes_it = 0;
 	uint64_t current_size = 0;
 	uint32_t ans = UINT_MAX;
@@ -427,6 +452,8 @@ test_insert_update_workload()
 	free_all_nodes(&heap);
 	test_heap_destroy(&heap);
 	free(nodes);
+	ok(1, "test insert update workload");
+	check_plan();
 	footer();
 }
 
@@ -434,6 +461,7 @@ static void
 test_random_delete_workload()
 {
 	header();
+	plan(1);
 	uint32_t nodes_it = 0;
 	uint64_t current_size = 0;
 	uint32_t ans = UINT_MAX;
@@ -477,6 +505,8 @@ test_random_delete_workload()
 	free_all_nodes(&heap);
 	test_heap_destroy(&heap);
 	free(nodes);
+	ok(1, "test random delete workload")
+	check_plan();
 	footer();
 }
 
@@ -484,6 +514,7 @@ static void
 test_delete_last_node()
 {
 	header();
+	plan(1);
 	struct test_type *value, *root_value;
 	heap_t heap;
 	test_heap_create(&heap);
@@ -500,6 +531,8 @@ test_delete_last_node()
 		fail("check heap invariants failed", "test_heap_check(&heap)");
 	}
 	test_heap_destroy(&heap);
+	ok(1, "test delete last node");
+	check_plan();
 	footer();
 }
 
@@ -507,6 +540,7 @@ static void
 test_heapify()
 {
 	header();
+	plan(1);
 	heap_t heap;
 	test_heap_create(&heap);
 
@@ -524,15 +558,18 @@ test_heapify()
 		     "test_heap_check(&heap)");
 	}
 	order_by_val2 = false;
+	ok(1, "test heapify");
 
 	free_all_nodes(&heap);
 	test_heap_destroy(&heap);
+	check_plan();
 	footer();
 }
 
 int
 main(int argc, const char** argv)
 {
+	plan(12);
 	srand(179);
 	test_insert_1_to_3();
 	test_insert_3_to_1();
@@ -546,4 +583,5 @@ main(int argc, const char** argv)
 	test_random_delete_workload();
 	test_delete_last_node();
 	test_heapify();
+	check_plan();
 }
diff --git a/test/unit/heap.result b/test/unit/heap.result
deleted file mode 100644
index 7928983c1..000000000
--- a/test/unit/heap.result
+++ /dev/null
@@ -1,24 +0,0 @@
-	*** test_insert_1_to_3 ***
-	*** test_insert_1_to_3: done ***
-	*** test_insert_3_to_1 ***
-	*** test_insert_3_to_1: done ***
-	*** test_insert_50_to_150_mod_100 ***
-	*** test_insert_50_to_150_mod_100: done ***
-	*** test_insert_many_random ***
-	*** test_insert_many_random: done ***
-	*** test_insert_10_to_1_pop ***
-	*** test_insert_10_to_1_pop: done ***
-	*** test_insert_many_pop_many_random ***
-	*** test_insert_many_pop_many_random: done ***
-	*** test_insert_pop_workload ***
-	*** test_insert_pop_workload: done ***
-	*** test_pop_last ***
-	*** test_pop_last: done ***
-	*** test_insert_update_workload ***
-	*** test_insert_update_workload: done ***
-	*** test_random_delete_workload ***
-	*** test_random_delete_workload: done ***
-	*** test_delete_last_node ***
-	*** test_delete_last_node: done ***
-	*** test_heapify ***
-	*** test_heapify: done ***
diff --git a/test/unit/heap_iterator.c b/test/unit/heap_iterator.c
index 4fde39dfe..6981bbc92 100644
--- a/test/unit/heap_iterator.c
+++ b/test/unit/heap_iterator.c
@@ -43,6 +43,7 @@ static void
 test_iterator_create()
 {
 	header();
+	plan(1);
 	struct test_type *value, *root_value;
 	heap_t heap;
 	test_heap_create(&heap);
@@ -59,6 +60,8 @@ test_iterator_create()
 
 	free_all_nodes(&heap);
 
+	ok(1, "test iterator create");
+	check_plan();
 	footer();
 }
 
@@ -66,6 +69,7 @@ static void
 test_iterator_empty()
 {
 	header();
+	plan(1);
 	heap_t heap;
 	test_heap_create(&heap);
 
@@ -79,6 +83,8 @@ test_iterator_empty()
 
 	free_all_nodes(&heap);
 
+	ok(1, "test iterator empty");
+	check_plan();
 	footer();
 }
 
@@ -87,6 +93,7 @@ static void
 test_iterator_small()
 {
 	header();
+	plan(1);
 	struct test_type *value;
 	heap_t heap;
 	test_heap_create(&heap);
@@ -128,6 +135,8 @@ test_iterator_small()
 		fail("after all iterator returns not NULL", "value != NULL");
 
 	free_all_nodes(&heap);
+	ok(1, "test iterator small");
+	check_plan();
 	footer();
 }
 
@@ -135,6 +144,7 @@ static void
 test_iterator_large()
 {
 	header();
+	plan(1);
 	uint32_t const TEST_CASE_SIZE = 1000;
 	struct test_type *value;
 	heap_t heap;
@@ -180,6 +190,8 @@ test_iterator_large()
 		     "value != NULL");
 
 	free_all_nodes(&heap);
+	ok(1, "test iterator large");
+	check_plan();
 	footer();
 }
 
@@ -188,8 +200,10 @@ int
 main(int argc, const char** argv)
 {
 	srand(179);
+	plan(4);
 	test_iterator_create();
 	test_iterator_empty();
 	test_iterator_small();
 	test_iterator_large();
+	check_plan();
 }
diff --git a/test/unit/heap_iterator.result b/test/unit/heap_iterator.result
deleted file mode 100644
index 66b99dcc6..000000000
--- a/test/unit/heap_iterator.result
+++ /dev/null
@@ -1,8 +0,0 @@
-	*** test_iterator_create ***
-	*** test_iterator_create: done ***
-	*** test_iterator_empty ***
-	*** test_iterator_empty: done ***
-	*** test_iterator_small ***
-	*** test_iterator_small: done ***
-	*** test_iterator_large ***
-	*** test_iterator_large: done ***
diff --git a/test/unit/histogram.c b/test/unit/histogram.c
index 3056d20fe..462f93511 100644
--- a/test/unit/histogram.c
+++ b/test/unit/histogram.c
@@ -57,6 +57,7 @@ static void
 test_counts(void)
 {
 	header();
+	plan(1);
 
 	size_t n_buckets;
 	int64_t *buckets = gen_buckets(&n_buckets);
@@ -83,14 +84,17 @@ test_counts(void)
 	histogram_delete(hist);
 	free(data);
 	free(buckets);
+	ok(1, "test counts");
 
 	footer();
+	check_plan();
 }
 
 static void
 test_discard(void)
 {
 	header();
+	plan(1);
 
 	size_t n_buckets;
 	int64_t *buckets = gen_buckets(&n_buckets);
@@ -124,14 +128,17 @@ test_discard(void)
 	histogram_delete(hist);
 	free(data);
 	free(buckets);
+	ok(1, "test discard");
 
 	footer();
+	check_plan();
 }
 
 static void
 test_percentile(void)
 {
 	header();
+	plan(1);
 
 	size_t n_buckets;
 	int64_t *buckets = gen_buckets(&n_buckets);
@@ -170,15 +177,19 @@ test_percentile(void)
 	histogram_delete(hist);
 	free(data);
 	free(buckets);
+	ok(1, "test percentile");
 
 	footer();
+	check_plan();
 }
 
 int
 main()
 {
+	plan(3);
 	srand(time(NULL));
 	test_counts();
 	test_discard();
 	test_percentile();
+	check_plan();
 }
diff --git a/test/unit/histogram.result b/test/unit/histogram.result
deleted file mode 100644
index e393c194d..000000000
--- a/test/unit/histogram.result
+++ /dev/null
@@ -1,6 +0,0 @@
-	*** test_counts ***
-	*** test_counts: done ***
-	*** test_discard ***
-	*** test_discard: done ***
-	*** test_percentile ***
-	*** test_percentile: done ***
diff --git a/test/unit/int96.cc b/test/unit/int96.cc
index 29dbbcbf5..c033b0aed 100644
--- a/test/unit/int96.cc
+++ b/test/unit/int96.cc
@@ -2,12 +2,11 @@
 
 #include "unit.h"
 
-#define check(expr) if (!(expr)) printf("failed at %s:%d\n", __FILE__, __LINE__)
-
 static void
 test()
 {
 	header();
+	plan(15);
 
 	const uint64_t a = 0xFFFFFFFFFFFFFFFFull / 2;
 	int96_num num, num1, num2;
@@ -15,57 +14,61 @@ test()
 	int96_set_unsigned(&num1, a);
 	int96_set_unsigned(&num2, a);
 	int96_invert(&num2);
-	check(int96_is_neg_int64(&num2));
-	check(int96_extract_neg_int64(&num2) == int64_t(-a));
-	check(int96_is_uint64(&num));
-	check(int96_extract_uint64(&num) == 0);
+	is(int96_is_neg_int64(&num2), true, "int96_is_neg_int64()");
+	is(int96_extract_neg_int64(&num2), int64_t(-a), "int96_extract_neg_int64()");
+	is(int96_is_uint64(&num), true, "int96_is_uint64()");
+	is(int96_extract_uint64(&num), 0, "int96_extract_uint64()");
 	int96_add(&num, &num1);
-	check(int96_is_uint64(&num));
-	check(int96_extract_uint64(&num) == a);
+	is(int96_is_uint64(&num), true, "int96_is_uint64()");
+	is(int96_extract_uint64(&num), a, "int96_extract_uint64()");
 	int96_add(&num, &num1);
-	check(int96_is_uint64(&num));
-	check(int96_extract_uint64(&num) == a * 2);
+	is(int96_is_uint64(&num), true, "int96_is_uint64()");
+	is(int96_extract_uint64(&num), a * 2, "int96_extract_uint64()");
 	for (int i = 1; i < 1000; i++) {
 		for(int j = 0; j < i; j++) {
 			int96_add(&num, &num1);
-			check(!int96_is_uint64(&num) && !int96_is_neg_int64(&num));
+			fail_if(!(!int96_is_uint64(&num) && !int96_is_neg_int64(&num)));
 		}
 		for(int j = 0; j < i - 1; j++) {
 			int96_add(&num, &num2);
-			check(!int96_is_uint64(&num) && !int96_is_neg_int64(&num));
+			fail_if(!(!int96_is_uint64(&num) && !int96_is_neg_int64(&num)));
 		}
 		int96_add(&num, &num2);
-		check(int96_is_uint64(&num));
-		check(int96_extract_uint64(&num) == a * 2);
+		fail_if(!int96_is_uint64(&num));
+		fail_if(int96_extract_uint64(&num) != a * 2);
 	}
+	ok(1, "int96_add() in loop");
 	int96_add(&num, &num2);
-	check(int96_is_uint64(&num));
-	check(int96_extract_uint64(&num) == a);
+	is(int96_is_uint64(&num), true, "int96_is_uint64()");
+	is(int96_extract_uint64(&num), a, "int96_extract_uint64()");
 	int96_add(&num, &num2);
-	check(int96_is_uint64(&num));
-	check(int96_extract_uint64(&num) == 0);
+	is(int96_is_uint64(&num), true, "int96_is_uint64()");
+	is(int96_extract_uint64(&num), 0, "int96_extract_uint64()");
 	int96_add(&num, &num2);
-	check(int96_is_neg_int64(&num));
-	check(int96_extract_neg_int64(&num) == int64_t(-a));
+	is(int96_is_neg_int64(&num), true, "int96_is_neg_int64()");
+	is(int96_extract_neg_int64(&num), int64_t(-a), "int96_extract_neg_int64()");
 	for (int i = 1; i < 1000; i++) {
 		for(int j = 0; j < i; j++) {
 			int96_add(&num, &num2);
-			check(!int96_is_uint64(&num) && !int96_is_neg_int64(&num));
+			fail_if(!(!int96_is_uint64(&num) && !int96_is_neg_int64(&num)));
 		}
 		for(int j = 0; j < i - 1; j++) {
 			int96_add(&num, &num1);
-			check(!int96_is_uint64(&num) && !int96_is_neg_int64(&num));
+			fail_if(!(!int96_is_uint64(&num) && !int96_is_neg_int64(&num)));
 		}
 		int96_add(&num, &num1);
-		check(int96_is_neg_int64(&num));
-		check(int96_extract_neg_int64(&num) == int64_t(-a));
+		fail_if(!(int96_is_neg_int64(&num)));
+		fail_if(int96_extract_neg_int64(&num) != int64_t(-a));
 	}
 
+	check_plan();
 	footer();
 }
 
 int
 main(int, const char **)
 {
+	plan(1);
 	test();
+	check_plan();
 }
diff --git a/test/unit/int96.result b/test/unit/int96.result
deleted file mode 100644
index 4a0b26f56..000000000
--- a/test/unit/int96.result
+++ /dev/null
@@ -1,2 +0,0 @@
-	*** test ***
-	*** test: done ***
diff --git a/test/unit/json.result b/test/unit/json.result
deleted file mode 100644
index fb9d1490f..000000000
--- a/test/unit/json.result
+++ /dev/null
@@ -1,208 +0,0 @@
-	*** main ***
-1..6
-	*** test_basic ***
-    1..71
-    ok 1 - parse <[1]>
-    ok 2 - <[1]> is num
-    ok 3 - <[1]> is 0
-    ok 4 - parse <field1>
-    ok 5 - <field1> is str
-    ok 6 - len is 6
-    ok 7 - str is field1
-    ok 8 - parse <field2>
-    ok 9 - <field2> is str
-    ok 10 - len is 6
-    ok 11 - str is field2
-    ok 12 - parse <field3>
-    ok 13 - <field3> is str
-    ok 14 - len is 6
-    ok 15 - str is field3
-    ok 16 - parse <[5]>
-    ok 17 - <[5]> is num
-    ok 18 - <[5]> is 4
-    ok 19 - parse <[3]>
-    ok 20 - <[3]> is num
-    ok 21 - <[3]> is 2
-    ok 22 - parse <field>
-    ok 23 - <field> is str
-    ok 24 - len is 5
-    ok 25 - str is field
-    ok 26 - parse <[2]>
-    ok 27 - <[2]> is num
-    ok 28 - <[2]> is 1
-    ok 29 - parse <field>
-    ok 30 - <field> is str
-    ok 31 - len is 5
-    ok 32 - str is field
-    ok 33 - parse <f1>
-    ok 34 - <f1> is str
-    ok 35 - len is 2
-    ok 36 - str is f1
-    ok 37 - parse <f2'3'>
-    ok 38 - <f2'3'> is str
-    ok 39 - len is 5
-    ok 40 - str is f2'3'
-    ok 41 - parse <field1>
-    ok 42 - <field1> is str
-    ok 43 - len is 6
-    ok 44 - str is field1
-    ok 45 - parse <field1>
-    ok 46 - <field1> is str
-    ok 47 - len is 6
-    ok 48 - str is field1
-    ok 49 - parse <[1234]>
-    ok 50 - <[1234]> is num
-    ok 51 - <[1234]> is 1233
-    ok 52 - parse empty path
-    ok 53 - is str
-    ok 54 - parse <field1>
-    ok 55 - <field1> is str
-    ok 56 - len is 6
-    ok 57 - str is field1
-    ok 58 - parse <[2]>
-    ok 59 - <[2]> is num
-    ok 60 - <[2]> is 1
-    ok 61 - parse <[6]>
-    ok 62 - <[6]> is num
-    ok 63 - <[6]> is 5
-    ok 64 - parse <привет中国world>
-    ok 65 - <привет中国world> is str
-    ok 66 - len is 23
-    ok 67 - str is привет中国world
-    ok 68 - parse <中国a>
-    ok 69 - <中国a> is str
-    ok 70 - len is 7
-    ok 71 - str is 中国a
-ok 1 - subtests
-	*** test_basic: done ***
-	*** test_errors ***
-    1..22
-    ok 1 - error on position 2 for <[[>
-    ok 2 - error on position 2 for <[field]>
-    ok 3 - error on position 1 for <'field1'.field2>
-    ok 4 - error on position 2 for <[]>
-    ok 5 - error on position 1 for <''>
-    ok 6 - error on position 1 for < field1>
-    ok 7 - error on position 1 for <1field>
-    ok 8 - error on position 2 for <.1field>
-    ok 9 - error on position 8 for <['field>
-    ok 10 - error on position 9 for <['field'>
-    ok 11 - error on position 5 for <[123>
-    ok 12 - error on position 3 for <['']>
-    ok 13 - error on position 2 for <.[123]>
-    ok 14 - error on position 2 for <[.]>
-    ok 15 - error on position 6 for <['aaaÂÂ']>
-    ok 16 - error on position 2 for <.ÂÂ>
-    ok 17 - can not write <field.[index]>
-    ok 18 - can not omit '.' before not a first key out of []
-    ok 19 - error in leading <.>
-    ok 20 - space inside identifier
-    ok 21 - tab inside identifier
-    ok 22 - invalid token for index_base 1
-ok 2 - subtests
-	*** test_errors: done ***
-	*** test_tree ***
-    1..65
-    ok 1 - add path '[1][10]'
-    ok 2 - add path '[1][20].file'
-    ok 3 - add path '[1][20].file[2]'
-    ok 4 - add path '[1][20].file[8]'
-    ok 5 - add path '[1][20]["file"][8]'
-    ok 6 - lookup path '[1][10]'
-    ok 7 - lookup path '[1][20].file'
-    ok 8 - lookup unregistered path '[1][3]'
-    ok 9 - test foreach pre order 0: have 0 expected of 0
-    ok 10 - test foreach pre order 1: have 1 expected of 1
-    ok 11 - test foreach pre order 2: have 2 expected of 2
-    ok 12 - test foreach pre order 3: have 3 expected of 3
-    ok 13 - test foreach pre order 4: have 4 expected of 4
-    ok 14 - test foreach pre order 5: have 5 expected of 5
-    ok 15 - records iterated count 6 of 6
-    ok 16 - test foreach post order 0: have 1 expected of 1
-    ok 17 - test foreach post order 1: have 4 expected of 4
-    ok 18 - test foreach post order 2: have 5 expected of 5
-    ok 19 - test foreach post order 3: have 3 expected of 3
-    ok 20 - test foreach post order 4: have 2 expected of 2
-    ok 21 - test foreach post order 5: have 0 expected of 0
-    ok 22 - records iterated count 6 of 6
-    ok 23 - test foreach safe order 0: have 1 expected of 1
-    ok 24 - test foreach safe order 1: have 4 expected of 4
-    ok 25 - test foreach safe order 2: have 5 expected of 5
-    ok 26 - test foreach safe order 3: have 3 expected of 3
-    ok 27 - test foreach safe order 4: have 2 expected of 2
-    ok 28 - test foreach safe order 5: have 0 expected of 0
-    ok 29 - records iterated count 6 of 6
-    ok 30 - test foreach entry pre order 0: have 0 expected of 0
-    ok 31 - test foreach entry pre order 1: have 1 expected of 1
-    ok 32 - test foreach entry pre order 2: have 2 expected of 2
-    ok 33 - test foreach entry pre order 3: have 3 expected of 3
-    ok 34 - test foreach entry pre order 4: have 4 expected of 4
-    ok 35 - test foreach entry pre order 5: have 5 expected of 5
-    ok 36 - records iterated count 6 of 6
-    ok 37 - test foreach entry post order 0: have 1 expected of 1
-    ok 38 - test foreach entry post order 1: have 4 expected of 4
-    ok 39 - test foreach entry post order 2: have 5 expected of 5
-    ok 40 - test foreach entry post order 3: have 3 expected of 3
-    ok 41 - test foreach entry post order 4: have 2 expected of 2
-    ok 42 - test foreach entry post order 5: have 0 expected of 0
-    ok 43 - records iterated count 6 of 6
-    ok 44 - max_child_index 7 expected of 7
-    ok 45 - max_child_index 1 expected of 1
-    ok 46 - max_child_index -1 expected of -1
-    ok 47 - lookup removed path '[1][20].file[2]'
-    ok 48 - lookup removed path '[1][20].file[8]'
-    ok 49 - lookup path was not corrupted '[1][20].file'
-    ok 50 - test foreach entry safe order 0: have 1 expected of 1
-    ok 51 - test foreach entry safe order 1: have 3 expected of 3
-    ok 52 - test foreach entry safe order 2: have 2 expected of 2
-    ok 53 - test foreach entry safe order 3: have 0 expected of 0
-    ok 54 - records iterated count 4 of 4
-    ok 55 - interm node is not leaf
-    ok 56 - last node is leaf
-    ok 57 - last node became interm - it can't be leaf anymore
-    ok 58 - last node is leaf
-    ok 59 - add path '[1][10]'
-    ok 60 - lookup any token in non-multikey node
-    ok 61 - add path '[1][*]["data"]'
-    ok 62 - lookup path '[1][*]["data"]'
-    ok 63 - lookup numeric token in multikey node
-    ok 64 - lookup any token in multikey node
-    ok 65 - lookup string token in multikey node
-ok 3 - subtests
-	*** test_tree: done ***
-	*** test_path_cmp ***
-    1..8
-    ok 1 - path cmp result "Data[1]["FIO"].fname" with "Data[1]["FIO"].fname": have 0, expected 0
-    ok 2 - path cmp result "Data[1]["FIO"].fname" with "["Data"][1].FIO["fname"]": have 0, expected 0
-    ok 3 - path cmp result "Data[1]["FIO"].fname" with "Data[1]": have 1, expected 1
-    ok 4 - path cmp result "Data[1]["FIO"].fname" with "Data[1]["FIO"].fname[1]": have -1, expected -1
-    ok 5 - path cmp result "Data[1]["FIO"].fname" with "Data[1]["Info"].fname[1]": have -1, expected -1
-    ok 6 - path cmp result "Data[*]["FIO"].fname[*]" with "["Data"][*].FIO["fname"][*]": have 0, expected 0
-    ok 7 - path Data[1]["FIO"].fname is valid
-    ok 8 - path Data[[1]["FIO"].fname error pos 6 expected 6
-ok 4 - subtests
-	*** test_path_cmp: done ***
-	*** test_path_snprint ***
-    1..9
-    ok 1 - full path - retval
-    ok 2 - full path - terminating nul
-    ok 3 - full path - output
-    ok 4 - truncated path - retval
-    ok 5 - truncated path - terminating nul
-    ok 6 - truncated path - output
-    ok 7 - 1-byte buffer - retval
-    ok 8 - 1-byte buffer - terminating nul
-    ok 9 - 0-byte buffer - retval
-ok 5 - subtests
-	*** test_path_snprint: done ***
-	*** test_path_multikey ***
-    1..6
-    ok 1 - Test json_path_multikey_offset with : have 0 expected 0
-    ok 2 - Test json_path_multikey_offset with [1].Data[1].extra[1]: have 20 expected 20
-    ok 3 - Test json_path_multikey_offset with [*].Data[1].extra[1]: have 0 expected 0
-    ok 4 - Test json_path_multikey_offset with [*].Data[*].extra[1]: have 0 expected 0
-    ok 5 - Test json_path_multikey_offset with [1].Data[*].extra[1]: have 8 expected 8
-    ok 6 - Test json_path_multikey_offset with [1].Data[1].extra[*]: have 17 expected 17
-ok 6 - subtests
-	*** test_path_multikey: done ***
-	*** main: done ***
diff --git a/test/unit/light.cc b/test/unit/light.cc
index 6d89938b4..c1832654b 100644
--- a/test/unit/light.cc
+++ b/test/unit/light.cc
@@ -62,6 +62,7 @@ static void
 simple_test()
 {
 	header();
+	plan(1);
 
 	struct light_core ht;
 	light_create(&ht, light_extent_size,
@@ -80,7 +81,6 @@ simple_test()
 			hash_t fnd = light_find(&ht, h, val);
 			bool has1 = fnd != light_end;
 			bool has2 = vect[val];
-			assert(has1 == has2);
 			if (has1 != has2) {
 				fail("find key failed!", "true");
 				return;
@@ -118,7 +118,9 @@ simple_test()
 		}
 	}
 	light_destroy(&ht);
+	ok(1, "Simple test")
 
+	check_plan();
 	footer();
 }
 
@@ -126,6 +128,7 @@ static void
 collision_test()
 {
 	header();
+	plan(1);
 
 	struct light_core ht;
 	light_create(&ht, light_extent_size,
@@ -144,7 +147,6 @@ collision_test()
 			hash_t fnd = light_find(&ht, h * 1024, val);
 			bool has1 = fnd != light_end;
 			bool has2 = vect[val];
-			assert(has1 == has2);
 			if (has1 != has2) {
 				fail("find key failed!", "true");
 				return;
@@ -182,7 +184,9 @@ collision_test()
 		}
 	}
 	light_destroy(&ht);
+	ok(1, "Collision test")
 
+	check_plan();
 	footer();
 }
 
@@ -190,6 +194,7 @@ static void
 iterator_test()
 {
 	header();
+	plan(1);
 
 	struct light_core ht;
 	light_create(&ht, light_extent_size,
@@ -239,14 +244,17 @@ iterator_test()
 	if (strage_thing >> 20) {
 		printf("impossible!\n"); // prevent strage_thing to be optimized out
 	}
+	ok(1, "Iterator test")
 
 	footer();
+	check_plan();
 }
 
 static void
 iterator_freeze_check()
 {
 	header();
+	plan(1);
 
 	const int test_data_size = 1000;
 	hash_value_t comp_buf[test_data_size];
@@ -313,13 +321,16 @@ iterator_freeze_check()
 
 		light_destroy(&ht);
 	}
+	ok(1, "Iterator freeze test");
 
 	footer();
+	check_plan();
 }
 
 int
 main(int, const char**)
 {
+	plan(4);
 	srand(time(0));
 	simple_test();
 	collision_test();
@@ -327,4 +338,5 @@ main(int, const char**)
 	iterator_freeze_check();
 	if (extents_count != 0)
 		fail("memory leak!", "true");
+	check_plan();
 }
diff --git a/test/unit/light.result b/test/unit/light.result
deleted file mode 100644
index 39c4d7c53..000000000
--- a/test/unit/light.result
+++ /dev/null
@@ -1,8 +0,0 @@
-	*** simple_test ***
-	*** simple_test: done ***
-	*** collision_test ***
-	*** collision_test: done ***
-	*** iterator_test ***
-	*** iterator_test: done ***
-	*** iterator_freeze_check ***
-	*** iterator_freeze_check: done ***
diff --git a/test/unit/luaL_iterator.result b/test/unit/luaL_iterator.result
deleted file mode 100644
index 2472eedcf..000000000
--- a/test/unit/luaL_iterator.result
+++ /dev/null
@@ -1,89 +0,0 @@
-1..86
-	*** main ***
-ok 1 - pairs, zero idx: stack size
-ok 2 - pairs, zero idx: iter 0: gen() retval count
-ok 3 - pairs, zero idx: iter 0: gen() 1st retval
-ok 4 - pairs, zero idx: iter 0: gen() 2nd retval
-ok 5 - pairs, zero idx: iter: 0: stack size
-ok 6 - pairs, zero idx: iterator ends
-ok 7 - pairs, zero idx: stack size
-ok 8 - pairs, zero idx: stack size
-ok 9 - ipairs, zero idx: stack size
-ok 10 - ipairs, zero idx: iter 0: gen() retval count
-ok 11 - ipairs, zero idx: iter 0: gen() 1st retval
-ok 12 - ipairs, zero idx: iter 0: gen() 2nd retval
-ok 13 - ipairs, zero idx: iter: 0: stack size
-ok 14 - ipairs, zero idx: iter 1: gen() retval count
-ok 15 - ipairs, zero idx: iter 1: gen() 1st retval
-ok 16 - ipairs, zero idx: iter 1: gen() 2nd retval
-ok 17 - ipairs, zero idx: iter: 1: stack size
-ok 18 - ipairs, zero idx: iter 2: gen() retval count
-ok 19 - ipairs, zero idx: iter 2: gen() 1st retval
-ok 20 - ipairs, zero idx: iter 2: gen() 2nd retval
-ok 21 - ipairs, zero idx: iter: 2: stack size
-ok 22 - ipairs, zero idx: iterator ends
-ok 23 - ipairs, zero idx: stack size
-ok 24 - ipairs, zero idx: stack size
-ok 25 - luafun iterator, zero idx: stack size
-ok 26 - luafun iterator, zero idx: iter 0: gen() retval count
-ok 27 - luafun iterator, zero idx: iter 0: gen() 1st retval
-ok 28 - luafun iterator, zero idx: iter 0: gen() 2nd retval
-ok 29 - luafun iterator, zero idx: iter: 0: stack size
-ok 30 - luafun iterator, zero idx: iter 1: gen() retval count
-ok 31 - luafun iterator, zero idx: iter 1: gen() 1st retval
-ok 32 - luafun iterator, zero idx: iter 1: gen() 2nd retval
-ok 33 - luafun iterator, zero idx: iter: 1: stack size
-ok 34 - luafun iterator, zero idx: iter 2: gen() retval count
-ok 35 - luafun iterator, zero idx: iter 2: gen() 1st retval
-ok 36 - luafun iterator, zero idx: iter 2: gen() 2nd retval
-ok 37 - luafun iterator, zero idx: iter: 2: stack size
-ok 38 - luafun iterator, zero idx: iterator ends
-ok 39 - luafun iterator, zero idx: stack size
-ok 40 - luafun iterator, zero idx: stack size
-ok 41 - pairs, from table: stack size
-ok 42 - pairs, from table: iter 0: gen() retval count
-ok 43 - pairs, from table: iter 0: gen() 1st retval
-ok 44 - pairs, from table: iter 0: gen() 2nd retval
-ok 45 - pairs, from table: iter: 0: stack size
-ok 46 - pairs, from table: iterator ends
-ok 47 - pairs, from table: stack size
-ok 48 - pairs, from table: stack size
-ok 49 - ipairs, from table: stack size
-ok 50 - ipairs, from table: iter 0: gen() retval count
-ok 51 - ipairs, from table: iter 0: gen() 1st retval
-ok 52 - ipairs, from table: iter 0: gen() 2nd retval
-ok 53 - ipairs, from table: iter: 0: stack size
-ok 54 - ipairs, from table: iter 1: gen() retval count
-ok 55 - ipairs, from table: iter 1: gen() 1st retval
-ok 56 - ipairs, from table: iter 1: gen() 2nd retval
-ok 57 - ipairs, from table: iter: 1: stack size
-ok 58 - ipairs, from table: iter 2: gen() retval count
-ok 59 - ipairs, from table: iter 2: gen() 1st retval
-ok 60 - ipairs, from table: iter 2: gen() 2nd retval
-ok 61 - ipairs, from table: iter: 2: stack size
-ok 62 - ipairs, from table: iterator ends
-ok 63 - ipairs, from table: stack size
-ok 64 - ipairs, from table: stack size
-ok 65 - luafun iterator, from table: stack size
-ok 66 - luafun iterator, from table: iter 0: gen() retval count
-ok 67 - luafun iterator, from table: iter 0: gen() 1st retval
-ok 68 - luafun iterator, from table: iter 0: gen() 2nd retval
-ok 69 - luafun iterator, from table: iter: 0: stack size
-ok 70 - luafun iterator, from table: iter 1: gen() retval count
-ok 71 - luafun iterator, from table: iter 1: gen() 1st retval
-ok 72 - luafun iterator, from table: iter 1: gen() 2nd retval
-ok 73 - luafun iterator, from table: iter: 1: stack size
-ok 74 - luafun iterator, from table: iter 2: gen() retval count
-ok 75 - luafun iterator, from table: iter 2: gen() 1st retval
-ok 76 - luafun iterator, from table: iter 2: gen() 2nd retval
-ok 77 - luafun iterator, from table: iter: 2: stack size
-ok 78 - luafun iterator, from table: iterator ends
-ok 79 - luafun iterator, from table: stack size
-ok 80 - luafun iterator, from table: stack size
-ok 81 - lua error: stack size
-ok 82 - lua error: iterator error
-ok 83 - lua error: check error type
-ok 84 - lua error: check error message
-ok 85 - lua error: stack size
-ok 86 - lua error: stack size
-	*** main: done ***
diff --git a/test/unit/luaT_tuple_new.result b/test/unit/luaT_tuple_new.result
deleted file mode 100644
index 110aa68c2..000000000
--- a/test/unit/luaT_tuple_new.result
+++ /dev/null
@@ -1,22 +0,0 @@
-1..19
-	*** test_basic ***
-ok 1 - table: tuple != NULL
-ok 2 - table: check tuple format id
-ok 3 - table: check tuple size
-ok 4 - table: check tuple data
-ok 5 - table: check retvals count
-ok 6 - tuple: tuple != NULL
-ok 7 - tuple: check tuple format id
-ok 8 - tuple: check tuple size
-ok 9 - tuple: check tuple data
-ok 10 - tuple: check retvals count
-ok 11 - objects: tuple != NULL
-ok 12 - objects: check tuple format id
-ok 13 - objects: check tuple size
-ok 14 - objects: check tuple data
-ok 15 - objects: check retvals count
-ok 16 - unexpected type: tuple == NULL
-ok 17 - unexpected type: check retvals count
-ok 18 - unexpected type: check error type
-ok 19 - unexpected type: check error message
-	*** test_basic: done ***
diff --git a/test/unit/merger.result b/test/unit/merger.result
deleted file mode 100644
index 766ebce63..000000000
--- a/test/unit/merger.result
+++ /dev/null
@@ -1,71 +0,0 @@
-1..4
-	*** test_basic ***
-    1..9
-	*** test_array_source ***
-    ok 1 - array source next() (any format): tuple != NULL
-    ok 2 - array source next() (any format): skip tuple validation
-    ok 3 - array source next() (any format): check tuple size
-    ok 4 - array source next() (any format): check tuple data
-    ok 5 - array source next() (any format): tuple != NULL
-    ok 6 - array source next() (any format): skip tuple validation
-    ok 7 - array source next() (any format): check tuple size
-    ok 8 - array source next() (any format): check tuple data
-    ok 9 - array source is empty (any format)
-	*** test_array_source: done ***
-ok 1 - subtests
-    1..9
-	*** test_array_source ***
-    ok 1 - array source next() (user's format): tuple != NULL
-    ok 2 - array source next() (user's format): validate tuple
-    ok 3 - array source next() (user's format): check tuple size
-    ok 4 - array source next() (user's format): check tuple data
-    ok 5 - array source next() (user's format): tuple != NULL
-    ok 6 - array source next() (user's format): validate tuple
-    ok 7 - array source next() (user's format): check tuple size
-    ok 8 - array source next() (user's format): check tuple data
-    ok 9 - array source is empty (user's format)
-	*** test_array_source: done ***
-ok 2 - subtests
-    1..17
-	*** test_merger ***
-    ok 1 - merger next() (any format): tuple != NULL
-    ok 2 - merger next() (any format): skip tuple validation
-    ok 3 - merger next() (any format): check tuple size
-    ok 4 - merger next() (any format): check tuple data
-    ok 5 - merger next() (any format): tuple != NULL
-    ok 6 - merger next() (any format): skip tuple validation
-    ok 7 - merger next() (any format): check tuple size
-    ok 8 - merger next() (any format): check tuple data
-    ok 9 - merger next() (any format): tuple != NULL
-    ok 10 - merger next() (any format): skip tuple validation
-    ok 11 - merger next() (any format): check tuple size
-    ok 12 - merger next() (any format): check tuple data
-    ok 13 - merger next() (any format): tuple != NULL
-    ok 14 - merger next() (any format): skip tuple validation
-    ok 15 - merger next() (any format): check tuple size
-    ok 16 - merger next() (any format): check tuple data
-    ok 17 - merger is empty (any format)
-	*** test_merger: done ***
-ok 3 - subtests
-    1..17
-	*** test_merger ***
-    ok 1 - merger next() (user's format): tuple != NULL
-    ok 2 - merger next() (user's format): validate tuple
-    ok 3 - merger next() (user's format): check tuple size
-    ok 4 - merger next() (user's format): check tuple data
-    ok 5 - merger next() (user's format): tuple != NULL
-    ok 6 - merger next() (user's format): validate tuple
-    ok 7 - merger next() (user's format): check tuple size
-    ok 8 - merger next() (user's format): check tuple data
-    ok 9 - merger next() (user's format): tuple != NULL
-    ok 10 - merger next() (user's format): validate tuple
-    ok 11 - merger next() (user's format): check tuple size
-    ok 12 - merger next() (user's format): check tuple data
-    ok 13 - merger next() (user's format): tuple != NULL
-    ok 14 - merger next() (user's format): validate tuple
-    ok 15 - merger next() (user's format): check tuple size
-    ok 16 - merger next() (user's format): check tuple data
-    ok 17 - merger is empty (user's format)
-	*** test_merger: done ***
-ok 4 - subtests
-	*** test_basic: done ***
diff --git a/test/unit/mhash.result b/test/unit/mhash.result
deleted file mode 100644
index fc757fa35..000000000
--- a/test/unit/mhash.result
+++ /dev/null
@@ -1,18 +0,0 @@
-	*** main ***
-1..3
-	*** mhash_int32_id_test ***
-    1..0
-	*** mhash_int32_id_test: done ***
-ok 1 - subtests
-	*** mhash_int32_collision_test ***
-    1..0
-	*** mhash_int32_collision_test: done ***
-ok 2 - subtests
-	*** mhash_random_test ***
-    1..3
-    ok 1 - empty random is always 'end'
-    ok 2 - one element is always found
-    ok 3 - incremental random from mutable hash
-ok 3 - subtests
-	*** mhash_random_test: done ***
-	*** main: done ***
diff --git a/test/unit/mhash_bytemap.result b/test/unit/mhash_bytemap.result
deleted file mode 100644
index fc757fa35..000000000
--- a/test/unit/mhash_bytemap.result
+++ /dev/null
@@ -1,18 +0,0 @@
-	*** main ***
-1..3
-	*** mhash_int32_id_test ***
-    1..0
-	*** mhash_int32_id_test: done ***
-ok 1 - subtests
-	*** mhash_int32_collision_test ***
-    1..0
-	*** mhash_int32_collision_test: done ***
-ok 2 - subtests
-	*** mhash_random_test ***
-    1..3
-    ok 1 - empty random is always 'end'
-    ok 2 - one element is always found
-    ok 3 - incremental random from mutable hash
-ok 3 - subtests
-	*** mhash_random_test: done ***
-	*** main: done ***
diff --git a/test/unit/mp_error.result b/test/unit/mp_error.result
deleted file mode 100644
index 6ef37b4d5..000000000
--- a/test/unit/mp_error.result
+++ /dev/null
@@ -1,44 +0,0 @@
-	*** main ***
-1..5
-	*** test_stack_error_decode ***
-    1..17
-    ok 1 - check CustomError
-    ok 2 - check AccessDeniedError
-    ok 3 - check ClientError
-    ok 4 - check XlogError
-    ok 5 - check XlogGapError
-    ok 6 - check SystemError
-    ok 7 - check SocketError
-    ok 8 - check OutOfMemory
-    ok 9 - check TimedOut
-    ok 10 - check ChannelIsClosed
-    ok 11 - check FiberIsCancelled
-    ok 12 - check LuajitError
-    ok 13 - check IllegalParams
-    ok 14 - check CollationError
-    ok 15 - check SwimError
-    ok 16 - check CryptoError
-    ok 17 - stack size
-ok 1 - subtests
-	*** test_stack_error_decode: done ***
-	*** test_decode_unknown_type ***
-    1..1
-    ok 1 - check SomeNewError
-ok 2 - subtests
-	*** test_decode_unknown_type: done ***
-	*** test_fail_not_enough_fields ***
-    1..2
-    ok 1 - check not enough additional fields
-    ok 2 - error about parsing problem is set
-ok 3 - subtests
-	*** test_fail_not_enough_fields: done ***
-	*** test_unknown_fields ***
-    1..1
-    ok 1 - check unknown fields
-ok 4 - subtests
-	*** test_unknown_additional_fields ***
-    1..1
-    ok 1 - check unknown additional field
-ok 5 - subtests
-	*** test_unknown_additional_fields: done ***
-	*** main: done ***
diff --git a/test/unit/msgpack.result b/test/unit/msgpack.result
deleted file mode 100644
index 02c0b05fd..000000000
--- a/test/unit/msgpack.result
+++ /dev/null
@@ -1,2282 +0,0 @@
-1..22
-    1..135
-    # *** test_uints ***
-    # uint 0U
-    ok 1 - mp_check_uint(0U) == 0
-    ok 2 - mp_decode(mp_encode(0U)) == 0U
-    ok 3 - mp_check(0U)
-    ok 4 - len(mp_encode_uint(0U)
-    ok 5 - len(mp_decode_uint(0U))
-    ok 6 - len(mp_next_uint(0U))
-    ok 7 - len(mp_check_uint(0U))
-    ok 8 - mp_sizeof_uint(0U)
-    ok 9 - mp_encode(0U) == "\x00"
-    # uint 1U
-    ok 10 - mp_check_uint(1U) == 0
-    ok 11 - mp_decode(mp_encode(1U)) == 1U
-    ok 12 - mp_check(1U)
-    ok 13 - len(mp_encode_uint(1U)
-    ok 14 - len(mp_decode_uint(1U))
-    ok 15 - len(mp_next_uint(1U))
-    ok 16 - len(mp_check_uint(1U))
-    ok 17 - mp_sizeof_uint(1U)
-    ok 18 - mp_encode(1U) == "\x01"
-    # uint 0x7eU
-    ok 19 - mp_check_uint(0x7eU) == 0
-    ok 20 - mp_decode(mp_encode(0x7eU)) == 0x7eU
-    ok 21 - mp_check(0x7eU)
-    ok 22 - len(mp_encode_uint(0x7eU)
-    ok 23 - len(mp_decode_uint(0x7eU))
-    ok 24 - len(mp_next_uint(0x7eU))
-    ok 25 - len(mp_check_uint(0x7eU))
-    ok 26 - mp_sizeof_uint(0x7eU)
-    ok 27 - mp_encode(0x7eU) == "\x7e"
-    # uint 0x7fU
-    ok 28 - mp_check_uint(0x7fU) == 0
-    ok 29 - mp_decode(mp_encode(0x7fU)) == 0x7fU
-    ok 30 - mp_check(0x7fU)
-    ok 31 - len(mp_encode_uint(0x7fU)
-    ok 32 - len(mp_decode_uint(0x7fU))
-    ok 33 - len(mp_next_uint(0x7fU))
-    ok 34 - len(mp_check_uint(0x7fU))
-    ok 35 - mp_sizeof_uint(0x7fU)
-    ok 36 - mp_encode(0x7fU) == "\x7f"
-    # uint 0x80U
-    ok 37 - mp_check_uint(0x80U) == 0
-    ok 38 - mp_decode(mp_encode(0x80U)) == 0x80U
-    ok 39 - mp_check(0x80U)
-    ok 40 - len(mp_encode_uint(0x80U)
-    ok 41 - len(mp_decode_uint(0x80U))
-    ok 42 - len(mp_next_uint(0x80U))
-    ok 43 - len(mp_check_uint(0x80U))
-    ok 44 - mp_sizeof_uint(0x80U)
-    ok 45 - mp_encode(0x80U) == "\xcc\x80"
-    # uint 0xfeU
-    ok 46 - mp_check_uint(0xfeU) == 0
-    ok 47 - mp_decode(mp_encode(0xfeU)) == 0xfeU
-    ok 48 - mp_check(0xfeU)
-    ok 49 - len(mp_encode_uint(0xfeU)
-    ok 50 - len(mp_decode_uint(0xfeU))
-    ok 51 - len(mp_next_uint(0xfeU))
-    ok 52 - len(mp_check_uint(0xfeU))
-    ok 53 - mp_sizeof_uint(0xfeU)
-    ok 54 - mp_encode(0xfeU) == "\xcc\xfe"
-    # uint 0xffU
-    ok 55 - mp_check_uint(0xffU) == 0
-    ok 56 - mp_decode(mp_encode(0xffU)) == 0xffU
-    ok 57 - mp_check(0xffU)
-    ok 58 - len(mp_encode_uint(0xffU)
-    ok 59 - len(mp_decode_uint(0xffU))
-    ok 60 - len(mp_next_uint(0xffU))
-    ok 61 - len(mp_check_uint(0xffU))
-    ok 62 - mp_sizeof_uint(0xffU)
-    ok 63 - mp_encode(0xffU) == "\xcc\xff"
-    # uint 0xfffeU
-    ok 64 - mp_check_uint(0xfffeU) == 0
-    ok 65 - mp_decode(mp_encode(0xfffeU)) == 0xfffeU
-    ok 66 - mp_check(0xfffeU)
-    ok 67 - len(mp_encode_uint(0xfffeU)
-    ok 68 - len(mp_decode_uint(0xfffeU))
-    ok 69 - len(mp_next_uint(0xfffeU))
-    ok 70 - len(mp_check_uint(0xfffeU))
-    ok 71 - mp_sizeof_uint(0xfffeU)
-    ok 72 - mp_encode(0xfffeU) == "\xcd\xff\xfe"
-    # uint 0xffffU
-    ok 73 - mp_check_uint(0xffffU) == 0
-    ok 74 - mp_decode(mp_encode(0xffffU)) == 0xffffU
-    ok 75 - mp_check(0xffffU)
-    ok 76 - len(mp_encode_uint(0xffffU)
-    ok 77 - len(mp_decode_uint(0xffffU))
-    ok 78 - len(mp_next_uint(0xffffU))
-    ok 79 - len(mp_check_uint(0xffffU))
-    ok 80 - mp_sizeof_uint(0xffffU)
-    ok 81 - mp_encode(0xffffU) == "\xcd\xff\xff"
-    # uint 0x10000U
-    ok 82 - mp_check_uint(0x10000U) == 0
-    ok 83 - mp_decode(mp_encode(0x10000U)) == 0x10000U
-    ok 84 - mp_check(0x10000U)
-    ok 85 - len(mp_encode_uint(0x10000U)
-    ok 86 - len(mp_decode_uint(0x10000U))
-    ok 87 - len(mp_next_uint(0x10000U))
-    ok 88 - len(mp_check_uint(0x10000U))
-    ok 89 - mp_sizeof_uint(0x10000U)
-    ok 90 - mp_encode(0x10000U) == "\xce\x00\x01\x00\x00"
-    # uint 0xfffffffeU
-    ok 91 - mp_check_uint(0xfffffffeU) == 0
-    ok 92 - mp_decode(mp_encode(0xfffffffeU)) == 0xfffffffeU
-    ok 93 - mp_check(0xfffffffeU)
-    ok 94 - len(mp_encode_uint(0xfffffffeU)
-    ok 95 - len(mp_decode_uint(0xfffffffeU))
-    ok 96 - len(mp_next_uint(0xfffffffeU))
-    ok 97 - len(mp_check_uint(0xfffffffeU))
-    ok 98 - mp_sizeof_uint(0xfffffffeU)
-    ok 99 - mp_encode(0xfffffffeU) == "\xce\xff\xff\xff\xfe"
-    # uint 0xffffffffU
-    ok 100 - mp_check_uint(0xffffffffU) == 0
-    ok 101 - mp_decode(mp_encode(0xffffffffU)) == 0xffffffffU
-    ok 102 - mp_check(0xffffffffU)
-    ok 103 - len(mp_encode_uint(0xffffffffU)
-    ok 104 - len(mp_decode_uint(0xffffffffU))
-    ok 105 - len(mp_next_uint(0xffffffffU))
-    ok 106 - len(mp_check_uint(0xffffffffU))
-    ok 107 - mp_sizeof_uint(0xffffffffU)
-    ok 108 - mp_encode(0xffffffffU) == "\xce\xff\xff\xff\xff"
-    # uint 0x100000000ULL
-    ok 109 - mp_check_uint(0x100000000ULL) == 0
-    ok 110 - mp_decode(mp_encode(0x100000000ULL)) == 0x100000000ULL
-    ok 111 - mp_check(0x100000000ULL)
-    ok 112 - len(mp_encode_uint(0x100000000ULL)
-    ok 113 - len(mp_decode_uint(0x100000000ULL))
-    ok 114 - len(mp_next_uint(0x100000000ULL))
-    ok 115 - len(mp_check_uint(0x100000000ULL))
-    ok 116 - mp_sizeof_uint(0x100000000ULL)
-    ok 117 - mp_encode(0x100000000ULL) == "\xcf\x00\x00\x00\x01\x00\x00\x00\x00"
-    # uint 0xfffffffffffffffeULL
-    ok 118 - mp_check_uint(0xfffffffffffffffeULL) == 0
-    ok 119 - mp_decode(mp_encode(0xfffffffffffffffeULL)) == 0xfffffffffffffffeULL
-    ok 120 - mp_check(0xfffffffffffffffeULL)
-    ok 121 - len(mp_encode_uint(0xfffffffffffffffeULL)
-    ok 122 - len(mp_decode_uint(0xfffffffffffffffeULL))
-    ok 123 - len(mp_next_uint(0xfffffffffffffffeULL))
-    ok 124 - len(mp_check_uint(0xfffffffffffffffeULL))
-    ok 125 - mp_sizeof_uint(0xfffffffffffffffeULL)
-    ok 126 - mp_encode(0xfffffffffffffffeULL) == "\xcf\xff\xff\xff\xff\xff\xff\xff\xfe"
-    # uint 0xffffffffffffffffULL
-    ok 127 - mp_check_uint(0xffffffffffffffffULL) == 0
-    ok 128 - mp_decode(mp_encode(0xffffffffffffffffULL)) == 0xffffffffffffffffULL
-    ok 129 - mp_check(0xffffffffffffffffULL)
-    ok 130 - len(mp_encode_uint(0xffffffffffffffffULL)
-    ok 131 - len(mp_decode_uint(0xffffffffffffffffULL))
-    ok 132 - len(mp_next_uint(0xffffffffffffffffULL))
-    ok 133 - len(mp_check_uint(0xffffffffffffffffULL))
-    ok 134 - mp_sizeof_uint(0xffffffffffffffffULL)
-    ok 135 - mp_encode(0xffffffffffffffffULL) == "\xcf\xff\xff\xff\xff\xff\xff\xff\xff"
-    # *** test_uints: done ***
-ok 1 - subtests
-    1..153
-    # *** test_ints ***
-    # int -0x01
-    ok 1 - mp_check_int(-0x01) == 0
-    ok 2 - mp_decode(mp_encode(-0x01)) == -0x01
-    ok 3 - mp_check(-0x01)
-    ok 4 - len(mp_encode_int(-0x01)
-    ok 5 - len(mp_decode_int(-0x01))
-    ok 6 - len(mp_next_int(-0x01))
-    ok 7 - len(mp_check_int(-0x01))
-    ok 8 - mp_sizeof_int(-0x01)
-    ok 9 - mp_encode(-0x01) == "\xff"
-    # int -0x1e
-    ok 10 - mp_check_int(-0x1e) == 0
-    ok 11 - mp_decode(mp_encode(-0x1e)) == -0x1e
-    ok 12 - mp_check(-0x1e)
-    ok 13 - len(mp_encode_int(-0x1e)
-    ok 14 - len(mp_decode_int(-0x1e))
-    ok 15 - len(mp_next_int(-0x1e))
-    ok 16 - len(mp_check_int(-0x1e))
-    ok 17 - mp_sizeof_int(-0x1e)
-    ok 18 - mp_encode(-0x1e) == "\xe2"
-    # int -0x1f
-    ok 19 - mp_check_int(-0x1f) == 0
-    ok 20 - mp_decode(mp_encode(-0x1f)) == -0x1f
-    ok 21 - mp_check(-0x1f)
-    ok 22 - len(mp_encode_int(-0x1f)
-    ok 23 - len(mp_decode_int(-0x1f))
-    ok 24 - len(mp_next_int(-0x1f))
-    ok 25 - len(mp_check_int(-0x1f))
-    ok 26 - mp_sizeof_int(-0x1f)
-    ok 27 - mp_encode(-0x1f) == "\xe1"
-    # int -0x20
-    ok 28 - mp_check_int(-0x20) == 0
-    ok 29 - mp_decode(mp_encode(-0x20)) == -0x20
-    ok 30 - mp_check(-0x20)
-    ok 31 - len(mp_encode_int(-0x20)
-    ok 32 - len(mp_decode_int(-0x20))
-    ok 33 - len(mp_next_int(-0x20))
-    ok 34 - len(mp_check_int(-0x20))
-    ok 35 - mp_sizeof_int(-0x20)
-    ok 36 - mp_encode(-0x20) == "\xe0"
-    # int -0x21
-    ok 37 - mp_check_int(-0x21) == 0
-    ok 38 - mp_decode(mp_encode(-0x21)) == -0x21
-    ok 39 - mp_check(-0x21)
-    ok 40 - len(mp_encode_int(-0x21)
-    ok 41 - len(mp_decode_int(-0x21))
-    ok 42 - len(mp_next_int(-0x21))
-    ok 43 - len(mp_check_int(-0x21))
-    ok 44 - mp_sizeof_int(-0x21)
-    ok 45 - mp_encode(-0x21) == "\xd0\xdf"
-    # int -0x7f
-    ok 46 - mp_check_int(-0x7f) == 0
-    ok 47 - mp_decode(mp_encode(-0x7f)) == -0x7f
-    ok 48 - mp_check(-0x7f)
-    ok 49 - len(mp_encode_int(-0x7f)
-    ok 50 - len(mp_decode_int(-0x7f))
-    ok 51 - len(mp_next_int(-0x7f))
-    ok 52 - len(mp_check_int(-0x7f))
-    ok 53 - mp_sizeof_int(-0x7f)
-    ok 54 - mp_encode(-0x7f) == "\xd0\x81"
-    # int -0x80
-    ok 55 - mp_check_int(-0x80) == 0
-    ok 56 - mp_decode(mp_encode(-0x80)) == -0x80
-    ok 57 - mp_check(-0x80)
-    ok 58 - len(mp_encode_int(-0x80)
-    ok 59 - len(mp_decode_int(-0x80))
-    ok 60 - len(mp_next_int(-0x80))
-    ok 61 - len(mp_check_int(-0x80))
-    ok 62 - mp_sizeof_int(-0x80)
-    ok 63 - mp_encode(-0x80) == "\xd0\x80"
-    # int -0x81
-    ok 64 - mp_check_int(-0x81) == 0
-    ok 65 - mp_decode(mp_encode(-0x81)) == -0x81
-    ok 66 - mp_check(-0x81)
-    ok 67 - len(mp_encode_int(-0x81)
-    ok 68 - len(mp_decode_int(-0x81))
-    ok 69 - len(mp_next_int(-0x81))
-    ok 70 - len(mp_check_int(-0x81))
-    ok 71 - mp_sizeof_int(-0x81)
-    ok 72 - mp_encode(-0x81) == "\xd1\xff\x7f"
-    # int -0x7fff
-    ok 73 - mp_check_int(-0x7fff) == 0
-    ok 74 - mp_decode(mp_encode(-0x7fff)) == -0x7fff
-    ok 75 - mp_check(-0x7fff)
-    ok 76 - len(mp_encode_int(-0x7fff)
-    ok 77 - len(mp_decode_int(-0x7fff))
-    ok 78 - len(mp_next_int(-0x7fff))
-    ok 79 - len(mp_check_int(-0x7fff))
-    ok 80 - mp_sizeof_int(-0x7fff)
-    ok 81 - mp_encode(-0x7fff) == "\xd1\x80\x01"
-    # int -0x8000
-    ok 82 - mp_check_int(-0x8000) == 0
-    ok 83 - mp_decode(mp_encode(-0x8000)) == -0x8000
-    ok 84 - mp_check(-0x8000)
-    ok 85 - len(mp_encode_int(-0x8000)
-    ok 86 - len(mp_decode_int(-0x8000))
-    ok 87 - len(mp_next_int(-0x8000))
-    ok 88 - len(mp_check_int(-0x8000))
-    ok 89 - mp_sizeof_int(-0x8000)
-    ok 90 - mp_encode(-0x8000) == "\xd1\x80\x00"
-    # int -0x8001
-    ok 91 - mp_check_int(-0x8001) == 0
-    ok 92 - mp_decode(mp_encode(-0x8001)) == -0x8001
-    ok 93 - mp_check(-0x8001)
-    ok 94 - len(mp_encode_int(-0x8001)
-    ok 95 - len(mp_decode_int(-0x8001))
-    ok 96 - len(mp_next_int(-0x8001))
-    ok 97 - len(mp_check_int(-0x8001))
-    ok 98 - mp_sizeof_int(-0x8001)
-    ok 99 - mp_encode(-0x8001) == "\xd2\xff\xff\x7f\xff"
-    # int -0x7fffffff
-    ok 100 - mp_check_int(-0x7fffffff) == 0
-    ok 101 - mp_decode(mp_encode(-0x7fffffff)) == -0x7fffffff
-    ok 102 - mp_check(-0x7fffffff)
-    ok 103 - len(mp_encode_int(-0x7fffffff)
-    ok 104 - len(mp_decode_int(-0x7fffffff))
-    ok 105 - len(mp_next_int(-0x7fffffff))
-    ok 106 - len(mp_check_int(-0x7fffffff))
-    ok 107 - mp_sizeof_int(-0x7fffffff)
-    ok 108 - mp_encode(-0x7fffffff) == "\xd2\x80\x00\x00\x01"
-    # int -0x80000000LL
-    ok 109 - mp_check_int(-0x80000000LL) == 0
-    ok 110 - mp_decode(mp_encode(-0x80000000LL)) == -0x80000000LL
-    ok 111 - mp_check(-0x80000000LL)
-    ok 112 - len(mp_encode_int(-0x80000000LL)
-    ok 113 - len(mp_decode_int(-0x80000000LL))
-    ok 114 - len(mp_next_int(-0x80000000LL))
-    ok 115 - len(mp_check_int(-0x80000000LL))
-    ok 116 - mp_sizeof_int(-0x80000000LL)
-    ok 117 - mp_encode(-0x80000000LL) == "\xd2\x80\x00\x00\x00"
-    # int -0x80000001LL
-    ok 118 - mp_check_int(-0x80000001LL) == 0
-    ok 119 - mp_decode(mp_encode(-0x80000001LL)) == -0x80000001LL
-    ok 120 - mp_check(-0x80000001LL)
-    ok 121 - len(mp_encode_int(-0x80000001LL)
-    ok 122 - len(mp_decode_int(-0x80000001LL))
-    ok 123 - len(mp_next_int(-0x80000001LL))
-    ok 124 - len(mp_check_int(-0x80000001LL))
-    ok 125 - mp_sizeof_int(-0x80000001LL)
-    ok 126 - mp_encode(-0x80000001LL) == "\xd3\xff\xff\xff\xff\x7f\xff\xff\xff"
-    # int -0x80000001LL
-    ok 127 - mp_check_int(-0x80000001LL) == 0
-    ok 128 - mp_decode(mp_encode(-0x80000001LL)) == -0x80000001LL
-    ok 129 - mp_check(-0x80000001LL)
-    ok 130 - len(mp_encode_int(-0x80000001LL)
-    ok 131 - len(mp_decode_int(-0x80000001LL))
-    ok 132 - len(mp_next_int(-0x80000001LL))
-    ok 133 - len(mp_check_int(-0x80000001LL))
-    ok 134 - mp_sizeof_int(-0x80000001LL)
-    ok 135 - mp_encode(-0x80000001LL) == "\xd3\xff\xff\xff\xff\x7f\xff\xff\xff"
-    # int -0x7fffffffffffffffLL
-    ok 136 - mp_check_int(-0x7fffffffffffffffLL) == 0
-    ok 137 - mp_decode(mp_encode(-0x7fffffffffffffffLL)) == -0x7fffffffffffffffLL
-    ok 138 - mp_check(-0x7fffffffffffffffLL)
-    ok 139 - len(mp_encode_int(-0x7fffffffffffffffLL)
-    ok 140 - len(mp_decode_int(-0x7fffffffffffffffLL))
-    ok 141 - len(mp_next_int(-0x7fffffffffffffffLL))
-    ok 142 - len(mp_check_int(-0x7fffffffffffffffLL))
-    ok 143 - mp_sizeof_int(-0x7fffffffffffffffLL)
-    ok 144 - mp_encode(-0x7fffffffffffffffLL) == "\xd3\x80\x00\x00\x00\x00\x00\x00\x01"
-    # int (int64_t)-0x8000000000000000LL
-    ok 145 - mp_check_int((int64_t)-0x8000000000000000LL) == 0
-    ok 146 - mp_decode(mp_encode((int64_t)-0x8000000000000000LL)) == (int64_t)-0x8000000000000000LL
-    ok 147 - mp_check((int64_t)-0x8000000000000000LL)
-    ok 148 - len(mp_encode_int((int64_t)-0x8000000000000000LL)
-    ok 149 - len(mp_decode_int((int64_t)-0x8000000000000000LL))
-    ok 150 - len(mp_next_int((int64_t)-0x8000000000000000LL))
-    ok 151 - len(mp_check_int((int64_t)-0x8000000000000000LL))
-    ok 152 - mp_sizeof_int((int64_t)-0x8000000000000000LL)
-    ok 153 - mp_encode((int64_t)-0x8000000000000000LL) == "\xd3\x80\x00\x00\x00\x00\x00\x00\x00"
-    # *** test_ints: done ***
-ok 2 - subtests
-    1..18
-    # *** test_bools ***
-    # bool 1
-    ok 1 - mp_check_bool(1) == 0
-    ok 2 - mp_decode(mp_encode(1)) == 1
-    ok 3 - mp_check(1)
-    ok 4 - len(mp_encode_bool(1)
-    ok 5 - len(mp_decode_bool(1))
-    ok 6 - len(mp_next_bool(1))
-    ok 7 - len(mp_check_bool(1))
-    ok 8 - mp_sizeof_bool(1)
-    ok 9 - mp_encode(1) == "\xc3"
-    # bool 0
-    ok 10 - mp_check_bool(0) == 0
-    ok 11 - mp_decode(mp_encode(0)) == 0
-    ok 12 - mp_check(0)
-    ok 13 - len(mp_encode_bool(0)
-    ok 14 - len(mp_decode_bool(0))
-    ok 15 - len(mp_next_bool(0))
-    ok 16 - len(mp_check_bool(0))
-    ok 17 - mp_sizeof_bool(0)
-    ok 18 - mp_encode(0) == "\xc2"
-    # *** test_bools: done ***
-ok 3 - subtests
-    1..27
-    # *** test_floats ***
-    # float (float) 1.0
-    ok 1 - mp_check_float((float) 1.0) == 0
-    ok 2 - mp_decode(mp_encode((float) 1.0)) == (float) 1.0
-    ok 3 - mp_check((float) 1.0)
-    ok 4 - len(mp_encode_float((float) 1.0)
-    ok 5 - len(mp_decode_float((float) 1.0))
-    ok 6 - len(mp_next_float((float) 1.0))
-    ok 7 - len(mp_check_float((float) 1.0))
-    ok 8 - mp_sizeof_float((float) 1.0)
-    ok 9 - mp_encode((float) 1.0) == "\xca\x3f\x80\x00\x00"
-    # float (float) 3.141593
-    ok 10 - mp_check_float((float) 3.141593) == 0
-    ok 11 - mp_decode(mp_encode((float) 3.141593)) == (float) 3.141593
-    ok 12 - mp_check((float) 3.141593)
-    ok 13 - len(mp_encode_float((float) 3.141593)
-    ok 14 - len(mp_decode_float((float) 3.141593))
-    ok 15 - len(mp_next_float((float) 3.141593))
-    ok 16 - len(mp_check_float((float) 3.141593))
-    ok 17 - mp_sizeof_float((float) 3.141593)
-    ok 18 - mp_encode((float) 3.141593) == "\xca\x40\x49\x0f\xdc"
-    # float (float) -1e38f
-    ok 19 - mp_check_float((float) -1e38f) == 0
-    ok 20 - mp_decode(mp_encode((float) -1e38f)) == (float) -1e38f
-    ok 21 - mp_check((float) -1e38f)
-    ok 22 - len(mp_encode_float((float) -1e38f)
-    ok 23 - len(mp_decode_float((float) -1e38f))
-    ok 24 - len(mp_next_float((float) -1e38f))
-    ok 25 - len(mp_check_float((float) -1e38f))
-    ok 26 - mp_sizeof_float((float) -1e38f)
-    ok 27 - mp_encode((float) -1e38f) == "\xca\xfe\x96\x76\x99"
-    # *** test_floats: done ***
-ok 4 - subtests
-    1..27
-    # *** test_doubles ***
-    # double (double) 1.0
-    ok 1 - mp_check_double((double) 1.0) == 0
-    ok 2 - mp_decode(mp_encode((double) 1.0)) == (double) 1.0
-    ok 3 - mp_check((double) 1.0)
-    ok 4 - len(mp_encode_double((double) 1.0)
-    ok 5 - len(mp_decode_double((double) 1.0))
-    ok 6 - len(mp_next_double((double) 1.0))
-    ok 7 - len(mp_check_double((double) 1.0))
-    ok 8 - mp_sizeof_double((double) 1.0)
-    ok 9 - mp_encode((double) 1.0) == "\xcb\x3f\xf0\x00\x00\x00\x00\x00\x00"
-    # double (double) 3.141592653589793
-    ok 10 - mp_check_double((double) 3.141592653589793) == 0
-    ok 11 - mp_decode(mp_encode((double) 3.141592653589793)) == (double) 3.141592653589793
-    ok 12 - mp_check((double) 3.141592653589793)
-    ok 13 - len(mp_encode_double((double) 3.141592653589793)
-    ok 14 - len(mp_decode_double((double) 3.141592653589793))
-    ok 15 - len(mp_next_double((double) 3.141592653589793))
-    ok 16 - len(mp_check_double((double) 3.141592653589793))
-    ok 17 - mp_sizeof_double((double) 3.141592653589793)
-    ok 18 - mp_encode((double) 3.141592653589793) == "\xcb\x40\x09\x21\xfb\x54\x44\x2d\x18"
-    # double (double) -1e99
-    ok 19 - mp_check_double((double) -1e99) == 0
-    ok 20 - mp_decode(mp_encode((double) -1e99)) == (double) -1e99
-    ok 21 - mp_check((double) -1e99)
-    ok 22 - len(mp_encode_double((double) -1e99)
-    ok 23 - len(mp_decode_double((double) -1e99))
-    ok 24 - len(mp_next_double((double) -1e99))
-    ok 25 - len(mp_check_double((double) -1e99))
-    ok 26 - mp_sizeof_double((double) -1e99)
-    ok 27 - mp_encode((double) -1e99) == "\xcb\xd4\x7d\x42\xae\xa2\x87\x9f\x2e"
-    # *** test_doubles: done ***
-ok 5 - subtests
-    1..6
-    # *** test_nils ***
-    # nil
-    ok 1 - mp_check_nil()
-    ok 2 - len(mp_encode_nil() == 1
-    ok 3 - len(mp_decode_nil()) == 1
-    ok 4 - len(mp_next_nil()) == 1
-    ok 5 - len(mp_check_nil()) == 1
-    ok 6 - mp_sizeof_nil() == 1
-    # *** test_nils: done ***
-ok 6 - subtests
-    1..78
-    # *** test_strls ***
-    # strl 0x00U
-    ok 1 - mp_check_strl(0x00U) == 0
-    ok 2 - mp_decode(mp_encode(0x00U)) == 0x00U
-    ok 3 - len(mp_encode_strl(0x00U)
-    ok 4 - len(mp_decode_strl(0x00U))
-    ok 5 - mp_sizeof_strl(0x00U)
-    ok 6 - mp_encode(0x00U) == "\xa0"
-    # strl 0x01U
-    ok 7 - mp_check_strl(0x01U) == 0
-    ok 8 - mp_decode(mp_encode(0x01U)) == 0x01U
-    ok 9 - len(mp_encode_strl(0x01U)
-    ok 10 - len(mp_decode_strl(0x01U))
-    ok 11 - mp_sizeof_strl(0x01U)
-    ok 12 - mp_encode(0x01U) == "\xa1"
-    # strl 0x1eU
-    ok 13 - mp_check_strl(0x1eU) == 0
-    ok 14 - mp_decode(mp_encode(0x1eU)) == 0x1eU
-    ok 15 - len(mp_encode_strl(0x1eU)
-    ok 16 - len(mp_decode_strl(0x1eU))
-    ok 17 - mp_sizeof_strl(0x1eU)
-    ok 18 - mp_encode(0x1eU) == "\xbe"
-    # strl 0x1fU
-    ok 19 - mp_check_strl(0x1fU) == 0
-    ok 20 - mp_decode(mp_encode(0x1fU)) == 0x1fU
-    ok 21 - len(mp_encode_strl(0x1fU)
-    ok 22 - len(mp_decode_strl(0x1fU))
-    ok 23 - mp_sizeof_strl(0x1fU)
-    ok 24 - mp_encode(0x1fU) == "\xbf"
-    # strl 0x20U
-    ok 25 - mp_check_strl(0x20U) == 0
-    ok 26 - mp_decode(mp_encode(0x20U)) == 0x20U
-    ok 27 - len(mp_encode_strl(0x20U)
-    ok 28 - len(mp_decode_strl(0x20U))
-    ok 29 - mp_sizeof_strl(0x20U)
-    ok 30 - mp_encode(0x20U) == "\xd9\x20"
-    # strl 0xfeU
-    ok 31 - mp_check_strl(0xfeU) == 0
-    ok 32 - mp_decode(mp_encode(0xfeU)) == 0xfeU
-    ok 33 - len(mp_encode_strl(0xfeU)
-    ok 34 - len(mp_decode_strl(0xfeU))
-    ok 35 - mp_sizeof_strl(0xfeU)
-    ok 36 - mp_encode(0xfeU) == "\xd9\xfe"
-    # strl 0xffU
-    ok 37 - mp_check_strl(0xffU) == 0
-    ok 38 - mp_decode(mp_encode(0xffU)) == 0xffU
-    ok 39 - len(mp_encode_strl(0xffU)
-    ok 40 - len(mp_decode_strl(0xffU))
-    ok 41 - mp_sizeof_strl(0xffU)
-    ok 42 - mp_encode(0xffU) == "\xd9\xff"
-    # strl 0x0100U
-    ok 43 - mp_check_strl(0x0100U) == 0
-    ok 44 - mp_decode(mp_encode(0x0100U)) == 0x0100U
-    ok 45 - len(mp_encode_strl(0x0100U)
-    ok 46 - len(mp_decode_strl(0x0100U))
-    ok 47 - mp_sizeof_strl(0x0100U)
-    ok 48 - mp_encode(0x0100U) == "\xda\x01\x00"
-    # strl 0xfffeU
-    ok 49 - mp_check_strl(0xfffeU) == 0
-    ok 50 - mp_decode(mp_encode(0xfffeU)) == 0xfffeU
-    ok 51 - len(mp_encode_strl(0xfffeU)
-    ok 52 - len(mp_decode_strl(0xfffeU))
-    ok 53 - mp_sizeof_strl(0xfffeU)
-    ok 54 - mp_encode(0xfffeU) == "\xda\xff\xfe"
-    # strl 0xffffU
-    ok 55 - mp_check_strl(0xffffU) == 0
-    ok 56 - mp_decode(mp_encode(0xffffU)) == 0xffffU
-    ok 57 - len(mp_encode_strl(0xffffU)
-    ok 58 - len(mp_decode_strl(0xffffU))
-    ok 59 - mp_sizeof_strl(0xffffU)
-    ok 60 - mp_encode(0xffffU) == "\xda\xff\xff"
-    # strl 0x00010000U
-    ok 61 - mp_check_strl(0x00010000U) == 0
-    ok 62 - mp_decode(mp_encode(0x00010000U)) == 0x00010000U
-    ok 63 - len(mp_encode_strl(0x00010000U)
-    ok 64 - len(mp_decode_strl(0x00010000U))
-    ok 65 - mp_sizeof_strl(0x00010000U)
-    ok 66 - mp_encode(0x00010000U) == "\xdb\x00\x01\x00\x00"
-    # strl 0xfffffffeU
-    ok 67 - mp_check_strl(0xfffffffeU) == 0
-    ok 68 - mp_decode(mp_encode(0xfffffffeU)) == 0xfffffffeU
-    ok 69 - len(mp_encode_strl(0xfffffffeU)
-    ok 70 - len(mp_decode_strl(0xfffffffeU))
-    ok 71 - mp_sizeof_strl(0xfffffffeU)
-    ok 72 - mp_encode(0xfffffffeU) == "\xdb\xff\xff\xff\xfe"
-    # strl 0xffffffffU
-    ok 73 - mp_check_strl(0xffffffffU) == 0
-    ok 74 - mp_decode(mp_encode(0xffffffffU)) == 0xffffffffU
-    ok 75 - len(mp_encode_strl(0xffffffffU)
-    ok 76 - len(mp_decode_strl(0xffffffffU))
-    ok 77 - mp_sizeof_strl(0xffffffffU)
-    ok 78 - mp_encode(0xffffffffU) == "\xdb\xff\xff\xff\xff"
-    # *** test_strls: done ***
-ok 7 - subtests
-    1..78
-    # *** test_binls ***
-    # binl 0x00U
-    ok 1 - mp_check_binl(0x00U) == 0
-    ok 2 - mp_decode(mp_encode(0x00U)) == 0x00U
-    ok 3 - len(mp_encode_binl(0x00U)
-    ok 4 - len(mp_decode_binl(0x00U))
-    ok 5 - mp_sizeof_binl(0x00U)
-    ok 6 - mp_encode(0x00U) == "\xc4\x00"
-    # binl 0x01U
-    ok 7 - mp_check_binl(0x01U) == 0
-    ok 8 - mp_decode(mp_encode(0x01U)) == 0x01U
-    ok 9 - len(mp_encode_binl(0x01U)
-    ok 10 - len(mp_decode_binl(0x01U))
-    ok 11 - mp_sizeof_binl(0x01U)
-    ok 12 - mp_encode(0x01U) == "\xc4\x01"
-    # binl 0x1eU
-    ok 13 - mp_check_binl(0x1eU) == 0
-    ok 14 - mp_decode(mp_encode(0x1eU)) == 0x1eU
-    ok 15 - len(mp_encode_binl(0x1eU)
-    ok 16 - len(mp_decode_binl(0x1eU))
-    ok 17 - mp_sizeof_binl(0x1eU)
-    ok 18 - mp_encode(0x1eU) == "\xc4\x1e"
-    # binl 0x1fU
-    ok 19 - mp_check_binl(0x1fU) == 0
-    ok 20 - mp_decode(mp_encode(0x1fU)) == 0x1fU
-    ok 21 - len(mp_encode_binl(0x1fU)
-    ok 22 - len(mp_decode_binl(0x1fU))
-    ok 23 - mp_sizeof_binl(0x1fU)
-    ok 24 - mp_encode(0x1fU) == "\xc4\x1f"
-    # binl 0x20U
-    ok 25 - mp_check_binl(0x20U) == 0
-    ok 26 - mp_decode(mp_encode(0x20U)) == 0x20U
-    ok 27 - len(mp_encode_binl(0x20U)
-    ok 28 - len(mp_decode_binl(0x20U))
-    ok 29 - mp_sizeof_binl(0x20U)
-    ok 30 - mp_encode(0x20U) == "\xc4\x20"
-    # binl 0xfeU
-    ok 31 - mp_check_binl(0xfeU) == 0
-    ok 32 - mp_decode(mp_encode(0xfeU)) == 0xfeU
-    ok 33 - len(mp_encode_binl(0xfeU)
-    ok 34 - len(mp_decode_binl(0xfeU))
-    ok 35 - mp_sizeof_binl(0xfeU)
-    ok 36 - mp_encode(0xfeU) == "\xc4\xfe"
-    # binl 0xffU
-    ok 37 - mp_check_binl(0xffU) == 0
-    ok 38 - mp_decode(mp_encode(0xffU)) == 0xffU
-    ok 39 - len(mp_encode_binl(0xffU)
-    ok 40 - len(mp_decode_binl(0xffU))
-    ok 41 - mp_sizeof_binl(0xffU)
-    ok 42 - mp_encode(0xffU) == "\xc4\xff"
-    # binl 0x0100U
-    ok 43 - mp_check_binl(0x0100U) == 0
-    ok 44 - mp_decode(mp_encode(0x0100U)) == 0x0100U
-    ok 45 - len(mp_encode_binl(0x0100U)
-    ok 46 - len(mp_decode_binl(0x0100U))
-    ok 47 - mp_sizeof_binl(0x0100U)
-    ok 48 - mp_encode(0x0100U) == "\xc5\x01\x00"
-    # binl 0xfffeU
-    ok 49 - mp_check_binl(0xfffeU) == 0
-    ok 50 - mp_decode(mp_encode(0xfffeU)) == 0xfffeU
-    ok 51 - len(mp_encode_binl(0xfffeU)
-    ok 52 - len(mp_decode_binl(0xfffeU))
-    ok 53 - mp_sizeof_binl(0xfffeU)
-    ok 54 - mp_encode(0xfffeU) == "\xc5\xff\xfe"
-    # binl 0xffffU
-    ok 55 - mp_check_binl(0xffffU) == 0
-    ok 56 - mp_decode(mp_encode(0xffffU)) == 0xffffU
-    ok 57 - len(mp_encode_binl(0xffffU)
-    ok 58 - len(mp_decode_binl(0xffffU))
-    ok 59 - mp_sizeof_binl(0xffffU)
-    ok 60 - mp_encode(0xffffU) == "\xc5\xff\xff"
-    # binl 0x00010000U
-    ok 61 - mp_check_binl(0x00010000U) == 0
-    ok 62 - mp_decode(mp_encode(0x00010000U)) == 0x00010000U
-    ok 63 - len(mp_encode_binl(0x00010000U)
-    ok 64 - len(mp_decode_binl(0x00010000U))
-    ok 65 - mp_sizeof_binl(0x00010000U)
-    ok 66 - mp_encode(0x00010000U) == "\xc6\x00\x01\x00\x00"
-    # binl 0xfffffffeU
-    ok 67 - mp_check_binl(0xfffffffeU) == 0
-    ok 68 - mp_decode(mp_encode(0xfffffffeU)) == 0xfffffffeU
-    ok 69 - len(mp_encode_binl(0xfffffffeU)
-    ok 70 - len(mp_decode_binl(0xfffffffeU))
-    ok 71 - mp_sizeof_binl(0xfffffffeU)
-    ok 72 - mp_encode(0xfffffffeU) == "\xc6\xff\xff\xff\xfe"
-    # binl 0xffffffffU
-    ok 73 - mp_check_binl(0xffffffffU) == 0
-    ok 74 - mp_decode(mp_encode(0xffffffffU)) == 0xffffffffU
-    ok 75 - len(mp_encode_binl(0xffffffffU)
-    ok 76 - len(mp_decode_binl(0xffffffffU))
-    ok 77 - mp_sizeof_binl(0xffffffffU)
-    ok 78 - mp_encode(0xffffffffU) == "\xc6\xff\xff\xff\xff"
-    # *** test_binls: done ***
-ok 8 - subtests
-    1..168
-    # *** test_extls ***
-    # extl 0x01U
-    ok 1 - mp_check_extl(0x01U) == 0
-    ok 2 - mp_decode(mp_encode(0x01U)) == 0x01U
-    ok 3 - len(mp_encode_extl(0x01U)
-    ok 4 - len(mp_decode_extl(0x01U))
-    ok 5 - mp_sizeof_extl(0x01U)
-    ok 6 - mp_encode(0x01U) == "\xd4\x00"
-    # extl 0x02U
-    ok 7 - mp_check_extl(0x02U) == 0
-    ok 8 - mp_decode(mp_encode(0x02U)) == 0x02U
-    ok 9 - len(mp_encode_extl(0x02U)
-    ok 10 - len(mp_decode_extl(0x02U))
-    ok 11 - mp_sizeof_extl(0x02U)
-    ok 12 - mp_encode(0x02U) == "\xd5\x00"
-    # extl 0x04U
-    ok 13 - mp_check_extl(0x04U) == 0
-    ok 14 - mp_decode(mp_encode(0x04U)) == 0x04U
-    ok 15 - len(mp_encode_extl(0x04U)
-    ok 16 - len(mp_decode_extl(0x04U))
-    ok 17 - mp_sizeof_extl(0x04U)
-    ok 18 - mp_encode(0x04U) == "\xd6\x00"
-    # extl 0x08U
-    ok 19 - mp_check_extl(0x08U) == 0
-    ok 20 - mp_decode(mp_encode(0x08U)) == 0x08U
-    ok 21 - len(mp_encode_extl(0x08U)
-    ok 22 - len(mp_decode_extl(0x08U))
-    ok 23 - mp_sizeof_extl(0x08U)
-    ok 24 - mp_encode(0x08U) == "\xd7\x00"
-    # extl 0x10U
-    ok 25 - mp_check_extl(0x10U) == 0
-    ok 26 - mp_decode(mp_encode(0x10U)) == 0x10U
-    ok 27 - len(mp_encode_extl(0x10U)
-    ok 28 - len(mp_decode_extl(0x10U))
-    ok 29 - mp_sizeof_extl(0x10U)
-    ok 30 - mp_encode(0x10U) == "\xd8\x00"
-    # extl 0x11U
-    ok 31 - mp_check_extl(0x11U) == 0
-    ok 32 - mp_decode(mp_encode(0x11U)) == 0x11U
-    ok 33 - len(mp_encode_extl(0x11U)
-    ok 34 - len(mp_decode_extl(0x11U))
-    ok 35 - mp_sizeof_extl(0x11U)
-    ok 36 - mp_encode(0x11U) == "\xc7\x11\x00"
-    # extl 0xfeU
-    ok 37 - mp_check_extl(0xfeU) == 0
-    ok 38 - mp_decode(mp_encode(0xfeU)) == 0xfeU
-    ok 39 - len(mp_encode_extl(0xfeU)
-    ok 40 - len(mp_decode_extl(0xfeU))
-    ok 41 - mp_sizeof_extl(0xfeU)
-    ok 42 - mp_encode(0xfeU) == "\xc7\xfe\x00"
-    # extl 0xffU
-    ok 43 - mp_check_extl(0xffU) == 0
-    ok 44 - mp_decode(mp_encode(0xffU)) == 0xffU
-    ok 45 - len(mp_encode_extl(0xffU)
-    ok 46 - len(mp_decode_extl(0xffU))
-    ok 47 - mp_sizeof_extl(0xffU)
-    ok 48 - mp_encode(0xffU) == "\xc7\xff\x00"
-    # extl 0x00U
-    ok 49 - mp_check_extl(0x00U) == 0
-    ok 50 - mp_decode(mp_encode(0x00U)) == 0x00U
-    ok 51 - len(mp_encode_extl(0x00U)
-    ok 52 - len(mp_decode_extl(0x00U))
-    ok 53 - mp_sizeof_extl(0x00U)
-    ok 54 - mp_encode(0x00U) == "\xc7\x00\x00"
-    # extl 0x03U
-    ok 55 - mp_check_extl(0x03U) == 0
-    ok 56 - mp_decode(mp_encode(0x03U)) == 0x03U
-    ok 57 - len(mp_encode_extl(0x03U)
-    ok 58 - len(mp_decode_extl(0x03U))
-    ok 59 - mp_sizeof_extl(0x03U)
-    ok 60 - mp_encode(0x03U) == "\xc7\x03\x00"
-    # extl 0x05U
-    ok 61 - mp_check_extl(0x05U) == 0
-    ok 62 - mp_decode(mp_encode(0x05U)) == 0x05U
-    ok 63 - len(mp_encode_extl(0x05U)
-    ok 64 - len(mp_decode_extl(0x05U))
-    ok 65 - mp_sizeof_extl(0x05U)
-    ok 66 - mp_encode(0x05U) == "\xc7\x05\x00"
-    # extl 0x06U
-    ok 67 - mp_check_extl(0x06U) == 0
-    ok 68 - mp_decode(mp_encode(0x06U)) == 0x06U
-    ok 69 - len(mp_encode_extl(0x06U)
-    ok 70 - len(mp_decode_extl(0x06U))
-    ok 71 - mp_sizeof_extl(0x06U)
-    ok 72 - mp_encode(0x06U) == "\xc7\x06\x00"
-    # extl 0x07U
-    ok 73 - mp_check_extl(0x07U) == 0
-    ok 74 - mp_decode(mp_encode(0x07U)) == 0x07U
-    ok 75 - len(mp_encode_extl(0x07U)
-    ok 76 - len(mp_decode_extl(0x07U))
-    ok 77 - mp_sizeof_extl(0x07U)
-    ok 78 - mp_encode(0x07U) == "\xc7\x07\x00"
-    # extl 0x09U
-    ok 79 - mp_check_extl(0x09U) == 0
-    ok 80 - mp_decode(mp_encode(0x09U)) == 0x09U
-    ok 81 - len(mp_encode_extl(0x09U)
-    ok 82 - len(mp_decode_extl(0x09U))
-    ok 83 - mp_sizeof_extl(0x09U)
-    ok 84 - mp_encode(0x09U) == "\xc7\x09\x00"
-    # extl 0x0aU
-    ok 85 - mp_check_extl(0x0aU) == 0
-    ok 86 - mp_decode(mp_encode(0x0aU)) == 0x0aU
-    ok 87 - len(mp_encode_extl(0x0aU)
-    ok 88 - len(mp_decode_extl(0x0aU))
-    ok 89 - mp_sizeof_extl(0x0aU)
-    ok 90 - mp_encode(0x0aU) == "\xc7\x0a\x00"
-    # extl 0x0bU
-    ok 91 - mp_check_extl(0x0bU) == 0
-    ok 92 - mp_decode(mp_encode(0x0bU)) == 0x0bU
-    ok 93 - len(mp_encode_extl(0x0bU)
-    ok 94 - len(mp_decode_extl(0x0bU))
-    ok 95 - mp_sizeof_extl(0x0bU)
-    ok 96 - mp_encode(0x0bU) == "\xc7\x0b\x00"
-    # extl 0x0cU
-    ok 97 - mp_check_extl(0x0cU) == 0
-    ok 98 - mp_decode(mp_encode(0x0cU)) == 0x0cU
-    ok 99 - len(mp_encode_extl(0x0cU)
-    ok 100 - len(mp_decode_extl(0x0cU))
-    ok 101 - mp_sizeof_extl(0x0cU)
-    ok 102 - mp_encode(0x0cU) == "\xc7\x0c\x00"
-    # extl 0x0dU
-    ok 103 - mp_check_extl(0x0dU) == 0
-    ok 104 - mp_decode(mp_encode(0x0dU)) == 0x0dU
-    ok 105 - len(mp_encode_extl(0x0dU)
-    ok 106 - len(mp_decode_extl(0x0dU))
-    ok 107 - mp_sizeof_extl(0x0dU)
-    ok 108 - mp_encode(0x0dU) == "\xc7\x0d\x00"
-    # extl 0x0eU
-    ok 109 - mp_check_extl(0x0eU) == 0
-    ok 110 - mp_decode(mp_encode(0x0eU)) == 0x0eU
-    ok 111 - len(mp_encode_extl(0x0eU)
-    ok 112 - len(mp_decode_extl(0x0eU))
-    ok 113 - mp_sizeof_extl(0x0eU)
-    ok 114 - mp_encode(0x0eU) == "\xc7\x0e\x00"
-    # extl 0x0fU
-    ok 115 - mp_check_extl(0x0fU) == 0
-    ok 116 - mp_decode(mp_encode(0x0fU)) == 0x0fU
-    ok 117 - len(mp_encode_extl(0x0fU)
-    ok 118 - len(mp_decode_extl(0x0fU))
-    ok 119 - mp_sizeof_extl(0x0fU)
-    ok 120 - mp_encode(0x0fU) == "\xc7\x0f\x00"
-    # extl 0x0100U
-    ok 121 - mp_check_extl(0x0100U) == 0
-    ok 122 - mp_decode(mp_encode(0x0100U)) == 0x0100U
-    ok 123 - len(mp_encode_extl(0x0100U)
-    ok 124 - len(mp_decode_extl(0x0100U))
-    ok 125 - mp_sizeof_extl(0x0100U)
-    ok 126 - mp_encode(0x0100U) == "\xc8\x01\x00\x00"
-    # extl 0x0101U
-    ok 127 - mp_check_extl(0x0101U) == 0
-    ok 128 - mp_decode(mp_encode(0x0101U)) == 0x0101U
-    ok 129 - len(mp_encode_extl(0x0101U)
-    ok 130 - len(mp_decode_extl(0x0101U))
-    ok 131 - mp_sizeof_extl(0x0101U)
-    ok 132 - mp_encode(0x0101U) == "\xc8\x01\x01\x00"
-    # extl 0xfffeU
-    ok 133 - mp_check_extl(0xfffeU) == 0
-    ok 134 - mp_decode(mp_encode(0xfffeU)) == 0xfffeU
-    ok 135 - len(mp_encode_extl(0xfffeU)
-    ok 136 - len(mp_decode_extl(0xfffeU))
-    ok 137 - mp_sizeof_extl(0xfffeU)
-    ok 138 - mp_encode(0xfffeU) == "\xc8\xff\xfe\x00"
-    # extl 0xffffU
-    ok 139 - mp_check_extl(0xffffU) == 0
-    ok 140 - mp_decode(mp_encode(0xffffU)) == 0xffffU
-    ok 141 - len(mp_encode_extl(0xffffU)
-    ok 142 - len(mp_decode_extl(0xffffU))
-    ok 143 - mp_sizeof_extl(0xffffU)
-    ok 144 - mp_encode(0xffffU) == "\xc8\xff\xff\x00"
-    # extl 0x00010000U
-    ok 145 - mp_check_extl(0x00010000U) == 0
-    ok 146 - mp_decode(mp_encode(0x00010000U)) == 0x00010000U
-    ok 147 - len(mp_encode_extl(0x00010000U)
-    ok 148 - len(mp_decode_extl(0x00010000U))
-    ok 149 - mp_sizeof_extl(0x00010000U)
-    ok 150 - mp_encode(0x00010000U) == "\xc9\x00\x01\x00\x00\x00"
-    # extl 0x00010001U
-    ok 151 - mp_check_extl(0x00010001U) == 0
-    ok 152 - mp_decode(mp_encode(0x00010001U)) == 0x00010001U
-    ok 153 - len(mp_encode_extl(0x00010001U)
-    ok 154 - len(mp_decode_extl(0x00010001U))
-    ok 155 - mp_sizeof_extl(0x00010001U)
-    ok 156 - mp_encode(0x00010001U) == "\xc9\x00\x01\x00\x01\x00"
-    # extl 0xfffffffeU
-    ok 157 - mp_check_extl(0xfffffffeU) == 0
-    ok 158 - mp_decode(mp_encode(0xfffffffeU)) == 0xfffffffeU
-    ok 159 - len(mp_encode_extl(0xfffffffeU)
-    ok 160 - len(mp_decode_extl(0xfffffffeU))
-    ok 161 - mp_sizeof_extl(0xfffffffeU)
-    ok 162 - mp_encode(0xfffffffeU) == "\xc9\xff\xff\xff\xfe\x00"
-    # extl 0xffffffffU
-    ok 163 - mp_check_extl(0xffffffffU) == 0
-    ok 164 - mp_decode(mp_encode(0xffffffffU)) == 0xffffffffU
-    ok 165 - len(mp_encode_extl(0xffffffffU)
-    ok 166 - len(mp_decode_extl(0xffffffffU))
-    ok 167 - mp_sizeof_extl(0xffffffffU)
-    ok 168 - mp_encode(0xffffffffU) == "\xc9\xff\xff\xff\xff\x00"
-    # *** test_extls: done ***
-ok 9 - subtests
-    1..96
-    # *** test_strs ***
-    # str len=0x01
-    ok 1 - len(mp_decode_str(x, 1))
-    ok 2 - len(mp_decode_strbin(x, 1))
-    ok 3 - mp_check_str(mp_encode_str(x, 0x01))
-    ok 4 - len(mp_decode_str(x, 0x01)
-    ok 5 - len(mp_next_str(x, 0x01)
-    ok 6 - len(mp_check_str(x, 0x01)
-    ok 7 - mp_sizeof_str(0x01)
-    ok 8 - mp_encode_str(x, 0x01) == x
-    # str len=0x1e
-    ok 9 - len(mp_decode_str(x, 30))
-    ok 10 - len(mp_decode_strbin(x, 30))
-    ok 11 - mp_check_str(mp_encode_str(x, 0x1e))
-    ok 12 - len(mp_decode_str(x, 0x1e)
-    ok 13 - len(mp_next_str(x, 0x1e)
-    ok 14 - len(mp_check_str(x, 0x1e)
-    ok 15 - mp_sizeof_str(0x1e)
-    ok 16 - mp_encode_str(x, 0x1e) == x
-    # str len=0x1f
-    ok 17 - len(mp_decode_str(x, 31))
-    ok 18 - len(mp_decode_strbin(x, 31))
-    ok 19 - mp_check_str(mp_encode_str(x, 0x1f))
-    ok 20 - len(mp_decode_str(x, 0x1f)
-    ok 21 - len(mp_next_str(x, 0x1f)
-    ok 22 - len(mp_check_str(x, 0x1f)
-    ok 23 - mp_sizeof_str(0x1f)
-    ok 24 - mp_encode_str(x, 0x1f) == x
-    # str len=0x20
-    ok 25 - len(mp_decode_str(x, 32))
-    ok 26 - len(mp_decode_strbin(x, 32))
-    ok 27 - mp_check_str(mp_encode_str(x, 0x20))
-    ok 28 - len(mp_decode_str(x, 0x20)
-    ok 29 - len(mp_next_str(x, 0x20)
-    ok 30 - len(mp_check_str(x, 0x20)
-    ok 31 - mp_sizeof_str(0x20)
-    ok 32 - mp_encode_str(x, 0x20) == x
-    # str len=0xfe
-    ok 33 - len(mp_decode_str(x, 254))
-    ok 34 - len(mp_decode_strbin(x, 254))
-    ok 35 - mp_check_str(mp_encode_str(x, 0xfe))
-    ok 36 - len(mp_decode_str(x, 0xfe)
-    ok 37 - len(mp_next_str(x, 0xfe)
-    ok 38 - len(mp_check_str(x, 0xfe)
-    ok 39 - mp_sizeof_str(0xfe)
-    ok 40 - mp_encode_str(x, 0xfe) == x
-    # str len=0xff
-    ok 41 - len(mp_decode_str(x, 255))
-    ok 42 - len(mp_decode_strbin(x, 255))
-    ok 43 - mp_check_str(mp_encode_str(x, 0xff))
-    ok 44 - len(mp_decode_str(x, 0xff)
-    ok 45 - len(mp_next_str(x, 0xff)
-    ok 46 - len(mp_check_str(x, 0xff)
-    ok 47 - mp_sizeof_str(0xff)
-    ok 48 - mp_encode_str(x, 0xff) == x
-    # str len=0x100
-    ok 49 - len(mp_decode_str(x, 256))
-    ok 50 - len(mp_decode_strbin(x, 256))
-    ok 51 - mp_check_str(mp_encode_str(x, 0x100))
-    ok 52 - len(mp_decode_str(x, 0x100)
-    ok 53 - len(mp_next_str(x, 0x100)
-    ok 54 - len(mp_check_str(x, 0x100)
-    ok 55 - mp_sizeof_str(0x100)
-    ok 56 - mp_encode_str(x, 0x100) == x
-    # str len=0x101
-    ok 57 - len(mp_decode_str(x, 257))
-    ok 58 - len(mp_decode_strbin(x, 257))
-    ok 59 - mp_check_str(mp_encode_str(x, 0x101))
-    ok 60 - len(mp_decode_str(x, 0x101)
-    ok 61 - len(mp_next_str(x, 0x101)
-    ok 62 - len(mp_check_str(x, 0x101)
-    ok 63 - mp_sizeof_str(0x101)
-    ok 64 - mp_encode_str(x, 0x101) == x
-    # str len=0xfffe
-    ok 65 - len(mp_decode_str(x, 65534))
-    ok 66 - len(mp_decode_strbin(x, 65534))
-    ok 67 - mp_check_str(mp_encode_str(x, 0xfffe))
-    ok 68 - len(mp_decode_str(x, 0xfffe)
-    ok 69 - len(mp_next_str(x, 0xfffe)
-    ok 70 - len(mp_check_str(x, 0xfffe)
-    ok 71 - mp_sizeof_str(0xfffe)
-    ok 72 - mp_encode_str(x, 0xfffe) == x
-    # str len=0xffff
-    ok 73 - len(mp_decode_str(x, 65535))
-    ok 74 - len(mp_decode_strbin(x, 65535))
-    ok 75 - mp_check_str(mp_encode_str(x, 0xffff))
-    ok 76 - len(mp_decode_str(x, 0xffff)
-    ok 77 - len(mp_next_str(x, 0xffff)
-    ok 78 - len(mp_check_str(x, 0xffff)
-    ok 79 - mp_sizeof_str(0xffff)
-    ok 80 - mp_encode_str(x, 0xffff) == x
-    # str len=0x10000
-    ok 81 - len(mp_decode_str(x, 65536))
-    ok 82 - len(mp_decode_strbin(x, 65536))
-    ok 83 - mp_check_str(mp_encode_str(x, 0x10000))
-    ok 84 - len(mp_decode_str(x, 0x10000)
-    ok 85 - len(mp_next_str(x, 0x10000)
-    ok 86 - len(mp_check_str(x, 0x10000)
-    ok 87 - mp_sizeof_str(0x10000)
-    ok 88 - mp_encode_str(x, 0x10000) == x
-    # str len=0x10001
-    ok 89 - len(mp_decode_str(x, 65537))
-    ok 90 - len(mp_decode_strbin(x, 65537))
-    ok 91 - mp_check_str(mp_encode_str(x, 0x10001))
-    ok 92 - len(mp_decode_str(x, 0x10001)
-    ok 93 - len(mp_next_str(x, 0x10001)
-    ok 94 - len(mp_check_str(x, 0x10001)
-    ok 95 - mp_sizeof_str(0x10001)
-    ok 96 - mp_encode_str(x, 0x10001) == x
-    # *** test_strs: done ***
-ok 10 - subtests
-    1..96
-    # *** test_bins ***
-    # bin len=0x01
-    ok 1 - len(mp_decode_bin(x, 1))
-    ok 2 - len(mp_decode_strbin(x, 1))
-    ok 3 - mp_check_bin(mp_encode_bin(x, 0x01))
-    ok 4 - len(mp_decode_bin(x, 0x01)
-    ok 5 - len(mp_next_bin(x, 0x01)
-    ok 6 - len(mp_check_bin(x, 0x01)
-    ok 7 - mp_sizeof_bin(0x01)
-    ok 8 - mp_encode_bin(x, 0x01) == x
-    # bin len=0x1e
-    ok 9 - len(mp_decode_bin(x, 30))
-    ok 10 - len(mp_decode_strbin(x, 30))
-    ok 11 - mp_check_bin(mp_encode_bin(x, 0x1e))
-    ok 12 - len(mp_decode_bin(x, 0x1e)
-    ok 13 - len(mp_next_bin(x, 0x1e)
-    ok 14 - len(mp_check_bin(x, 0x1e)
-    ok 15 - mp_sizeof_bin(0x1e)
-    ok 16 - mp_encode_bin(x, 0x1e) == x
-    # bin len=0x1f
-    ok 17 - len(mp_decode_bin(x, 31))
-    ok 18 - len(mp_decode_strbin(x, 31))
-    ok 19 - mp_check_bin(mp_encode_bin(x, 0x1f))
-    ok 20 - len(mp_decode_bin(x, 0x1f)
-    ok 21 - len(mp_next_bin(x, 0x1f)
-    ok 22 - len(mp_check_bin(x, 0x1f)
-    ok 23 - mp_sizeof_bin(0x1f)
-    ok 24 - mp_encode_bin(x, 0x1f) == x
-    # bin len=0x20
-    ok 25 - len(mp_decode_bin(x, 32))
-    ok 26 - len(mp_decode_strbin(x, 32))
-    ok 27 - mp_check_bin(mp_encode_bin(x, 0x20))
-    ok 28 - len(mp_decode_bin(x, 0x20)
-    ok 29 - len(mp_next_bin(x, 0x20)
-    ok 30 - len(mp_check_bin(x, 0x20)
-    ok 31 - mp_sizeof_bin(0x20)
-    ok 32 - mp_encode_bin(x, 0x20) == x
-    # bin len=0xfe
-    ok 33 - len(mp_decode_bin(x, 254))
-    ok 34 - len(mp_decode_strbin(x, 254))
-    ok 35 - mp_check_bin(mp_encode_bin(x, 0xfe))
-    ok 36 - len(mp_decode_bin(x, 0xfe)
-    ok 37 - len(mp_next_bin(x, 0xfe)
-    ok 38 - len(mp_check_bin(x, 0xfe)
-    ok 39 - mp_sizeof_bin(0xfe)
-    ok 40 - mp_encode_bin(x, 0xfe) == x
-    # bin len=0xff
-    ok 41 - len(mp_decode_bin(x, 255))
-    ok 42 - len(mp_decode_strbin(x, 255))
-    ok 43 - mp_check_bin(mp_encode_bin(x, 0xff))
-    ok 44 - len(mp_decode_bin(x, 0xff)
-    ok 45 - len(mp_next_bin(x, 0xff)
-    ok 46 - len(mp_check_bin(x, 0xff)
-    ok 47 - mp_sizeof_bin(0xff)
-    ok 48 - mp_encode_bin(x, 0xff) == x
-    # bin len=0x100
-    ok 49 - len(mp_decode_bin(x, 256))
-    ok 50 - len(mp_decode_strbin(x, 256))
-    ok 51 - mp_check_bin(mp_encode_bin(x, 0x100))
-    ok 52 - len(mp_decode_bin(x, 0x100)
-    ok 53 - len(mp_next_bin(x, 0x100)
-    ok 54 - len(mp_check_bin(x, 0x100)
-    ok 55 - mp_sizeof_bin(0x100)
-    ok 56 - mp_encode_bin(x, 0x100) == x
-    # bin len=0x101
-    ok 57 - len(mp_decode_bin(x, 257))
-    ok 58 - len(mp_decode_strbin(x, 257))
-    ok 59 - mp_check_bin(mp_encode_bin(x, 0x101))
-    ok 60 - len(mp_decode_bin(x, 0x101)
-    ok 61 - len(mp_next_bin(x, 0x101)
-    ok 62 - len(mp_check_bin(x, 0x101)
-    ok 63 - mp_sizeof_bin(0x101)
-    ok 64 - mp_encode_bin(x, 0x101) == x
-    # bin len=0xfffe
-    ok 65 - len(mp_decode_bin(x, 65534))
-    ok 66 - len(mp_decode_strbin(x, 65534))
-    ok 67 - mp_check_bin(mp_encode_bin(x, 0xfffe))
-    ok 68 - len(mp_decode_bin(x, 0xfffe)
-    ok 69 - len(mp_next_bin(x, 0xfffe)
-    ok 70 - len(mp_check_bin(x, 0xfffe)
-    ok 71 - mp_sizeof_bin(0xfffe)
-    ok 72 - mp_encode_bin(x, 0xfffe) == x
-    # bin len=0xffff
-    ok 73 - len(mp_decode_bin(x, 65535))
-    ok 74 - len(mp_decode_strbin(x, 65535))
-    ok 75 - mp_check_bin(mp_encode_bin(x, 0xffff))
-    ok 76 - len(mp_decode_bin(x, 0xffff)
-    ok 77 - len(mp_next_bin(x, 0xffff)
-    ok 78 - len(mp_check_bin(x, 0xffff)
-    ok 79 - mp_sizeof_bin(0xffff)
-    ok 80 - mp_encode_bin(x, 0xffff) == x
-    # bin len=0x10000
-    ok 81 - len(mp_decode_bin(x, 65536))
-    ok 82 - len(mp_decode_strbin(x, 65536))
-    ok 83 - mp_check_bin(mp_encode_bin(x, 0x10000))
-    ok 84 - len(mp_decode_bin(x, 0x10000)
-    ok 85 - len(mp_next_bin(x, 0x10000)
-    ok 86 - len(mp_check_bin(x, 0x10000)
-    ok 87 - mp_sizeof_bin(0x10000)
-    ok 88 - mp_encode_bin(x, 0x10000) == x
-    # bin len=0x10001
-    ok 89 - len(mp_decode_bin(x, 65537))
-    ok 90 - len(mp_decode_strbin(x, 65537))
-    ok 91 - mp_check_bin(mp_encode_bin(x, 0x10001))
-    ok 92 - len(mp_decode_bin(x, 0x10001)
-    ok 93 - len(mp_next_bin(x, 0x10001)
-    ok 94 - len(mp_check_bin(x, 0x10001)
-    ok 95 - mp_sizeof_bin(0x10001)
-    ok 96 - mp_encode_bin(x, 0x10001) == x
-    # *** test_bins: done ***
-ok 11 - subtests
-    1..225
-    # *** test_exts ***
-    # ext len=0x01
-    ok 1 - len(mp_decode_ext(x, 1))
-    ok 2 - type(mp_decode_ext(x))
-    ok 3 - len(mp_decode_strbin(x, 1))
-    ok 4 - mp_check_ext(mp_encode_ext(x, 0x01))
-    ok 5 - len(mp_decode_ext(x, 0x01)
-    ok 6 - len(mp_next_ext(x, 0x01)
-    ok 7 - len(mp_check_ext(x, 0x01)
-    ok 8 - mp_sizeof_ext(0x01)
-    ok 9 - mp_encode_ext(x, 0x01) == x
-    # ext len=0x02
-    ok 10 - len(mp_decode_ext(x, 2))
-    ok 11 - type(mp_decode_ext(x))
-    ok 12 - len(mp_decode_strbin(x, 2))
-    ok 13 - mp_check_ext(mp_encode_ext(x, 0x02))
-    ok 14 - len(mp_decode_ext(x, 0x02)
-    ok 15 - len(mp_next_ext(x, 0x02)
-    ok 16 - len(mp_check_ext(x, 0x02)
-    ok 17 - mp_sizeof_ext(0x02)
-    ok 18 - mp_encode_ext(x, 0x02) == x
-    # ext len=0x03
-    ok 19 - len(mp_decode_ext(x, 3))
-    ok 20 - type(mp_decode_ext(x))
-    ok 21 - len(mp_decode_strbin(x, 3))
-    ok 22 - mp_check_ext(mp_encode_ext(x, 0x03))
-    ok 23 - len(mp_decode_ext(x, 0x03)
-    ok 24 - len(mp_next_ext(x, 0x03)
-    ok 25 - len(mp_check_ext(x, 0x03)
-    ok 26 - mp_sizeof_ext(0x03)
-    ok 27 - mp_encode_ext(x, 0x03) == x
-    # ext len=0x04
-    ok 28 - len(mp_decode_ext(x, 4))
-    ok 29 - type(mp_decode_ext(x))
-    ok 30 - len(mp_decode_strbin(x, 4))
-    ok 31 - mp_check_ext(mp_encode_ext(x, 0x04))
-    ok 32 - len(mp_decode_ext(x, 0x04)
-    ok 33 - len(mp_next_ext(x, 0x04)
-    ok 34 - len(mp_check_ext(x, 0x04)
-    ok 35 - mp_sizeof_ext(0x04)
-    ok 36 - mp_encode_ext(x, 0x04) == x
-    # ext len=0x05
-    ok 37 - len(mp_decode_ext(x, 5))
-    ok 38 - type(mp_decode_ext(x))
-    ok 39 - len(mp_decode_strbin(x, 5))
-    ok 40 - mp_check_ext(mp_encode_ext(x, 0x05))
-    ok 41 - len(mp_decode_ext(x, 0x05)
-    ok 42 - len(mp_next_ext(x, 0x05)
-    ok 43 - len(mp_check_ext(x, 0x05)
-    ok 44 - mp_sizeof_ext(0x05)
-    ok 45 - mp_encode_ext(x, 0x05) == x
-    # ext len=0x06
-    ok 46 - len(mp_decode_ext(x, 6))
-    ok 47 - type(mp_decode_ext(x))
-    ok 48 - len(mp_decode_strbin(x, 6))
-    ok 49 - mp_check_ext(mp_encode_ext(x, 0x06))
-    ok 50 - len(mp_decode_ext(x, 0x06)
-    ok 51 - len(mp_next_ext(x, 0x06)
-    ok 52 - len(mp_check_ext(x, 0x06)
-    ok 53 - mp_sizeof_ext(0x06)
-    ok 54 - mp_encode_ext(x, 0x06) == x
-    # ext len=0x07
-    ok 55 - len(mp_decode_ext(x, 7))
-    ok 56 - type(mp_decode_ext(x))
-    ok 57 - len(mp_decode_strbin(x, 7))
-    ok 58 - mp_check_ext(mp_encode_ext(x, 0x07))
-    ok 59 - len(mp_decode_ext(x, 0x07)
-    ok 60 - len(mp_next_ext(x, 0x07)
-    ok 61 - len(mp_check_ext(x, 0x07)
-    ok 62 - mp_sizeof_ext(0x07)
-    ok 63 - mp_encode_ext(x, 0x07) == x
-    # ext len=0x08
-    ok 64 - len(mp_decode_ext(x, 8))
-    ok 65 - type(mp_decode_ext(x))
-    ok 66 - len(mp_decode_strbin(x, 8))
-    ok 67 - mp_check_ext(mp_encode_ext(x, 0x08))
-    ok 68 - len(mp_decode_ext(x, 0x08)
-    ok 69 - len(mp_next_ext(x, 0x08)
-    ok 70 - len(mp_check_ext(x, 0x08)
-    ok 71 - mp_sizeof_ext(0x08)
-    ok 72 - mp_encode_ext(x, 0x08) == x
-    # ext len=0x09
-    ok 73 - len(mp_decode_ext(x, 9))
-    ok 74 - type(mp_decode_ext(x))
-    ok 75 - len(mp_decode_strbin(x, 9))
-    ok 76 - mp_check_ext(mp_encode_ext(x, 0x09))
-    ok 77 - len(mp_decode_ext(x, 0x09)
-    ok 78 - len(mp_next_ext(x, 0x09)
-    ok 79 - len(mp_check_ext(x, 0x09)
-    ok 80 - mp_sizeof_ext(0x09)
-    ok 81 - mp_encode_ext(x, 0x09) == x
-    # ext len=0x0a
-    ok 82 - len(mp_decode_ext(x, 10))
-    ok 83 - type(mp_decode_ext(x))
-    ok 84 - len(mp_decode_strbin(x, 10))
-    ok 85 - mp_check_ext(mp_encode_ext(x, 0x0a))
-    ok 86 - len(mp_decode_ext(x, 0x0a)
-    ok 87 - len(mp_next_ext(x, 0x0a)
-    ok 88 - len(mp_check_ext(x, 0x0a)
-    ok 89 - mp_sizeof_ext(0x0a)
-    ok 90 - mp_encode_ext(x, 0x0a) == x
-    # ext len=0x0b
-    ok 91 - len(mp_decode_ext(x, 11))
-    ok 92 - type(mp_decode_ext(x))
-    ok 93 - len(mp_decode_strbin(x, 11))
-    ok 94 - mp_check_ext(mp_encode_ext(x, 0x0b))
-    ok 95 - len(mp_decode_ext(x, 0x0b)
-    ok 96 - len(mp_next_ext(x, 0x0b)
-    ok 97 - len(mp_check_ext(x, 0x0b)
-    ok 98 - mp_sizeof_ext(0x0b)
-    ok 99 - mp_encode_ext(x, 0x0b) == x
-    # ext len=0x0c
-    ok 100 - len(mp_decode_ext(x, 12))
-    ok 101 - type(mp_decode_ext(x))
-    ok 102 - len(mp_decode_strbin(x, 12))
-    ok 103 - mp_check_ext(mp_encode_ext(x, 0x0c))
-    ok 104 - len(mp_decode_ext(x, 0x0c)
-    ok 105 - len(mp_next_ext(x, 0x0c)
-    ok 106 - len(mp_check_ext(x, 0x0c)
-    ok 107 - mp_sizeof_ext(0x0c)
-    ok 108 - mp_encode_ext(x, 0x0c) == x
-    # ext len=0x0d
-    ok 109 - len(mp_decode_ext(x, 13))
-    ok 110 - type(mp_decode_ext(x))
-    ok 111 - len(mp_decode_strbin(x, 13))
-    ok 112 - mp_check_ext(mp_encode_ext(x, 0x0d))
-    ok 113 - len(mp_decode_ext(x, 0x0d)
-    ok 114 - len(mp_next_ext(x, 0x0d)
-    ok 115 - len(mp_check_ext(x, 0x0d)
-    ok 116 - mp_sizeof_ext(0x0d)
-    ok 117 - mp_encode_ext(x, 0x0d) == x
-    # ext len=0x0e
-    ok 118 - len(mp_decode_ext(x, 14))
-    ok 119 - type(mp_decode_ext(x))
-    ok 120 - len(mp_decode_strbin(x, 14))
-    ok 121 - mp_check_ext(mp_encode_ext(x, 0x0e))
-    ok 122 - len(mp_decode_ext(x, 0x0e)
-    ok 123 - len(mp_next_ext(x, 0x0e)
-    ok 124 - len(mp_check_ext(x, 0x0e)
-    ok 125 - mp_sizeof_ext(0x0e)
-    ok 126 - mp_encode_ext(x, 0x0e) == x
-    # ext len=0x0f
-    ok 127 - len(mp_decode_ext(x, 15))
-    ok 128 - type(mp_decode_ext(x))
-    ok 129 - len(mp_decode_strbin(x, 15))
-    ok 130 - mp_check_ext(mp_encode_ext(x, 0x0f))
-    ok 131 - len(mp_decode_ext(x, 0x0f)
-    ok 132 - len(mp_next_ext(x, 0x0f)
-    ok 133 - len(mp_check_ext(x, 0x0f)
-    ok 134 - mp_sizeof_ext(0x0f)
-    ok 135 - mp_encode_ext(x, 0x0f) == x
-    # ext len=0x10
-    ok 136 - len(mp_decode_ext(x, 16))
-    ok 137 - type(mp_decode_ext(x))
-    ok 138 - len(mp_decode_strbin(x, 16))
-    ok 139 - mp_check_ext(mp_encode_ext(x, 0x10))
-    ok 140 - len(mp_decode_ext(x, 0x10)
-    ok 141 - len(mp_next_ext(x, 0x10)
-    ok 142 - len(mp_check_ext(x, 0x10)
-    ok 143 - mp_sizeof_ext(0x10)
-    ok 144 - mp_encode_ext(x, 0x10) == x
-    # ext len=0x11
-    ok 145 - len(mp_decode_ext(x, 17))
-    ok 146 - type(mp_decode_ext(x))
-    ok 147 - len(mp_decode_strbin(x, 17))
-    ok 148 - mp_check_ext(mp_encode_ext(x, 0x11))
-    ok 149 - len(mp_decode_ext(x, 0x11)
-    ok 150 - len(mp_next_ext(x, 0x11)
-    ok 151 - len(mp_check_ext(x, 0x11)
-    ok 152 - mp_sizeof_ext(0x11)
-    ok 153 - mp_encode_ext(x, 0x11) == x
-    # ext len=0xfe
-    ok 154 - len(mp_decode_ext(x, 254))
-    ok 155 - type(mp_decode_ext(x))
-    ok 156 - len(mp_decode_strbin(x, 254))
-    ok 157 - mp_check_ext(mp_encode_ext(x, 0xfe))
-    ok 158 - len(mp_decode_ext(x, 0xfe)
-    ok 159 - len(mp_next_ext(x, 0xfe)
-    ok 160 - len(mp_check_ext(x, 0xfe)
-    ok 161 - mp_sizeof_ext(0xfe)
-    ok 162 - mp_encode_ext(x, 0xfe) == x
-    # ext len=0xff
-    ok 163 - len(mp_decode_ext(x, 255))
-    ok 164 - type(mp_decode_ext(x))
-    ok 165 - len(mp_decode_strbin(x, 255))
-    ok 166 - mp_check_ext(mp_encode_ext(x, 0xff))
-    ok 167 - len(mp_decode_ext(x, 0xff)
-    ok 168 - len(mp_next_ext(x, 0xff)
-    ok 169 - len(mp_check_ext(x, 0xff)
-    ok 170 - mp_sizeof_ext(0xff)
-    ok 171 - mp_encode_ext(x, 0xff) == x
-    # ext len=0x0100
-    ok 172 - len(mp_decode_ext(x, 256))
-    ok 173 - type(mp_decode_ext(x))
-    ok 174 - len(mp_decode_strbin(x, 256))
-    ok 175 - mp_check_ext(mp_encode_ext(x, 0x0100))
-    ok 176 - len(mp_decode_ext(x, 0x0100)
-    ok 177 - len(mp_next_ext(x, 0x0100)
-    ok 178 - len(mp_check_ext(x, 0x0100)
-    ok 179 - mp_sizeof_ext(0x0100)
-    ok 180 - mp_encode_ext(x, 0x0100) == x
-    # ext len=0x0101
-    ok 181 - len(mp_decode_ext(x, 257))
-    ok 182 - type(mp_decode_ext(x))
-    ok 183 - len(mp_decode_strbin(x, 257))
-    ok 184 - mp_check_ext(mp_encode_ext(x, 0x0101))
-    ok 185 - len(mp_decode_ext(x, 0x0101)
-    ok 186 - len(mp_next_ext(x, 0x0101)
-    ok 187 - len(mp_check_ext(x, 0x0101)
-    ok 188 - mp_sizeof_ext(0x0101)
-    ok 189 - mp_encode_ext(x, 0x0101) == x
-    # ext len=0xfffe
-    ok 190 - len(mp_decode_ext(x, 65534))
-    ok 191 - type(mp_decode_ext(x))
-    ok 192 - len(mp_decode_strbin(x, 65534))
-    ok 193 - mp_check_ext(mp_encode_ext(x, 0xfffe))
-    ok 194 - len(mp_decode_ext(x, 0xfffe)
-    ok 195 - len(mp_next_ext(x, 0xfffe)
-    ok 196 - len(mp_check_ext(x, 0xfffe)
-    ok 197 - mp_sizeof_ext(0xfffe)
-    ok 198 - mp_encode_ext(x, 0xfffe) == x
-    # ext len=0xffff
-    ok 199 - len(mp_decode_ext(x, 65535))
-    ok 200 - type(mp_decode_ext(x))
-    ok 201 - len(mp_decode_strbin(x, 65535))
-    ok 202 - mp_check_ext(mp_encode_ext(x, 0xffff))
-    ok 203 - len(mp_decode_ext(x, 0xffff)
-    ok 204 - len(mp_next_ext(x, 0xffff)
-    ok 205 - len(mp_check_ext(x, 0xffff)
-    ok 206 - mp_sizeof_ext(0xffff)
-    ok 207 - mp_encode_ext(x, 0xffff) == x
-    # ext len=0x00010000
-    ok 208 - len(mp_decode_ext(x, 65536))
-    ok 209 - type(mp_decode_ext(x))
-    ok 210 - len(mp_decode_strbin(x, 65536))
-    ok 211 - mp_check_ext(mp_encode_ext(x, 0x00010000))
-    ok 212 - len(mp_decode_ext(x, 0x00010000)
-    ok 213 - len(mp_next_ext(x, 0x00010000)
-    ok 214 - len(mp_check_ext(x, 0x00010000)
-    ok 215 - mp_sizeof_ext(0x00010000)
-    ok 216 - mp_encode_ext(x, 0x00010000) == x
-    # ext len=0x00010001
-    ok 217 - len(mp_decode_ext(x, 65537))
-    ok 218 - type(mp_decode_ext(x))
-    ok 219 - len(mp_decode_strbin(x, 65537))
-    ok 220 - mp_check_ext(mp_encode_ext(x, 0x00010001))
-    ok 221 - len(mp_decode_ext(x, 0x00010001)
-    ok 222 - len(mp_next_ext(x, 0x00010001)
-    ok 223 - len(mp_check_ext(x, 0x00010001)
-    ok 224 - mp_sizeof_ext(0x00010001)
-    ok 225 - mp_encode_ext(x, 0x00010001) == x
-    # *** test_exts: done ***
-ok 12 - subtests
-    1..54
-    # *** test_arrays ***
-    # array 0
-    ok 1 - mp_check_array(0) == 0
-    ok 2 - mp_decode(mp_encode(0)) == 0
-    ok 3 - len(mp_encode_array(0)
-    ok 4 - len(mp_decode_array(0))
-    ok 5 - mp_sizeof_array(0)
-    ok 6 - mp_encode(0) == "\x90"
-    # array 1
-    ok 7 - mp_check_array(1) == 0
-    ok 8 - mp_decode(mp_encode(1)) == 1
-    ok 9 - len(mp_encode_array(1)
-    ok 10 - len(mp_decode_array(1))
-    ok 11 - mp_sizeof_array(1)
-    ok 12 - mp_encode(1) == "\x91"
-    # array 15
-    ok 13 - mp_check_array(15) == 0
-    ok 14 - mp_decode(mp_encode(15)) == 15
-    ok 15 - len(mp_encode_array(15)
-    ok 16 - len(mp_decode_array(15))
-    ok 17 - mp_sizeof_array(15)
-    ok 18 - mp_encode(15) == "\x9f"
-    # array 16
-    ok 19 - mp_check_array(16) == 0
-    ok 20 - mp_decode(mp_encode(16)) == 16
-    ok 21 - len(mp_encode_array(16)
-    ok 22 - len(mp_decode_array(16))
-    ok 23 - mp_sizeof_array(16)
-    ok 24 - mp_encode(16) == "\xdc\x00\x10"
-    # array 0xfffe
-    ok 25 - mp_check_array(0xfffe) == 0
-    ok 26 - mp_decode(mp_encode(0xfffe)) == 0xfffe
-    ok 27 - len(mp_encode_array(0xfffe)
-    ok 28 - len(mp_decode_array(0xfffe))
-    ok 29 - mp_sizeof_array(0xfffe)
-    ok 30 - mp_encode(0xfffe) == "\xdc\xff\xfe"
-    # array 0xffff
-    ok 31 - mp_check_array(0xffff) == 0
-    ok 32 - mp_decode(mp_encode(0xffff)) == 0xffff
-    ok 33 - len(mp_encode_array(0xffff)
-    ok 34 - len(mp_decode_array(0xffff))
-    ok 35 - mp_sizeof_array(0xffff)
-    ok 36 - mp_encode(0xffff) == "\xdc\xff\xff"
-    # array 0x10000
-    ok 37 - mp_check_array(0x10000) == 0
-    ok 38 - mp_decode(mp_encode(0x10000)) == 0x10000
-    ok 39 - len(mp_encode_array(0x10000)
-    ok 40 - len(mp_decode_array(0x10000))
-    ok 41 - mp_sizeof_array(0x10000)
-    ok 42 - mp_encode(0x10000) == "\xdd\x00\x01\x00\x00"
-    # array 0xfffffffeU
-    ok 43 - mp_check_array(0xfffffffeU) == 0
-    ok 44 - mp_decode(mp_encode(0xfffffffeU)) == 0xfffffffeU
-    ok 45 - len(mp_encode_array(0xfffffffeU)
-    ok 46 - len(mp_decode_array(0xfffffffeU))
-    ok 47 - mp_sizeof_array(0xfffffffeU)
-    ok 48 - mp_encode(0xfffffffeU) == "\xdd\xff\xff\xff\xfe"
-    # array 0xffffffffU
-    ok 49 - mp_check_array(0xffffffffU) == 0
-    ok 50 - mp_decode(mp_encode(0xffffffffU)) == 0xffffffffU
-    ok 51 - len(mp_encode_array(0xffffffffU)
-    ok 52 - len(mp_decode_array(0xffffffffU))
-    ok 53 - mp_sizeof_array(0xffffffffU)
-    ok 54 - mp_encode(0xffffffffU) == "\xdd\xff\xff\xff\xff"
-    # *** test_arrays: done ***
-ok 13 - subtests
-    1..54
-    # *** test_maps ***
-    # map 0
-    ok 1 - mp_check_map(0) == 0
-    ok 2 - mp_decode(mp_encode(0)) == 0
-    ok 3 - len(mp_encode_map(0)
-    ok 4 - len(mp_decode_map(0))
-    ok 5 - mp_sizeof_map(0)
-    ok 6 - mp_encode(0) == "\x80"
-    # map 1
-    ok 7 - mp_check_map(1) == 0
-    ok 8 - mp_decode(mp_encode(1)) == 1
-    ok 9 - len(mp_encode_map(1)
-    ok 10 - len(mp_decode_map(1))
-    ok 11 - mp_sizeof_map(1)
-    ok 12 - mp_encode(1) == "\x81"
-    # map 15
-    ok 13 - mp_check_map(15) == 0
-    ok 14 - mp_decode(mp_encode(15)) == 15
-    ok 15 - len(mp_encode_map(15)
-    ok 16 - len(mp_decode_map(15))
-    ok 17 - mp_sizeof_map(15)
-    ok 18 - mp_encode(15) == "\x8f"
-    # map 16
-    ok 19 - mp_check_map(16) == 0
-    ok 20 - mp_decode(mp_encode(16)) == 16
-    ok 21 - len(mp_encode_map(16)
-    ok 22 - len(mp_decode_map(16))
-    ok 23 - mp_sizeof_map(16)
-    ok 24 - mp_encode(16) == "\xde\x00\x10"
-    # map 0xfffe
-    ok 25 - mp_check_map(0xfffe) == 0
-    ok 26 - mp_decode(mp_encode(0xfffe)) == 0xfffe
-    ok 27 - len(mp_encode_map(0xfffe)
-    ok 28 - len(mp_decode_map(0xfffe))
-    ok 29 - mp_sizeof_map(0xfffe)
-    ok 30 - mp_encode(0xfffe) == "\xde\xff\xfe"
-    # map 0xffff
-    ok 31 - mp_check_map(0xffff) == 0
-    ok 32 - mp_decode(mp_encode(0xffff)) == 0xffff
-    ok 33 - len(mp_encode_map(0xffff)
-    ok 34 - len(mp_decode_map(0xffff))
-    ok 35 - mp_sizeof_map(0xffff)
-    ok 36 - mp_encode(0xffff) == "\xde\xff\xff"
-    # map 0x10000
-    ok 37 - mp_check_map(0x10000) == 0
-    ok 38 - mp_decode(mp_encode(0x10000)) == 0x10000
-    ok 39 - len(mp_encode_map(0x10000)
-    ok 40 - len(mp_decode_map(0x10000))
-    ok 41 - mp_sizeof_map(0x10000)
-    ok 42 - mp_encode(0x10000) == "\xdf\x00\x01\x00\x00"
-    # map 0xfffffffeU
-    ok 43 - mp_check_map(0xfffffffeU) == 0
-    ok 44 - mp_decode(mp_encode(0xfffffffeU)) == 0xfffffffeU
-    ok 45 - len(mp_encode_map(0xfffffffeU)
-    ok 46 - len(mp_decode_map(0xfffffffeU))
-    ok 47 - mp_sizeof_map(0xfffffffeU)
-    ok 48 - mp_encode(0xfffffffeU) == "\xdf\xff\xff\xff\xfe"
-    # map 0xffffffffU
-    ok 49 - mp_check_map(0xffffffffU) == 0
-    ok 50 - mp_decode(mp_encode(0xffffffffU)) == 0xffffffffU
-    ok 51 - len(mp_encode_map(0xffffffffU)
-    ok 52 - len(mp_decode_map(0xffffffffU))
-    ok 53 - mp_sizeof_map(0xffffffffU)
-    ok 54 - mp_encode(0xffffffffU) == "\xdf\xff\xff\xff\xff"
-    # *** test_maps: done ***
-ok 14 - subtests
-    1..52
-    # *** test_next_on_arrays ***
-    # next/check on array(0)
-    ok 1 - mp_check(array 0))
-    ok 2 - len(array 0) == 1
-    ok 3 - len(mp_check(array 0)) == 1
-    ok 4 - len(mp_next(array 0)) == 1
-    # next/check on array(1)
-    ok 5 - mp_check(array 1))
-    ok 6 - len(array 1) == 2
-    ok 7 - len(mp_check(array 1)) == 2
-    ok 8 - len(mp_next(array 1)) == 2
-    # next/check on array(15)
-    ok 9 - mp_check(array 15))
-    ok 10 - len(array 15) == 16
-    ok 11 - len(mp_check(array 15)) == 16
-    ok 12 - len(mp_next(array 15)) == 16
-    # next/check on array(16)
-    ok 13 - mp_check(array 16))
-    ok 14 - len(array 16) == 19
-    ok 15 - len(mp_check(array 16)) == 19
-    ok 16 - len(mp_next(array 16)) == 19
-    # next/check on array(17)
-    ok 17 - mp_check(array 17))
-    ok 18 - len(array 17) == 20
-    ok 19 - len(mp_check(array 17)) == 20
-    ok 20 - len(mp_next(array 17)) == 20
-    # next/check on array(254)
-    ok 21 - mp_check(array 254))
-    ok 22 - len(array 254) == 257
-    ok 23 - len(mp_check(array 254)) == 257
-    ok 24 - len(mp_next(array 254)) == 257
-    # next/check on array(255)
-    ok 25 - mp_check(array 255))
-    ok 26 - len(array 255) == 258
-    ok 27 - len(mp_check(array 255)) == 258
-    ok 28 - len(mp_next(array 255)) == 258
-    # next/check on array(256)
-    ok 29 - mp_check(array 256))
-    ok 30 - len(array 256) == 259
-    ok 31 - len(mp_check(array 256)) == 259
-    ok 32 - len(mp_next(array 256)) == 259
-    # next/check on array(257)
-    ok 33 - mp_check(array 257))
-    ok 34 - len(array 257) == 260
-    ok 35 - len(mp_check(array 257)) == 260
-    ok 36 - len(mp_next(array 257)) == 260
-    # next/check on array(65534)
-    ok 37 - mp_check(array 65534))
-    ok 38 - len(array 65534) == 65537
-    ok 39 - len(mp_check(array 65534)) == 65537
-    ok 40 - len(mp_next(array 65534)) == 65537
-    # next/check on array(65535)
-    ok 41 - mp_check(array 65535))
-    ok 42 - len(array 65535) == 65538
-    ok 43 - len(mp_check(array 65535)) == 65538
-    ok 44 - len(mp_next(array 65535)) == 65538
-    # next/check on array(65536)
-    ok 45 - mp_check(array 65536))
-    ok 46 - len(array 65536) == 65541
-    ok 47 - len(mp_check(array 65536)) == 65541
-    ok 48 - len(mp_next(array 65536)) == 65541
-    # next/check on array(65537)
-    ok 49 - mp_check(array 65537))
-    ok 50 - len(array 65537) == 65542
-    ok 51 - len(mp_check(array 65537)) == 65542
-    ok 52 - len(mp_next(array 65537)) == 65542
-    # *** test_next_on_arrays: done ***
-ok 15 - subtests
-    1..52
-    # *** test_next_on_maps ***
-    # next/check on map(0)
-    ok 1 - mp_check(map 0))
-    ok 2 - len(map 0) == 1
-    ok 3 - len(mp_check(map 0)) == 1
-    ok 4 - len(mp_next(map 0)) == 1
-    # next/check on map(1)
-    ok 5 - mp_check(map 1))
-    ok 6 - len(map 1) == 3
-    ok 7 - len(mp_check(map 1)) == 3
-    ok 8 - len(mp_next(map 1)) == 3
-    # next/check on map(15)
-    ok 9 - mp_check(map 15))
-    ok 10 - len(map 15) == 31
-    ok 11 - len(mp_check(map 15)) == 31
-    ok 12 - len(mp_next(map 15)) == 31
-    # next/check on map(16)
-    ok 13 - mp_check(map 16))
-    ok 14 - len(map 16) == 35
-    ok 15 - len(mp_check(map 16)) == 35
-    ok 16 - len(mp_next(map 16)) == 35
-    # next/check on map(17)
-    ok 17 - mp_check(map 17))
-    ok 18 - len(map 17) == 37
-    ok 19 - len(mp_check(map 17)) == 37
-    ok 20 - len(mp_next(map 17)) == 37
-    # next/check on map(254)
-    ok 21 - mp_check(map 254))
-    ok 22 - len(map 254) == 511
-    ok 23 - len(mp_check(map 254)) == 511
-    ok 24 - len(mp_next(map 254)) == 511
-    # next/check on map(255)
-    ok 25 - mp_check(map 255))
-    ok 26 - len(map 255) == 513
-    ok 27 - len(mp_check(map 255)) == 513
-    ok 28 - len(mp_next(map 255)) == 513
-    # next/check on map(256)
-    ok 29 - mp_check(map 256))
-    ok 30 - len(map 256) == 515
-    ok 31 - len(mp_check(map 256)) == 515
-    ok 32 - len(mp_next(map 256)) == 515
-    # next/check on map(257)
-    ok 33 - mp_check(map 257))
-    ok 34 - len(map 257) == 517
-    ok 35 - len(mp_check(map 257)) == 517
-    ok 36 - len(mp_next(map 257)) == 517
-    # next/check on map(65534)
-    ok 37 - mp_check(map 65534))
-    ok 38 - len(map 65534) == 131071
-    ok 39 - len(mp_check(map 65534)) == 131071
-    ok 40 - len(mp_next(map 65534)) == 131071
-    # next/check on map(65535)
-    ok 41 - mp_check(map 65535))
-    ok 42 - len(map 65535) == 131073
-    ok 43 - len(mp_check(map 65535)) == 131073
-    ok 44 - len(mp_next(map 65535)) == 131073
-    # next/check on map(65536)
-    ok 45 - mp_check(map 65536))
-    ok 46 - len(map 65536) == 131077
-    ok 47 - len(mp_check(map 65536)) == 131077
-    ok 48 - len(mp_next(map 65536)) == 131077
-    # next/check on map(65537)
-    ok 49 - mp_check(map 65537))
-    ok 50 - len(map 65537) == 131079
-    ok 51 - len(mp_check(map 65537)) == 131079
-    ok 52 - len(mp_next(map 65537)) == 131079
-    # *** test_next_on_maps: done ***
-ok 16 - subtests
-    1..227
-    # *** test_compare_uints ***
-    ok 1 - mp_compare_uint(0, 0) == 0
-    ok 2 - mp_compare_uint(0, 0) == 0
-    ok 3 - mp_compare_uint(0, 0) == 0
-    ok 4 - mp_compare_uint(0, 1) < 0
-    ok 5 - mp_compare_uint(0, 126) < 0
-    ok 6 - mp_compare_uint(0, 127) < 0
-    ok 7 - mp_compare_uint(0, 128) < 0
-    ok 8 - mp_compare_uint(0, 254) < 0
-    ok 9 - mp_compare_uint(0, 255) < 0
-    ok 10 - mp_compare_uint(0, 65534) < 0
-    ok 11 - mp_compare_uint(0, 65535) < 0
-    ok 12 - mp_compare_uint(0, 65536) < 0
-    ok 13 - mp_compare_uint(0, 4294967294) < 0
-    ok 14 - mp_compare_uint(0, 4294967295) < 0
-    ok 15 - mp_compare_uint(0, 4294967296) < 0
-    ok 16 - mp_compare_uint(0, 18446744073709551614) < 0
-    ok 17 - mp_compare_uint(0, 18446744073709551615) < 0
-    ok 18 - mp_compare_uint(1, 0) > 0
-    ok 19 - mp_compare_uint(1, 1) == 0
-    ok 20 - mp_compare_uint(1, 126) < 0
-    ok 21 - mp_compare_uint(1, 127) < 0
-    ok 22 - mp_compare_uint(1, 128) < 0
-    ok 23 - mp_compare_uint(1, 254) < 0
-    ok 24 - mp_compare_uint(1, 255) < 0
-    ok 25 - mp_compare_uint(1, 65534) < 0
-    ok 26 - mp_compare_uint(1, 65535) < 0
-    ok 27 - mp_compare_uint(1, 65536) < 0
-    ok 28 - mp_compare_uint(1, 4294967294) < 0
-    ok 29 - mp_compare_uint(1, 4294967295) < 0
-    ok 30 - mp_compare_uint(1, 4294967296) < 0
-    ok 31 - mp_compare_uint(1, 18446744073709551614) < 0
-    ok 32 - mp_compare_uint(1, 18446744073709551615) < 0
-    ok 33 - mp_compare_uint(126, 0) > 0
-    ok 34 - mp_compare_uint(126, 1) > 0
-    ok 35 - mp_compare_uint(126, 126) == 0
-    ok 36 - mp_compare_uint(126, 127) < 0
-    ok 37 - mp_compare_uint(126, 128) < 0
-    ok 38 - mp_compare_uint(126, 254) < 0
-    ok 39 - mp_compare_uint(126, 255) < 0
-    ok 40 - mp_compare_uint(126, 65534) < 0
-    ok 41 - mp_compare_uint(126, 65535) < 0
-    ok 42 - mp_compare_uint(126, 65536) < 0
-    ok 43 - mp_compare_uint(126, 4294967294) < 0
-    ok 44 - mp_compare_uint(126, 4294967295) < 0
-    ok 45 - mp_compare_uint(126, 4294967296) < 0
-    ok 46 - mp_compare_uint(126, 18446744073709551614) < 0
-    ok 47 - mp_compare_uint(126, 18446744073709551615) < 0
-    ok 48 - mp_compare_uint(127, 0) > 0
-    ok 49 - mp_compare_uint(127, 1) > 0
-    ok 50 - mp_compare_uint(127, 126) > 0
-    ok 51 - mp_compare_uint(127, 127) == 0
-    ok 52 - mp_compare_uint(127, 128) < 0
-    ok 53 - mp_compare_uint(127, 254) < 0
-    ok 54 - mp_compare_uint(127, 255) < 0
-    ok 55 - mp_compare_uint(127, 65534) < 0
-    ok 56 - mp_compare_uint(127, 65535) < 0
-    ok 57 - mp_compare_uint(127, 65536) < 0
-    ok 58 - mp_compare_uint(127, 4294967294) < 0
-    ok 59 - mp_compare_uint(127, 4294967295) < 0
-    ok 60 - mp_compare_uint(127, 4294967296) < 0
-    ok 61 - mp_compare_uint(127, 18446744073709551614) < 0
-    ok 62 - mp_compare_uint(127, 18446744073709551615) < 0
-    ok 63 - mp_compare_uint(128, 0) > 0
-    ok 64 - mp_compare_uint(128, 1) > 0
-    ok 65 - mp_compare_uint(128, 126) > 0
-    ok 66 - mp_compare_uint(128, 127) > 0
-    ok 67 - mp_compare_uint(128, 128) == 0
-    ok 68 - mp_compare_uint(128, 254) < 0
-    ok 69 - mp_compare_uint(128, 255) < 0
-    ok 70 - mp_compare_uint(128, 65534) < 0
-    ok 71 - mp_compare_uint(128, 65535) < 0
-    ok 72 - mp_compare_uint(128, 65536) < 0
-    ok 73 - mp_compare_uint(128, 4294967294) < 0
-    ok 74 - mp_compare_uint(128, 4294967295) < 0
-    ok 75 - mp_compare_uint(128, 4294967296) < 0
-    ok 76 - mp_compare_uint(128, 18446744073709551614) < 0
-    ok 77 - mp_compare_uint(128, 18446744073709551615) < 0
-    ok 78 - mp_compare_uint(254, 0) > 0
-    ok 79 - mp_compare_uint(254, 1) > 0
-    ok 80 - mp_compare_uint(254, 126) > 0
-    ok 81 - mp_compare_uint(254, 127) > 0
-    ok 82 - mp_compare_uint(254, 128) > 0
-    ok 83 - mp_compare_uint(254, 254) == 0
-    ok 84 - mp_compare_uint(254, 255) < 0
-    ok 85 - mp_compare_uint(254, 65534) < 0
-    ok 86 - mp_compare_uint(254, 65535) < 0
-    ok 87 - mp_compare_uint(254, 65536) < 0
-    ok 88 - mp_compare_uint(254, 4294967294) < 0
-    ok 89 - mp_compare_uint(254, 4294967295) < 0
-    ok 90 - mp_compare_uint(254, 4294967296) < 0
-    ok 91 - mp_compare_uint(254, 18446744073709551614) < 0
-    ok 92 - mp_compare_uint(254, 18446744073709551615) < 0
-    ok 93 - mp_compare_uint(255, 0) > 0
-    ok 94 - mp_compare_uint(255, 1) > 0
-    ok 95 - mp_compare_uint(255, 126) > 0
-    ok 96 - mp_compare_uint(255, 127) > 0
-    ok 97 - mp_compare_uint(255, 128) > 0
-    ok 98 - mp_compare_uint(255, 254) > 0
-    ok 99 - mp_compare_uint(255, 255) == 0
-    ok 100 - mp_compare_uint(255, 65534) < 0
-    ok 101 - mp_compare_uint(255, 65535) < 0
-    ok 102 - mp_compare_uint(255, 65536) < 0
-    ok 103 - mp_compare_uint(255, 4294967294) < 0
-    ok 104 - mp_compare_uint(255, 4294967295) < 0
-    ok 105 - mp_compare_uint(255, 4294967296) < 0
-    ok 106 - mp_compare_uint(255, 18446744073709551614) < 0
-    ok 107 - mp_compare_uint(255, 18446744073709551615) < 0
-    ok 108 - mp_compare_uint(65534, 0) > 0
-    ok 109 - mp_compare_uint(65534, 1) > 0
-    ok 110 - mp_compare_uint(65534, 126) > 0
-    ok 111 - mp_compare_uint(65534, 127) > 0
-    ok 112 - mp_compare_uint(65534, 128) > 0
-    ok 113 - mp_compare_uint(65534, 254) > 0
-    ok 114 - mp_compare_uint(65534, 255) > 0
-    ok 115 - mp_compare_uint(65534, 65534) == 0
-    ok 116 - mp_compare_uint(65534, 65535) < 0
-    ok 117 - mp_compare_uint(65534, 65536) < 0
-    ok 118 - mp_compare_uint(65534, 4294967294) < 0
-    ok 119 - mp_compare_uint(65534, 4294967295) < 0
-    ok 120 - mp_compare_uint(65534, 4294967296) < 0
-    ok 121 - mp_compare_uint(65534, 18446744073709551614) < 0
-    ok 122 - mp_compare_uint(65534, 18446744073709551615) < 0
-    ok 123 - mp_compare_uint(65535, 0) > 0
-    ok 124 - mp_compare_uint(65535, 1) > 0
-    ok 125 - mp_compare_uint(65535, 126) > 0
-    ok 126 - mp_compare_uint(65535, 127) > 0
-    ok 127 - mp_compare_uint(65535, 128) > 0
-    ok 128 - mp_compare_uint(65535, 254) > 0
-    ok 129 - mp_compare_uint(65535, 255) > 0
-    ok 130 - mp_compare_uint(65535, 65534) > 0
-    ok 131 - mp_compare_uint(65535, 65535) == 0
-    ok 132 - mp_compare_uint(65535, 65536) < 0
-    ok 133 - mp_compare_uint(65535, 4294967294) < 0
-    ok 134 - mp_compare_uint(65535, 4294967295) < 0
-    ok 135 - mp_compare_uint(65535, 4294967296) < 0
-    ok 136 - mp_compare_uint(65535, 18446744073709551614) < 0
-    ok 137 - mp_compare_uint(65535, 18446744073709551615) < 0
-    ok 138 - mp_compare_uint(65536, 0) > 0
-    ok 139 - mp_compare_uint(65536, 1) > 0
-    ok 140 - mp_compare_uint(65536, 126) > 0
-    ok 141 - mp_compare_uint(65536, 127) > 0
-    ok 142 - mp_compare_uint(65536, 128) > 0
-    ok 143 - mp_compare_uint(65536, 254) > 0
-    ok 144 - mp_compare_uint(65536, 255) > 0
-    ok 145 - mp_compare_uint(65536, 65534) > 0
-    ok 146 - mp_compare_uint(65536, 65535) > 0
-    ok 147 - mp_compare_uint(65536, 65536) == 0
-    ok 148 - mp_compare_uint(65536, 4294967294) < 0
-    ok 149 - mp_compare_uint(65536, 4294967295) < 0
-    ok 150 - mp_compare_uint(65536, 4294967296) < 0
-    ok 151 - mp_compare_uint(65536, 18446744073709551614) < 0
-    ok 152 - mp_compare_uint(65536, 18446744073709551615) < 0
-    ok 153 - mp_compare_uint(4294967294, 0) > 0
-    ok 154 - mp_compare_uint(4294967294, 1) > 0
-    ok 155 - mp_compare_uint(4294967294, 126) > 0
-    ok 156 - mp_compare_uint(4294967294, 127) > 0
-    ok 157 - mp_compare_uint(4294967294, 128) > 0
-    ok 158 - mp_compare_uint(4294967294, 254) > 0
-    ok 159 - mp_compare_uint(4294967294, 255) > 0
-    ok 160 - mp_compare_uint(4294967294, 65534) > 0
-    ok 161 - mp_compare_uint(4294967294, 65535) > 0
-    ok 162 - mp_compare_uint(4294967294, 65536) > 0
-    ok 163 - mp_compare_uint(4294967294, 4294967294) == 0
-    ok 164 - mp_compare_uint(4294967294, 4294967295) < 0
-    ok 165 - mp_compare_uint(4294967294, 4294967296) < 0
-    ok 166 - mp_compare_uint(4294967294, 18446744073709551614) < 0
-    ok 167 - mp_compare_uint(4294967294, 18446744073709551615) < 0
-    ok 168 - mp_compare_uint(4294967295, 0) > 0
-    ok 169 - mp_compare_uint(4294967295, 1) > 0
-    ok 170 - mp_compare_uint(4294967295, 126) > 0
-    ok 171 - mp_compare_uint(4294967295, 127) > 0
-    ok 172 - mp_compare_uint(4294967295, 128) > 0
-    ok 173 - mp_compare_uint(4294967295, 254) > 0
-    ok 174 - mp_compare_uint(4294967295, 255) > 0
-    ok 175 - mp_compare_uint(4294967295, 65534) > 0
-    ok 176 - mp_compare_uint(4294967295, 65535) > 0
-    ok 177 - mp_compare_uint(4294967295, 65536) > 0
-    ok 178 - mp_compare_uint(4294967295, 4294967294) > 0
-    ok 179 - mp_compare_uint(4294967295, 4294967295) == 0
-    ok 180 - mp_compare_uint(4294967295, 4294967296) < 0
-    ok 181 - mp_compare_uint(4294967295, 18446744073709551614) < 0
-    ok 182 - mp_compare_uint(4294967295, 18446744073709551615) < 0
-    ok 183 - mp_compare_uint(4294967296, 0) > 0
-    ok 184 - mp_compare_uint(4294967296, 1) > 0
-    ok 185 - mp_compare_uint(4294967296, 126) > 0
-    ok 186 - mp_compare_uint(4294967296, 127) > 0
-    ok 187 - mp_compare_uint(4294967296, 128) > 0
-    ok 188 - mp_compare_uint(4294967296, 254) > 0
-    ok 189 - mp_compare_uint(4294967296, 255) > 0
-    ok 190 - mp_compare_uint(4294967296, 65534) > 0
-    ok 191 - mp_compare_uint(4294967296, 65535) > 0
-    ok 192 - mp_compare_uint(4294967296, 65536) > 0
-    ok 193 - mp_compare_uint(4294967296, 4294967294) > 0
-    ok 194 - mp_compare_uint(4294967296, 4294967295) > 0
-    ok 195 - mp_compare_uint(4294967296, 4294967296) == 0
-    ok 196 - mp_compare_uint(4294967296, 18446744073709551614) < 0
-    ok 197 - mp_compare_uint(4294967296, 18446744073709551615) < 0
-    ok 198 - mp_compare_uint(18446744073709551614, 0) > 0
-    ok 199 - mp_compare_uint(18446744073709551614, 1) > 0
-    ok 200 - mp_compare_uint(18446744073709551614, 126) > 0
-    ok 201 - mp_compare_uint(18446744073709551614, 127) > 0
-    ok 202 - mp_compare_uint(18446744073709551614, 128) > 0
-    ok 203 - mp_compare_uint(18446744073709551614, 254) > 0
-    ok 204 - mp_compare_uint(18446744073709551614, 255) > 0
-    ok 205 - mp_compare_uint(18446744073709551614, 65534) > 0
-    ok 206 - mp_compare_uint(18446744073709551614, 65535) > 0
-    ok 207 - mp_compare_uint(18446744073709551614, 65536) > 0
-    ok 208 - mp_compare_uint(18446744073709551614, 4294967294) > 0
-    ok 209 - mp_compare_uint(18446744073709551614, 4294967295) > 0
-    ok 210 - mp_compare_uint(18446744073709551614, 4294967296) > 0
-    ok 211 - mp_compare_uint(18446744073709551614, 18446744073709551614) == 0
-    ok 212 - mp_compare_uint(18446744073709551614, 18446744073709551615) < 0
-    ok 213 - mp_compare_uint(18446744073709551615, 0) > 0
-    ok 214 - mp_compare_uint(18446744073709551615, 1) > 0
-    ok 215 - mp_compare_uint(18446744073709551615, 126) > 0
-    ok 216 - mp_compare_uint(18446744073709551615, 127) > 0
-    ok 217 - mp_compare_uint(18446744073709551615, 128) > 0
-    ok 218 - mp_compare_uint(18446744073709551615, 254) > 0
-    ok 219 - mp_compare_uint(18446744073709551615, 255) > 0
-    ok 220 - mp_compare_uint(18446744073709551615, 65534) > 0
-    ok 221 - mp_compare_uint(18446744073709551615, 65535) > 0
-    ok 222 - mp_compare_uint(18446744073709551615, 65536) > 0
-    ok 223 - mp_compare_uint(18446744073709551615, 4294967294) > 0
-    ok 224 - mp_compare_uint(18446744073709551615, 4294967295) > 0
-    ok 225 - mp_compare_uint(18446744073709551615, 4294967296) > 0
-    ok 226 - mp_compare_uint(18446744073709551615, 18446744073709551614) > 0
-    ok 227 - mp_compare_uint(18446744073709551615, 18446744073709551615) == 0
-    # *** test_compare_uints: done ***
-ok 17 - subtests
-    1..282
-    # *** test_format ***
-    ok 1 - Test type on step 0
-    ok 2 - Test value on step 0
-    ok 3 - Test type on step 1
-    ok 4 - Test value on step 1
-    ok 5 - Test type on step 2
-    ok 6 - Test value on step 2
-    ok 7 - Test type on step 3
-    ok 8 - Test value on step 3
-    ok 9 - Test type on step 4
-    ok 10 - Test value on step 4
-    ok 11 - Test type on step 5
-    ok 12 - Test value on step 5
-    ok 13 - Test type on step 6
-    ok 14 - Test value on step 6
-    ok 15 - Test type on step 7
-    ok 16 - Test value on step 7
-    ok 17 - Test type on step 8
-    ok 18 - Test value on step 8
-    ok 19 - Test type on step 9
-    ok 20 - Test value on step 9
-    ok 21 - Test type on step 10
-    ok 22 - Test value on step 10
-    ok 23 - Test type on step 11
-    ok 24 - Test value on step 11
-    ok 25 - Test type on step 12
-    ok 26 - Test value on step 12
-    ok 27 - Test type on step 13
-    ok 28 - Test value on step 13
-    ok 29 - Test type on step 14
-    ok 30 - Test value on step 14
-    ok 31 - Test type on step 0
-    ok 32 - Test value on step 0
-    ok 33 - Test type on step 1
-    ok 34 - Test value on step 1
-    ok 35 - Test type on step 2
-    ok 36 - Test value on step 2
-    ok 37 - Test type on step 3
-    ok 38 - Test value on step 3
-    ok 39 - Test type on step 4
-    ok 40 - Test value on step 4
-    ok 41 - Test type on step 5
-    ok 42 - Test value on step 5
-    ok 43 - Test type on step 6
-    ok 44 - Test value on step 6
-    ok 45 - Test type on step 7
-    ok 46 - Test value on step 7
-    ok 47 - Test type on step 8
-    ok 48 - Test value on step 8
-    ok 49 - Test type on step 9
-    ok 50 - Test value on step 9
-    ok 51 - Test type on step 10
-    ok 52 - Test value on step 10
-    ok 53 - Test type on step 11
-    ok 54 - Test value on step 11
-    ok 55 - Test type on step 12
-    ok 56 - Test value on step 12
-    ok 57 - Test type on step 13
-    ok 58 - Test value on step 13
-    ok 59 - Test type on step 14
-    ok 60 - Test value on step 14
-    ok 61 - check
-    ok 62 - type
-    ok 63 - decode
-    ok 64 - check
-    ok 65 - type
-    ok 66 - check
-    ok 67 - type
-    ok 68 - decode
-    ok 69 - check
-    ok 70 - type
-    ok 71 - decode
-    ok 72 - check
-    ok 73 - type
-    ok 74 - decode
-    ok 75 - check
-    ok 76 - type
-    ok 77 - decode
-    ok 78 - check
-    ok 79 - type
-    ok 80 - decode
-    ok 81 - check
-    ok 82 - type
-    ok 83 - decode
-    ok 84 - check
-    ok 85 - type
-    ok 86 - decode
-    ok 87 - check
-    ok 88 - type
-    ok 89 - decode
-    ok 90 - check
-    ok 91 - type
-    ok 92 - decode
-    ok 93 - check
-    ok 94 - type
-    ok 95 - decode
-    ok 96 - check
-    ok 97 - type
-    ok 98 - decode
-    ok 99 - compare
-    ok 100 - check
-    ok 101 - type
-    ok 102 - decode
-    ok 103 - check
-    ok 104 - type
-    ok 105 - decode
-    ok 106 - compare
-    ok 107 - check
-    ok 108 - type
-    ok 109 - decode
-    ok 110 - check
-    ok 111 - type
-    ok 112 - decode
-    ok 113 - check
-    ok 114 - type
-    ok 115 - check
-    ok 116 - compare
-    ok 117 - check
-    ok 118 - type
-    ok 119 - decode
-    ok 120 - check
-    ok 121 - type
-    ok 122 - decode
-    ok 123 - check
-    ok 124 - type
-    ok 125 - decode
-    ok 126 - compare
-    ok 127 - check
-    ok 128 - type
-    ok 129 - decode
-    ok 130 - check
-    ok 131 - type
-    ok 132 - decode
-    ok 133 - check
-    ok 134 - type
-    ok 135 - decode
-    ok 136 - check
-    ok 137 - type
-    ok 138 - decode
-    ok 139 - nothing more
-    ok 140 - no magic detected
-    ok 141 - return value on step 0
-    ok 142 - buffer overflow on step 0
-    ok 143 - return value on step 1
-    ok 144 - buffer overflow on step 1
-    ok 145 - return value on step 2
-    ok 146 - buffer overflow on step 2
-    ok 147 - return value on step 3
-    ok 148 - buffer overflow on step 3
-    ok 149 - return value on step 4
-    ok 150 - buffer overflow on step 4
-    ok 151 - return value on step 5
-    ok 152 - buffer overflow on step 5
-    ok 153 - return value on step 6
-    ok 154 - buffer overflow on step 6
-    ok 155 - return value on step 7
-    ok 156 - buffer overflow on step 7
-    ok 157 - return value on step 8
-    ok 158 - buffer overflow on step 8
-    ok 159 - return value on step 9
-    ok 160 - buffer overflow on step 9
-    ok 161 - return value on step 10
-    ok 162 - buffer overflow on step 10
-    ok 163 - return value on step 11
-    ok 164 - buffer overflow on step 11
-    ok 165 - return value on step 12
-    ok 166 - buffer overflow on step 12
-    ok 167 - return value on step 13
-    ok 168 - buffer overflow on step 13
-    ok 169 - return value on step 14
-    ok 170 - buffer overflow on step 14
-    ok 171 - return value on step 15
-    ok 172 - buffer overflow on step 15
-    ok 173 - return value on step 16
-    ok 174 - buffer overflow on step 16
-    ok 175 - return value on step 17
-    ok 176 - buffer overflow on step 17
-    ok 177 - return value on step 18
-    ok 178 - buffer overflow on step 18
-    ok 179 - return value on step 19
-    ok 180 - buffer overflow on step 19
-    ok 181 - return value on step 20
-    ok 182 - buffer overflow on step 20
-    ok 183 - return value on step 21
-    ok 184 - buffer overflow on step 21
-    ok 185 - return value on step 22
-    ok 186 - buffer overflow on step 22
-    ok 187 - return value on step 23
-    ok 188 - buffer overflow on step 23
-    ok 189 - return value on step 24
-    ok 190 - buffer overflow on step 24
-    ok 191 - return value on step 25
-    ok 192 - buffer overflow on step 25
-    ok 193 - return value on step 26
-    ok 194 - buffer overflow on step 26
-    ok 195 - return value on step 27
-    ok 196 - buffer overflow on step 27
-    ok 197 - return value on step 28
-    ok 198 - buffer overflow on step 28
-    ok 199 - return value on step 29
-    ok 200 - buffer overflow on step 29
-    ok 201 - return value on step 30
-    ok 202 - buffer overflow on step 30
-    ok 203 - return value on step 31
-    ok 204 - buffer overflow on step 31
-    ok 205 - return value on step 32
-    ok 206 - buffer overflow on step 32
-    ok 207 - return value on step 33
-    ok 208 - buffer overflow on step 33
-    ok 209 - return value on step 34
-    ok 210 - buffer overflow on step 34
-    ok 211 - return value on step 35
-    ok 212 - buffer overflow on step 35
-    ok 213 - return value on step 36
-    ok 214 - buffer overflow on step 36
-    ok 215 - return value on step 37
-    ok 216 - buffer overflow on step 37
-    ok 217 - return value on step 38
-    ok 218 - buffer overflow on step 38
-    ok 219 - return value on step 39
-    ok 220 - buffer overflow on step 39
-    ok 221 - return value on step 40
-    ok 222 - buffer overflow on step 40
-    ok 223 - return value on step 41
-    ok 224 - buffer overflow on step 41
-    ok 225 - return value on step 42
-    ok 226 - buffer overflow on step 42
-    ok 227 - return value on step 43
-    ok 228 - buffer overflow on step 43
-    ok 229 - return value on step 44
-    ok 230 - buffer overflow on step 44
-    ok 231 - return value on step 45
-    ok 232 - buffer overflow on step 45
-    ok 233 - return value on step 46
-    ok 234 - buffer overflow on step 46
-    ok 235 - return value on step 47
-    ok 236 - buffer overflow on step 47
-    ok 237 - return value on step 48
-    ok 238 - buffer overflow on step 48
-    ok 239 - return value on step 49
-    ok 240 - buffer overflow on step 49
-    ok 241 - return value on step 50
-    ok 242 - buffer overflow on step 50
-    ok 243 - return value on step 51
-    ok 244 - buffer overflow on step 51
-    ok 245 - return value on step 52
-    ok 246 - buffer overflow on step 52
-    ok 247 - return value on step 53
-    ok 248 - buffer overflow on step 53
-    ok 249 - return value on step 54
-    ok 250 - buffer overflow on step 54
-    ok 251 - return value on step 55
-    ok 252 - buffer overflow on step 55
-    ok 253 - return value on step 56
-    ok 254 - buffer overflow on step 56
-    ok 255 - return value on step 57
-    ok 256 - buffer overflow on step 57
-    ok 257 - return value on step 58
-    ok 258 - buffer overflow on step 58
-    ok 259 - return value on step 59
-    ok 260 - buffer overflow on step 59
-    ok 261 - return value on step 60
-    ok 262 - buffer overflow on step 60
-    ok 263 - return value on step 61
-    ok 264 - buffer overflow on step 61
-    ok 265 - return value on step 62
-    ok 266 - buffer overflow on step 62
-    ok 267 - return value on step 63
-    ok 268 - buffer overflow on step 63
-    ok 269 - return value on step 64
-    ok 270 - buffer overflow on step 64
-    ok 271 - return value on step 65
-    ok 272 - buffer overflow on step 65
-    ok 273 - return value on step 66
-    ok 274 - buffer overflow on step 66
-    ok 275 - return value on step 67
-    ok 276 - buffer overflow on step 67
-    ok 277 - return value on step 68
-    ok 278 - buffer overflow on step 68
-    ok 279 - return value on step 69
-    ok 280 - buffer overflow on step 69
-    ok 281 - return value on step 70
-    ok 282 - buffer overflow on step 70
-    # *** test_format: done ***
-ok 18 - subtests
-    1..12
-    # *** test_mp_print ***
-    ok 1 - mp_snprint return value
-    ok 2 - mp_snprint result
-    ok 3 - mp_snprint limit = 0
-    ok 4 - mp_snprint limit = 1
-    ok 5 - mp_snprint limit = 2
-    ok 6 - mp_snprint limit = expected
-    ok 7 - mp_snprint limit = expected + 1
-    ok 8 - mp_fprint return value
-    ok 9 - mp_fprint result
-    ok 10 - mp_fprint I/O error
-    ok 11 - mp_snprint max nesting depth return value
-    ok 12 - mp_snprint max nesting depth result
-    # *** test_mp_print: done ***
-ok 19 - subtests
-    1..65
-    # *** test_mp_check ***
-    ok 1 - invalid fixmap 1
-    ok 2 - invalid fixmap 2
-    ok 3 - invalid fixmap 3
-    ok 4 - invalid fixarray 1
-    ok 5 - invalid fixarray 2
-    ok 6 - invalid fixarray 3
-    ok 7 - invalid fixstr 1
-    ok 8 - invalid fixstr 2
-    ok 9 - invalid fixstr 3
-    ok 10 - invalid bin8 1
-    ok 11 - invalid bin8 2
-    ok 12 - invalid bin16 1
-    ok 13 - invalid bin16 2
-    ok 14 - invalid bin32 1
-    ok 15 - invalid bin32 2
-    ok 16 - invalid ext8 1
-    ok 17 - invalid ext8 2
-    ok 18 - invalid ext8 3
-    ok 19 - invalid ext8 4
-    ok 20 - invalid ext16 1
-    ok 21 - invalid ext16 2
-    ok 22 - invalid ext16 3
-    ok 23 - invalid ext16 4
-    ok 24 - invalid ext32 1
-    ok 25 - invalid ext32 2
-    ok 26 - invalid ext32 3
-    ok 27 - invalid ext32 4
-    ok 28 - invalid float32 1
-    ok 29 - invalid float32 2
-    ok 30 - invalid float64 1
-    ok 31 - invalid float64 2
-    ok 32 - invalid uint8 1
-    ok 33 - invalid uint16 1
-    ok 34 - invalid uint32 1
-    ok 35 - invalid uint64 1
-    ok 36 - invalid int8 1
-    ok 37 - invalid int16 1
-    ok 38 - invalid int32 1
-    ok 39 - invalid int64 1
-    ok 40 - invalid fixext8 1
-    ok 41 - invalid fixext8 2
-    ok 42 - invalid fixext16 1
-    ok 43 - invalid fixext16 2
-    ok 44 - invalid fixext32 1
-    ok 45 - invalid fixext32 2
-    ok 46 - invalid fixext64 1
-    ok 47 - invalid fixext64 2
-    ok 48 - invalid fixext128 1
-    ok 49 - invalid fixext128 2
-    ok 50 - invalid str8 1
-    ok 51 - invalid str8 2
-    ok 52 - invalid str16 1
-    ok 53 - invalid str16 2
-    ok 54 - invalid str32 1
-    ok 55 - invalid str32 2
-    ok 56 - invalid array16 1
-    ok 57 - invalid array16 2
-    ok 58 - invalid array32 1
-    ok 59 - invalid array32 2
-    ok 60 - invalid map16 1
-    ok 61 - invalid map16 2
-    ok 62 - invalid map16 2
-    ok 63 - invalid map32 1
-    ok 64 - invalid map32 2
-    ok 65 - invalid map32 3
-    # *** test_mp_check: done ***
-ok 20 - subtests
-    1..96
-    # *** test_numbers ***
-    ok 1 - mp_read_int32(mp_encode_uint(123)) check success
-    ok 2 - mp_read_int32(mp_encode_uint(123)) check pos advanced
-    ok 3 - mp_read_int32(mp_encode_uint(123)) check result
-    ok 4 - mp_read_int32(mp_encode_uint(12345)) check success
-    ok 5 - mp_read_int32(mp_encode_uint(12345)) check pos advanced
-    ok 6 - mp_read_int32(mp_encode_uint(12345)) check result
-    ok 7 - mp_read_int32(mp_encode_uint(2147483647)) check success
-    ok 8 - mp_read_int32(mp_encode_uint(2147483647)) check pos advanced
-    ok 9 - mp_read_int32(mp_encode_uint(2147483647)) check result
-    ok 10 - mp_read_int32(mp_encode_uint(2147483648)) check fail
-    ok 11 - mp_read_int32(mp_encode_uint(2147483648)) check pos unchanged
-    ok 12 - mp_read_int32(mp_encode_int(-123)) check success
-    ok 13 - mp_read_int32(mp_encode_int(-123)) check pos advanced
-    ok 14 - mp_read_int32(mp_encode_int(-123)) check result
-    ok 15 - mp_read_int32(mp_encode_int(-12345)) check success
-    ok 16 - mp_read_int32(mp_encode_int(-12345)) check pos advanced
-    ok 17 - mp_read_int32(mp_encode_int(-12345)) check result
-    ok 18 - mp_read_int32(mp_encode_int(-2147483648)) check success
-    ok 19 - mp_read_int32(mp_encode_int(-2147483648)) check pos advanced
-    ok 20 - mp_read_int32(mp_encode_int(-2147483648)) check result
-    ok 21 - mp_read_int32(mp_encode_int(-2147483649LL)) check fail
-    ok 22 - mp_read_int32(mp_encode_int(-2147483649LL)) check pos unchanged
-    ok 23 - mp_read_int32(mp_encode_float(-1e2)) check fail
-    ok 24 - mp_read_int32(mp_encode_float(-1e2)) check pos unchanged
-    ok 25 - mp_read_int32(mp_encode_double(1.2345)) check fail
-    ok 26 - mp_read_int32(mp_encode_double(1.2345)) check pos unchanged
-    ok 27 - mp_read_int32(mp_encode_map(5)) check fail
-    ok 28 - mp_read_int32(mp_encode_map(5)) check pos unchanged
-    ok 29 - mp_read_int64(mp_encode_uint(123)) check success
-    ok 30 - mp_read_int64(mp_encode_uint(123)) check pos advanced
-    ok 31 - mp_read_int64(mp_encode_uint(123)) check result
-    ok 32 - mp_read_int64(mp_encode_uint(12345)) check success
-    ok 33 - mp_read_int64(mp_encode_uint(12345)) check pos advanced
-    ok 34 - mp_read_int64(mp_encode_uint(12345)) check result
-    ok 35 - mp_read_int64(mp_encode_uint(123456789)) check success
-    ok 36 - mp_read_int64(mp_encode_uint(123456789)) check pos advanced
-    ok 37 - mp_read_int64(mp_encode_uint(123456789)) check result
-    ok 38 - mp_read_int64(mp_encode_uint(9223372036854775807ULL)) check success
-    ok 39 - mp_read_int64(mp_encode_uint(9223372036854775807ULL)) check pos advanced
-    ok 40 - mp_read_int64(mp_encode_uint(9223372036854775807ULL)) check result
-    ok 41 - mp_read_int64(mp_encode_uint(9223372036854775808ULL)) check fail
-    ok 42 - mp_read_int64(mp_encode_uint(9223372036854775808ULL)) check pos unchanged
-    ok 43 - mp_read_int64(mp_encode_int(-123)) check success
-    ok 44 - mp_read_int64(mp_encode_int(-123)) check pos advanced
-    ok 45 - mp_read_int64(mp_encode_int(-123)) check result
-    ok 46 - mp_read_int64(mp_encode_int(-12345)) check success
-    ok 47 - mp_read_int64(mp_encode_int(-12345)) check pos advanced
-    ok 48 - mp_read_int64(mp_encode_int(-12345)) check result
-    ok 49 - mp_read_int64(mp_encode_int(-123456789)) check success
-    ok 50 - mp_read_int64(mp_encode_int(-123456789)) check pos advanced
-    ok 51 - mp_read_int64(mp_encode_int(-123456789)) check result
-    ok 52 - mp_read_int64(mp_encode_int(-9223372036854775807LL)) check success
-    ok 53 - mp_read_int64(mp_encode_int(-9223372036854775807LL)) check pos advanced
-    ok 54 - mp_read_int64(mp_encode_int(-9223372036854775807LL)) check result
-    ok 55 - mp_read_int64(mp_encode_float(100)) check fail
-    ok 56 - mp_read_int64(mp_encode_float(100)) check pos unchanged
-    ok 57 - mp_read_int64(mp_encode_double(-5.4321)) check fail
-    ok 58 - mp_read_int64(mp_encode_double(-5.4321)) check pos unchanged
-    ok 59 - mp_read_int64(mp_encode_array(10)) check fail
-    ok 60 - mp_read_int64(mp_encode_array(10)) check pos unchanged
-    ok 61 - mp_read_double(mp_encode_uint(123)) check success
-    ok 62 - mp_read_double(mp_encode_uint(123)) check pos advanced
-    ok 63 - mp_read_double(mp_encode_uint(123)) check result
-    ok 64 - mp_read_double(mp_encode_uint(12345)) check success
-    ok 65 - mp_read_double(mp_encode_uint(12345)) check pos advanced
-    ok 66 - mp_read_double(mp_encode_uint(12345)) check result
-    ok 67 - mp_read_double(mp_encode_uint(123456789)) check success
-    ok 68 - mp_read_double(mp_encode_uint(123456789)) check pos advanced
-    ok 69 - mp_read_double(mp_encode_uint(123456789)) check result
-    ok 70 - mp_read_double(mp_encode_uint(1234567890000ULL)) check success
-    ok 71 - mp_read_double(mp_encode_uint(1234567890000ULL)) check pos advanced
-    ok 72 - mp_read_double(mp_encode_uint(1234567890000ULL)) check result
-    ok 73 - mp_read_double(mp_encode_uint(123456789123456789ULL)) check fail
-    ok 74 - mp_read_double(mp_encode_uint(123456789123456789ULL)) check pos unchanged
-    ok 75 - mp_read_double(mp_encode_int(-123)) check success
-    ok 76 - mp_read_double(mp_encode_int(-123)) check pos advanced
-    ok 77 - mp_read_double(mp_encode_int(-123)) check result
-    ok 78 - mp_read_double(mp_encode_int(-12345)) check success
-    ok 79 - mp_read_double(mp_encode_int(-12345)) check pos advanced
-    ok 80 - mp_read_double(mp_encode_int(-12345)) check result
-    ok 81 - mp_read_double(mp_encode_int(-123456789)) check success
-    ok 82 - mp_read_double(mp_encode_int(-123456789)) check pos advanced
-    ok 83 - mp_read_double(mp_encode_int(-123456789)) check result
-    ok 84 - mp_read_double(mp_encode_int(-1234567890000LL)) check success
-    ok 85 - mp_read_double(mp_encode_int(-1234567890000LL)) check pos advanced
-    ok 86 - mp_read_double(mp_encode_int(-1234567890000LL)) check result
-    ok 87 - mp_read_double(mp_encode_int(-123456789123456789LL)) check fail
-    ok 88 - mp_read_double(mp_encode_int(-123456789123456789LL)) check pos unchanged
-    ok 89 - mp_read_double(mp_encode_float(6.565e6)) check success
-    ok 90 - mp_read_double(mp_encode_float(6.565e6)) check pos advanced
-    ok 91 - mp_read_double(mp_encode_float(6.565e6)) check result
-    ok 92 - mp_read_double(mp_encode_double(-5.555)) check success
-    ok 93 - mp_read_double(mp_encode_double(-5.555)) check pos advanced
-    ok 94 - mp_read_double(mp_encode_double(-5.555)) check result
-    ok 95 - mp_read_double(mp_encode_strl(100)) check fail
-    ok 96 - mp_read_double(mp_encode_strl(100)) check pos unchanged
-    # *** test_numbers: done ***
-ok 21 - subtests
-    1..4
-    # *** test_overflow ***
-    ok 1 - mp_check array overflow
-    ok 2 - mp_check map overflow
-    ok 3 - mp_check str overflow
-    ok 4 - mp_check bin overflow
-    # *** test_overflow: done ***
-ok 22 - subtests
diff --git a/test/unit/popen.result b/test/unit/popen.result
deleted file mode 100644
index f5e6bc2ca..000000000
--- a/test/unit/popen.result
+++ /dev/null
@@ -1,30 +0,0 @@
-1..3
-	*** main_f ***
-    1..6
-	*** popen_write_exit ***
-    ok 1 - popen_new
-    ok 2 - state alive
-    ok 3 - write flag check
-    ok 4 - write to pipe
-    ok 5 - child exited
-    ok 6 - popen_delete
-	*** popen_write_exit: done ***
-ok 1 - subtests
-    1..5
-	*** popen_read_exit ***
-    ok 1 - popen_new
-    ok 2 - child exited
-    ok 3 - read flag check
-    ok 4 - read from pipe
-    ok 5 - popen_delete
-	*** popen_read_exit: done ***
-ok 2 - subtests
-    1..4
-	*** popen_kill ***
-    ok 1 - popen_new
-    ok 2 - popen_send_signal
-    ok 3 - child terminated
-    ok 4 - popen_delete
-	*** popen_kill: done ***
-ok 3 - subtests
-	*** main_f: done ***
diff --git a/test/unit/queue.c b/test/unit/queue.c
index 3caec1a41..d8bea5f78 100644
--- a/test/unit/queue.c
+++ b/test/unit/queue.c
@@ -31,7 +31,6 @@
 #include "third_party/queue.h"
 #include "unit.h"
 #include <stdio.h>
-#include <assert.h>
 
 struct elem
 {
@@ -58,12 +57,15 @@ queue2str(struct elem_queue *queue)
 void test0()
 {
 	header();
+	plan(1);
 	struct elem_queue queue = STAILQ_HEAD_INITIALIZER(queue);
-	printf("Initialized: %s\n", queue2str(&queue));
+	note("Initialized: %s", queue2str(&queue));
 	STAILQ_INIT(&queue);
-	printf("STAILQ_INIT: %s\n", queue2str(&queue));
+	note("STAILQ_INIT: %s", queue2str(&queue));
 	STAILQ_REVERSE(&queue, elem, entry);
-	printf("STAILQ_REVERSE: %s\n", queue2str(&queue));
+	note("STAILQ_REVERSE: %s", queue2str(&queue));
+	ok(1, "test 0");
+	check_plan();
 	footer();
 }
 
@@ -71,13 +73,16 @@ void test0()
 void test1()
 {
 	header();
+	plan(1);
 	struct elem el1;
 	struct elem_queue queue = STAILQ_HEAD_INITIALIZER(queue);
 	el1.val = 1;
 	STAILQ_INSERT_TAIL(&queue, &el1, entry);
-	printf("STAILQ_INIT: %s\n", queue2str(&queue));
+	note("STAILQ_INIT: %s", queue2str(&queue));
 	STAILQ_REVERSE(&queue, elem, entry);
-	printf("STAILQ_REVERSE: %s\n", queue2str(&queue));
+	note("STAILQ_REVERSE: %s", queue2str(&queue));
+	ok(1, "test 1");
+	check_plan();
 	footer();
 }
 
@@ -85,21 +90,25 @@ void test1()
 void test2()
 {
 	header();
+	plan(1);
 	struct elem el1, el2;
 	struct elem_queue queue = STAILQ_HEAD_INITIALIZER(queue);
 	el1.val = 1;
 	el2.val = 2;
 	STAILQ_INSERT_TAIL(&queue, &el1, entry);
 	STAILQ_INSERT_TAIL(&queue, &el2, entry);
-	printf("STAILQ_INIT: %s\n", queue2str(&queue));
+	note("STAILQ_INIT: %s", queue2str(&queue));
 	STAILQ_REVERSE(&queue, elem, entry);
-	printf("STAILQ_REVERSE: %s\n", queue2str(&queue));
+	note("STAILQ_REVERSE: %s", queue2str(&queue));
+	ok(1, "test 2");
+	check_plan();
 	footer();
 }
 
 void test3()
 {
 	header();
+	plan(1);
 	struct elem el1, el2, el3;
 	struct elem_queue queue = STAILQ_HEAD_INITIALIZER(queue);
 	el1.val = 1;
@@ -108,9 +117,11 @@ void test3()
 	STAILQ_INSERT_TAIL(&queue, &el1, entry);
 	STAILQ_INSERT_TAIL(&queue, &el2, entry);
 	STAILQ_INSERT_TAIL(&queue, &el3, entry);
-	printf("STAILQ_INIT: %s\n", queue2str(&queue));
+	note("STAILQ_INIT: %s", queue2str(&queue));
 	STAILQ_REVERSE(&queue, elem, entry);
-	printf("STAILQ_REVERSE: %s\n", queue2str(&queue));
+	note("STAILQ_REVERSE: %s", queue2str(&queue));
+	ok(1, "test 3");
+	check_plan();
 	footer();
 }
 
@@ -118,48 +129,52 @@ void test3()
 void test_splice()
 {
 	header();
+	plan(1);
 	struct elem el1, el2, el3;
 	struct elem_queue queue1 = STAILQ_HEAD_INITIALIZER(queue1);
 	struct elem_queue queue2 = STAILQ_HEAD_INITIALIZER(queue2);
 	STAILQ_SPLICE(&queue1, STAILQ_FIRST(&queue1), entry, &queue2);
-	printf("q1: %s\n", queue2str(&queue1));
-	printf("q2: %s\n", queue2str(&queue2));
+	note("q1: %s", queue2str(&queue1));
+	note("q2: %s", queue2str(&queue2));
 	STAILQ_SPLICE(&queue2, STAILQ_FIRST(&queue2), entry, &queue1);
-	printf("q1: %s\n", queue2str(&queue1));
-	printf("q2: %s\n", queue2str(&queue2));
+	note("q1: %s", queue2str(&queue1));
+	note("q2: %s", queue2str(&queue2));
 	el1.val = 1;
 	el2.val = 2;
 	el3.val = 3;
 	STAILQ_INSERT_TAIL(&queue1, &el1, entry);
 	STAILQ_INSERT_TAIL(&queue1, &el2, entry);
 	STAILQ_INSERT_TAIL(&queue1, &el3, entry);
-	printf("STAILQ_INIT: %s\n", queue2str(&queue1));
+	note("STAILQ_INIT: %s", queue2str(&queue1));
 	STAILQ_SPLICE(&queue1, STAILQ_FIRST(&queue1), entry, &queue2);
-	printf("q1: %s\n", queue2str(&queue1));
-	printf("q2: %s\n", queue2str(&queue2));
+	note("q1: %s", queue2str(&queue1));
+	note("q2: %s", queue2str(&queue2));
 	STAILQ_SPLICE(&queue2, STAILQ_FIRST(&queue2), entry, &queue1);
-	printf("q1: %s\n", queue2str(&queue1));
-	printf("q2: %s\n", queue2str(&queue2));
+	note("q1: %s", queue2str(&queue1));
+	note("q2: %s", queue2str(&queue2));
 	STAILQ_SPLICE(&queue1, STAILQ_NEXT(STAILQ_FIRST(&queue1), entry),
 					   entry, &queue2);
-	printf("q1: %s\n", queue2str(&queue1));
-	printf("q2: %s\n", queue2str(&queue2));
+	note("q1: %s", queue2str(&queue1));
+	note("q2: %s", queue2str(&queue2));
 	STAILQ_SPLICE(&queue2, STAILQ_NEXT(STAILQ_FIRST(&queue2), entry),
 		      entry, &queue1);
-	printf("q1: %s\n", queue2str(&queue1));
-	printf("q2: %s\n", queue2str(&queue2));
+	note("q1: %s", queue2str(&queue1));
+	note("q2: %s", queue2str(&queue2));
 	STAILQ_SPLICE(&queue2, STAILQ_FIRST(&queue2), entry, &queue1);
-	printf("q1: %s\n", queue2str(&queue1));
-	printf("q2: %s\n", queue2str(&queue2));
+	note("q1: %s", queue2str(&queue1));
+	note("q2: %s", queue2str(&queue2));
+	ok(1, "test splice");
 	footer();
 }
 
 int main()
 {
+	plan(5);
 	test0();
 	test1();
 	test2();
 	test3();
 	test_splice();
+	check_plan();
 	return 0;
 }
diff --git a/test/unit/queue.result b/test/unit/queue.result
deleted file mode 100644
index 18b0c0758..000000000
--- a/test/unit/queue.result
+++ /dev/null
@@ -1,34 +0,0 @@
-	*** test0 ***
-Initialized: 
-STAILQ_INIT: 
-STAILQ_REVERSE: 
-	*** test0: done ***
-	*** test1 ***
-STAILQ_INIT: 1 
-STAILQ_REVERSE: 1 
-	*** test1: done ***
-	*** test2 ***
-STAILQ_INIT: 1 2 
-STAILQ_REVERSE: 2 1 
-	*** test2: done ***
-	*** test3 ***
-STAILQ_INIT: 1 2 3 
-STAILQ_REVERSE: 3 2 1 
-	*** test3: done ***
-	*** test_splice ***
-q1: 
-q2: 
-q1: 
-q2: 
-STAILQ_INIT: 1 2 3 
-q1: 
-q2: 1 2 3 
-q1: 1 2 3 
-q2: 
-q1: 1 
-q2: 2 3 
-q1: 1 3 
-q2: 2 
-q1: 1 3 2 
-q2: 
-	*** test_splice: done ***
diff --git a/test/unit/ratelimit.result b/test/unit/ratelimit.result
deleted file mode 100644
index 8a755c64d..000000000
--- a/test/unit/ratelimit.result
+++ /dev/null
@@ -1,13 +0,0 @@
-	*** main ***
-1..10
-ok 1 - emitted 10 expected 10
-ok 2 - suppressed 0 expected 0
-ok 3 - emitted 0 expected 0
-ok 4 - suppressed 0 expected 0
-ok 5 - emitted 1 expected 1
-ok 6 - suppressed 10 expected 10
-ok 7 - emitted 1 expected 1
-ok 8 - suppressed 0 expected 0
-ok 9 - emitted 1000 expected 1000
-ok 10 - suppressed 3000 expected 3000
-	*** main: done ***
diff --git a/test/unit/reflection_c.result b/test/unit/reflection_c.result
deleted file mode 100644
index 294fa9799..000000000
--- a/test/unit/reflection_c.result
+++ /dev/null
@@ -1,5 +0,0 @@
-1..4
-ok 1 - assignable
-ok 2 - assignable
-ok 3 - assignable
-ok 4 - assignable
diff --git a/test/unit/reflection_cxx.result b/test/unit/reflection_cxx.result
deleted file mode 100644
index 0f4f51eb4..000000000
--- a/test/unit/reflection_cxx.result
+++ /dev/null
@@ -1,31 +0,0 @@
-1..30
-ok 1 - type.name
-ok 2 - type.parent
-ok 3 - type.parent
-ok 4 - is_instance
-ok 5 - is_instance
-ok 6 - is_instance
-ok 7 - is_instance
-ok 8 - methods order
-ok 9 - methods order
-ok 10 - methods order
-ok 11 - methods order
-ok 12 - methods order
-ok 13 - method.owner
-ok 14 - method.name
-ok 15 - method.rtype (non void)
-ok 16 - method.rtype (void)
-ok 17 - method.nargs (zero)
-ok 18 - method.nargs (non-zero)
-ok 19 - method.atype
-ok 20 - method.isconst
-ok 21 - !method.isconst
-ok 22 - !invokable<invalid args>
-ok 23 - !invokable<extra args>
-ok 24 - !invokable<>(invalid object)
-ok 25 - invokable<const char *>
-ok 26 - invokable<void, const char *>
-ok 27 - invoke (int)
-ok 28 - invoke (const char *)
-ok 29 - invoke (void)
-ok 30 - !invokable<>() on const method with non-const object
diff --git a/test/unit/rmean.cc b/test/unit/rmean.cc
index 50db96f6d..6f8667284 100644
--- a/test/unit/rmean.cc
+++ b/test/unit/rmean.cc
@@ -5,7 +5,7 @@
 
 int print_stat(const char *name, int rps, int64_t total, void* ctx)
 {
-	printf("%s: rps %d, total %d%c", name, rps, (int)total,
+	note("%s: rps %d, total %d%c", name, rps, (int)total,
 	       name[2] == '2' ? '\n' : '\t');
 	return 0;
 }
@@ -13,8 +13,9 @@ int print_stat(const char *name, int rps, int64_t total, void* ctx)
 void test_100rps(rmean *st)
 {
 	header();
-	printf("Send 100 requests every second for 10 seconds\n");
-	printf("Calc rps at third and last second\n");
+	plan(1);
+	note("Send 100 requests every second for 10 seconds");
+	note("Calc rps at third and last second");
 	for(int i = 0; i < 10; i++) { /* 10 seconds */
 		rmean_collect(st, 0, 100); /* send 100 requests */
 		rmean_roll(st->stats[0].value, 1);
@@ -29,13 +30,16 @@ void test_100rps(rmean *st)
 		}
 	}
 	/* 10 seconds, 1000 in EV1, 100 rps */
+	ok(1, "test 100rps");
+	check_plan();
 	footer();
 }
 
 void test_mean15rps(rmean *st)
 {
 	header();
-	printf("Send 15 rps on the average, and 3 rps to EV2\n");
+	plan(1);
+	note("Send 15 rps on the average, and 3 rps to EV2");
 	for(int i = 0; i < 10; i++) { /* 10 seconds */
 		for(int j = 0; j < 15; j++) {
 			rmean_collect(st, 0, 1); /* send 15 requests */
@@ -53,12 +57,15 @@ void test_mean15rps(rmean *st)
 		   rmean_mean(st, 1),
 		   rmean_total(st, 1), NULL);
 	/* 10 seconds, 1000 + 150 in EV1, 15 rps. 30 in EV2, 3 rps*/
+	ok(1, "test mean15rps");
 	footer();
+	check_plan();
 }
 
 int main()
 {
-	printf("Stat. 2 names, timer simulation\n");
+	plan(2);
+	note("Stat. 2 names, timer simulation");
 
 	memory_init();
 	fiber_init(fiber_cxx_invoke);
@@ -74,5 +81,7 @@ int main()
 
 	fiber_free();
 	memory_free();
+	check_plan();
+
 	return 0;
 }
diff --git a/test/unit/rmean.result b/test/unit/rmean.result
deleted file mode 100644
index ce050f050..000000000
--- a/test/unit/rmean.result
+++ /dev/null
@@ -1,11 +0,0 @@
-Stat. 2 names, timer simulation
-	*** test_100rps ***
-Send 100 requests every second for 10 seconds
-Calc rps at third and last second
-EV1: rps 60, total 300	EV2: rps 0, total 0
-EV1: rps 100, total 1000	EV2: rps 0, total 0
-	*** test_100rps: done ***
-	*** test_mean15rps ***
-Send 15 rps on the average, and 3 rps to EV2
-EV1: rps 15, total 1150	EV2: rps 3, total 30
-	*** test_mean15rps: done ***
diff --git a/test/unit/rope.c b/test/unit/rope.c
index 5ab4c51f7..e86c94155 100644
--- a/test/unit/rope.c
+++ b/test/unit/rope.c
@@ -4,7 +4,7 @@
 static void
 test_rope_extract(struct rope *rope, rope_size_t pos)
 {
-	printf("extract pos = %zu: ", (size_t) pos);
+	printf("# extract pos = %zu: ", (size_t) pos);
 	struct rope_node *node = rope_extract_node(rope, pos);
 	rope_check(rope);
 	str_print(node->data, node->leaf_size);
@@ -14,10 +14,10 @@ test_rope_extract(struct rope *rope, rope_size_t pos)
 static inline void
 test_rope_cut(struct rope *rope, rope_size_t offset, rope_size_t size)
 {
-	printf("erase offset = %zu, size = %zu \n", (size_t) offset, (size_t) size);
+	note("erase offset = %zu, size = %zu", (size_t) offset, (size_t) size);
 	while (size-- > 0)
 		rope_erase(rope, offset);
-	rope_pretty_print(rope, str_print);
+	/* rope_pretty_print(rope, str_print); */
 	rope_check(rope);
 }
 
@@ -58,11 +58,15 @@ test_rope()
 	test_rope_extract(rope, 124);
 
 	rope_delete(rope);
+	ok(1, "test rope");
+	check_plan();
 }
 
 int
 main()
 {
+	plan(1);
 	test_rope();
+	check_plan();
 	return 0;
 }
diff --git a/test/unit/rope.result b/test/unit/rope.result
deleted file mode 100644
index 996063800..000000000
--- a/test/unit/rope.result
+++ /dev/null
@@ -1,299 +0,0 @@
-insert offset = 0, str = 'who's gonna be'
-size = 14
-string = 'who's gonna be'
-└──{ len = 14, height = 1, data = 'who's gonna be'}
-
-insert offset = 14, str = '<Mr.X>'
-size = 20
-string = 'who's gonna be<Mr.X>'
-│  ┌──nil
-└──{ len = 14, height = 2, data = 'who's gonna be'}
-   └──{ len = 6, height = 1, data = '<Mr.X>'}
-
-insert offset = 20, str = ', Mr. <black!?!>Black'
-size = 41
-string = 'who's gonna be<Mr.X>, Mr. <black!?!>Black'
-│  ┌──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 6, height = 2, data = '<Mr.X>'}
-   └──{ len = 21, height = 1, data = ', Mr. <black!?!>Black'}
-
-insert offset = 41, str = ', but they <know-something-'
-size = 68
-string = 'who's gonna be<Mr.X>, Mr. <black!?!>Black, but they <know-something-'
-│  ┌──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 6, height = 3, data = '<Mr.X>'}
-   │  ┌──nil
-   └──{ len = 21, height = 2, data = ', Mr. <black!?!>Black'}
-      └──{ len = 27, height = 1, data = ', but they <know-something-'}
-
-insert offset = 0, str = 'guys all '
-size = 77
-string = 'guys all who's gonna be<Mr.X>, Mr. <black!?!>Black, but they <know-something-'
-│     ┌──{ len = 9, height = 1, data = 'guys all '}
-│  ┌──{ len = 14, height = 2, data = 'who's gonna be'}
-│  │  └──nil
-└──{ len = 6, height = 3, data = '<Mr.X>'}
-   │  ┌──nil
-   └──{ len = 21, height = 2, data = ', Mr. <black!?!>Black'}
-      └──{ len = 27, height = 1, data = ', but they <know-something-'}
-
-insert offset = 9, str = 'five fighting over '
-size = 96
-string = 'guys all five fighting over who's gonna be<Mr.X>, Mr. <black!?!>Black, but they <know-something-'
-│     ┌──{ len = 9, height = 1, data = 'guys all '}
-│  ┌──{ len = 19, height = 2, data = 'five fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 6, height = 3, data = '<Mr.X>'}
-   │  ┌──nil
-   └──{ len = 21, height = 2, data = ', Mr. <black!?!>Black'}
-      └──{ len = 27, height = 1, data = ', but they <know-something-'}
-
-insert offset = 0, str = '<yes, got got>You got four of '
-size = 126
-string = '<yes, got got>You got four of guys all five fighting over who's gonna be<Mr.X>, Mr. <black!?!>Black, but they <know-something-'
-│        ┌──{ len = 30, height = 1, data = '<yes, got got>You got four of '}
-│     ┌──{ len = 9, height = 2, data = 'guys all '}
-│     │  └──nil
-│  ┌──{ len = 19, height = 3, data = 'five fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 6, height = 4, data = '<Mr.X>'}
-   │  ┌──nil
-   └──{ len = 21, height = 2, data = ', Mr. <black!?!>Black'}
-      └──{ len = 27, height = 1, data = ', but they <know-something-'}
-
-insert offset = 126, str = 'special> don't know each other'
-size = 156
-string = '<yes, got got>You got four of guys all five fighting over who's gonna be<Mr.X>, Mr. <black!?!>Black, but they <know-something-special> don't know each other'
-│        ┌──{ len = 30, height = 1, data = '<yes, got got>You got four of '}
-│     ┌──{ len = 9, height = 2, data = 'guys all '}
-│     │  └──nil
-│  ┌──{ len = 19, height = 3, data = 'five fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 6, height = 4, data = '<Mr.X>'}
-   │  ┌──{ len = 21, height = 1, data = ', Mr. <black!?!>Black'}
-   └──{ len = 27, height = 2, data = ', but they <know-something-'}
-      └──{ len = 30, height = 1, data = 'special> don't know each other'}
-
-insert offset = 4294967295, str = ', so nobody wants to back.'
-size = 182
-string = '<yes, got got>You got four of guys all five fighting over who's gonna be<Mr.X>, Mr. <black!?!>Black, but they <know-something-special> don't know each other, so nobody wants to back.'
-│        ┌──{ len = 30, height = 1, data = '<yes, got got>You got four of '}
-│     ┌──{ len = 9, height = 2, data = 'guys all '}
-│     │  └──nil
-│  ┌──{ len = 19, height = 3, data = 'five fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 6, height = 4, data = '<Mr.X>'}
-   │  ┌──{ len = 21, height = 1, data = ', Mr. <black!?!>Black'}
-   └──{ len = 27, height = 3, data = ', but they <know-something-'}
-      │  ┌──nil
-      └──{ len = 30, height = 2, data = 'special> don't know each other'}
-         └──{ len = 26, height = 1, data = ', so nobody wants to back.'}
-
-insert offset = 181, str = ' down'
-size = 187
-string = '<yes, got got>You got four of guys all five fighting over who's gonna be<Mr.X>, Mr. <black!?!>Black, but they <know-something-special> don't know each other, so nobody wants to back down.'
-│        ┌──{ len = 30, height = 1, data = '<yes, got got>You got four of '}
-│     ┌──{ len = 9, height = 2, data = 'guys all '}
-│     │  └──nil
-│  ┌──{ len = 19, height = 3, data = 'five fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 6, height = 4, data = '<Mr.X>'}
-   │     ┌──{ len = 21, height = 1, data = ', Mr. <black!?!>Black'}
-   │  ┌──{ len = 27, height = 2, data = ', but they <know-something-'}
-   │  │  └──nil
-   └──{ len = 30, height = 3, data = 'special> don't know each other'}
-      │  ┌──{ len = 25, height = 1, data = ', so nobody wants to back'}
-      └──{ len = 5, height = 2, data = ' down'}
-         └──{ len = 1, height = 1, data = '.'}
-
-insert offset = 4294967295, str = '<point-point>'
-size = 200
-string = '<yes, got got>You got four of guys all five fighting over who's gonna be<Mr.X>, Mr. <black!?!>Black, but they <know-something-special> don't know each other, so nobody wants to back down.<point-point>'
-│        ┌──{ len = 30, height = 1, data = '<yes, got got>You got four of '}
-│     ┌──{ len = 9, height = 2, data = 'guys all '}
-│     │  └──nil
-│  ┌──{ len = 19, height = 3, data = 'five fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 6, height = 5, data = '<Mr.X>'}
-   │     ┌──{ len = 21, height = 1, data = ', Mr. <black!?!>Black'}
-   │  ┌──{ len = 27, height = 2, data = ', but they <know-something-'}
-   │  │  └──nil
-   └──{ len = 30, height = 4, data = 'special> don't know each other'}
-      │  ┌──{ len = 25, height = 1, data = ', so nobody wants to back'}
-      └──{ len = 5, height = 3, data = ' down'}
-         │  ┌──nil
-         └──{ len = 1, height = 2, data = '.'}
-            └──{ len = 13, height = 1, data = '<point-point>'}
-
-erase offset = 0, size = 5 
-size = 195
-string = ' got got>You got four of guys all five fighting over who's gonna be<Mr.X>, Mr. <black!?!>Black, but they <know-something-special> don't know each other, so nobody wants to back down.<point-point>'
-│        ┌──{ len = 25, height = 1, data = ' got got>You got four of '}
-│     ┌──{ len = 9, height = 2, data = 'guys all '}
-│     │  └──nil
-│  ┌──{ len = 19, height = 3, data = 'five fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 6, height = 5, data = '<Mr.X>'}
-   │     ┌──{ len = 21, height = 1, data = ', Mr. <black!?!>Black'}
-   │  ┌──{ len = 27, height = 2, data = ', but they <know-something-'}
-   │  │  └──nil
-   └──{ len = 30, height = 4, data = 'special> don't know each other'}
-      │  ┌──{ len = 25, height = 1, data = ', so nobody wants to back'}
-      └──{ len = 5, height = 3, data = ' down'}
-         │  ┌──nil
-         └──{ len = 1, height = 2, data = '.'}
-            └──{ len = 13, height = 1, data = '<point-point>'}
-
-erase offset = 0, size = 9 
-size = 186
-string = 'You got four of guys all five fighting over who's gonna be<Mr.X>, Mr. <black!?!>Black, but they <know-something-special> don't know each other, so nobody wants to back down.<point-point>'
-│        ┌──{ len = 16, height = 1, data = 'You got four of '}
-│     ┌──{ len = 9, height = 2, data = 'guys all '}
-│     │  └──nil
-│  ┌──{ len = 19, height = 3, data = 'five fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 6, height = 5, data = '<Mr.X>'}
-   │     ┌──{ len = 21, height = 1, data = ', Mr. <black!?!>Black'}
-   │  ┌──{ len = 27, height = 2, data = ', but they <know-something-'}
-   │  │  └──nil
-   └──{ len = 30, height = 4, data = 'special> don't know each other'}
-      │  ┌──{ len = 25, height = 1, data = ', so nobody wants to back'}
-      └──{ len = 5, height = 3, data = ' down'}
-         │  ┌──nil
-         └──{ len = 1, height = 2, data = '.'}
-            └──{ len = 13, height = 1, data = '<point-point>'}
-
-erase offset = 179, size = 7 
-size = 179
-string = 'You got four of guys all five fighting over who's gonna be<Mr.X>, Mr. <black!?!>Black, but they <know-something-special> don't know each other, so nobody wants to back down.<point'
-│        ┌──{ len = 16, height = 1, data = 'You got four of '}
-│     ┌──{ len = 9, height = 2, data = 'guys all '}
-│     │  └──nil
-│  ┌──{ len = 19, height = 3, data = 'five fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 6, height = 5, data = '<Mr.X>'}
-   │     ┌──{ len = 21, height = 1, data = ', Mr. <black!?!>Black'}
-   │  ┌──{ len = 27, height = 2, data = ', but they <know-something-'}
-   │  │  └──nil
-   └──{ len = 30, height = 4, data = 'special> don't know each other'}
-      │  ┌──{ len = 25, height = 1, data = ', so nobody wants to back'}
-      └──{ len = 5, height = 3, data = ' down'}
-         │  ┌──{ len = 1, height = 1, data = '.'}
-         └──{ len = 6, height = 2, data = '<point'}
-            └──nil
-
-erase offset = 173, size = 1 
-size = 178
-string = 'You got four of guys all five fighting over who's gonna be<Mr.X>, Mr. <black!?!>Black, but they <know-something-special> don't know each other, so nobody wants to back down.point'
-│        ┌──{ len = 16, height = 1, data = 'You got four of '}
-│     ┌──{ len = 9, height = 2, data = 'guys all '}
-│     │  └──nil
-│  ┌──{ len = 19, height = 3, data = 'five fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 6, height = 5, data = '<Mr.X>'}
-   │     ┌──{ len = 21, height = 1, data = ', Mr. <black!?!>Black'}
-   │  ┌──{ len = 27, height = 2, data = ', but they <know-something-'}
-   │  │  └──nil
-   └──{ len = 30, height = 4, data = 'special> don't know each other'}
-      │  ┌──{ len = 25, height = 1, data = ', so nobody wants to back'}
-      └──{ len = 5, height = 3, data = ' down'}
-         │  ┌──{ len = 1, height = 1, data = '.'}
-         └──{ len = 5, height = 2, data = 'point'}
-            └──nil
-
-erase offset = 58, size = 7 
-size = 171
-string = 'You got four of guys all five fighting over who's gonna be Mr. <black!?!>Black, but they <know-something-special> don't know each other, so nobody wants to back down.point'
-│        ┌──{ len = 16, height = 1, data = 'You got four of '}
-│     ┌──{ len = 9, height = 2, data = 'guys all '}
-│     │  └──nil
-│  ┌──{ len = 19, height = 3, data = 'five fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 20, height = 4, data = ' Mr. <black!?!>Black'}
-   │     ┌──{ len = 27, height = 1, data = ', but they <know-something-'}
-   │  ┌──{ len = 30, height = 2, data = 'special> don't know each other'}
-   │  │  └──{ len = 25, height = 1, data = ', so nobody wants to back'}
-   └──{ len = 5, height = 3, data = ' down'}
-      │  ┌──{ len = 1, height = 1, data = '.'}
-      └──{ len = 5, height = 2, data = 'point'}
-         └──nil
-
-erase offset = 63, size = 10 
-size = 161
-string = 'You got four of guys all five fighting over who's gonna be Mr. Black, but they <know-something-special> don't know each other, so nobody wants to back down.point'
-│        ┌──{ len = 16, height = 1, data = 'You got four of '}
-│     ┌──{ len = 9, height = 2, data = 'guys all '}
-│     │  └──nil
-│  ┌──{ len = 19, height = 3, data = 'five fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 5, height = 5, data = ' Mr. '}
-   │        ┌──{ len = 5, height = 1, data = 'Black'}
-   │     ┌──{ len = 27, height = 2, data = ', but they <know-something-'}
-   │     │  └──nil
-   │  ┌──{ len = 30, height = 3, data = 'special> don't know each other'}
-   │  │  └──{ len = 25, height = 1, data = ', so nobody wants to back'}
-   └──{ len = 5, height = 4, data = ' down'}
-      │  ┌──{ len = 1, height = 1, data = '.'}
-      └──{ len = 5, height = 2, data = 'point'}
-         └──nil
-
-erase offset = 79, size = 25 
-size = 136
-string = 'You got four of guys all five fighting over who's gonna be Mr. Black, but they don't know each other, so nobody wants to back down.point'
-│        ┌──{ len = 16, height = 1, data = 'You got four of '}
-│     ┌──{ len = 9, height = 2, data = 'guys all '}
-│     │  └──nil
-│  ┌──{ len = 19, height = 3, data = 'five fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 5, height = 5, data = ' Mr. '}
-   │        ┌──{ len = 5, height = 1, data = 'Black'}
-   │     ┌──{ len = 11, height = 2, data = ', but they '}
-   │     │  └──nil
-   │  ┌──{ len = 21, height = 3, data = 'don't know each other'}
-   │  │  └──{ len = 25, height = 1, data = ', so nobody wants to back'}
-   └──{ len = 5, height = 4, data = ' down'}
-      │  ┌──{ len = 1, height = 1, data = '.'}
-      └──{ len = 5, height = 2, data = 'point'}
-         └──nil
-
-erase offset = 25, size = 5 
-size = 131
-string = 'You got four of guys all fighting over who's gonna be Mr. Black, but they don't know each other, so nobody wants to back down.point'
-│        ┌──{ len = 16, height = 1, data = 'You got four of '}
-│     ┌──{ len = 9, height = 2, data = 'guys all '}
-│     │  └──nil
-│  ┌──{ len = 14, height = 3, data = 'fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 5, height = 5, data = ' Mr. '}
-   │        ┌──{ len = 5, height = 1, data = 'Black'}
-   │     ┌──{ len = 11, height = 2, data = ', but they '}
-   │     │  └──nil
-   │  ┌──{ len = 21, height = 3, data = 'don't know each other'}
-   │  │  └──{ len = 25, height = 1, data = ', so nobody wants to back'}
-   └──{ len = 5, height = 4, data = ' down'}
-      │  ┌──{ len = 1, height = 1, data = '.'}
-      └──{ len = 5, height = 2, data = 'point'}
-         └──nil
-
-erase offset = 126, size = 5 
-size = 126
-string = 'You got four of guys all fighting over who's gonna be Mr. Black, but they don't know each other, so nobody wants to back down.'
-│        ┌──{ len = 16, height = 1, data = 'You got four of '}
-│     ┌──{ len = 9, height = 2, data = 'guys all '}
-│     │  └──nil
-│  ┌──{ len = 14, height = 3, data = 'fighting over '}
-│  │  └──{ len = 14, height = 1, data = 'who's gonna be'}
-└──{ len = 5, height = 4, data = ' Mr. '}
-   │     ┌──{ len = 5, height = 1, data = 'Black'}
-   │  ┌──{ len = 11, height = 2, data = ', but they '}
-   │  │  └──nil
-   └──{ len = 21, height = 3, data = 'don't know each other'}
-      │  ┌──{ len = 25, height = 1, data = ', so nobody wants to back'}
-      └──{ len = 5, height = 2, data = ' down'}
-         └──{ len = 1, height = 1, data = '.'}
-
-extract pos = 0: You got four of 
-extract pos = 5: ot four of 
-extract pos = 19: s all 
-extract pos = 59: lack
-extract pos = 124: n
diff --git a/test/unit/rope_avl.c b/test/unit/rope_avl.c
index b095fb1a6..cfefd2e48 100644
--- a/test/unit/rope_avl.c
+++ b/test/unit/rope_avl.c
@@ -7,6 +7,7 @@ static void
 test_avl_rotations()
 {
 	header();
+	plan(1);
 
 	struct rope *rope = test_rope_new();
 
@@ -29,6 +30,8 @@ test_avl_rotations()
 	test_rope_insert(rope, 3, "*");
 
 	rope_delete(rope);
+	ok(1, "test avl rotations");
+	check_plan();
 
 	footer();
 }
@@ -36,6 +39,8 @@ test_avl_rotations()
 int
 main()
 {
+	plan(1);
 	test_avl_rotations();
+	check_plan();
 	return 0;
 }
diff --git a/test/unit/rope_avl.result b/test/unit/rope_avl.result
deleted file mode 100644
index 141ffe967..000000000
--- a/test/unit/rope_avl.result
+++ /dev/null
@@ -1,123 +0,0 @@
-	*** test_avl_rotations ***
-insert offset = 0, str = '1'
-size = 1
-string = '1'
-└──{ len = 1, height = 1, data = '1'}
-
-insert offset = 1, str = '2'
-size = 2
-string = '12'
-│  ┌──nil
-└──{ len = 1, height = 2, data = '1'}
-   └──{ len = 1, height = 1, data = '2'}
-
-insert offset = 2, str = '<'
-size = 3
-string = '12<'
-│  ┌──{ len = 1, height = 1, data = '1'}
-└──{ len = 1, height = 2, data = '2'}
-   └──{ len = 1, height = 1, data = '<'}
-
-insert offset = 0, str = '0'
-size = 4
-string = '012<'
-│     ┌──{ len = 1, height = 1, data = '0'}
-│  ┌──{ len = 1, height = 2, data = '1'}
-│  │  └──nil
-└──{ len = 1, height = 3, data = '2'}
-   └──{ len = 1, height = 1, data = '<'}
-
-insert offset = 0, str = '>'
-size = 5
-string = '>012<'
-│     ┌──{ len = 1, height = 1, data = '>'}
-│  ┌──{ len = 1, height = 2, data = '0'}
-│  │  └──{ len = 1, height = 1, data = '1'}
-└──{ len = 1, height = 3, data = '2'}
-   └──{ len = 1, height = 1, data = '<'}
-
-insert offset = 1, str = '*'
-size = 6
-string = '>*012<'
-│     ┌──nil
-│  ┌──{ len = 1, height = 2, data = '>'}
-│  │  └──{ len = 1, height = 1, data = '*'}
-└──{ len = 1, height = 3, data = '0'}
-   │  ┌──{ len = 1, height = 1, data = '1'}
-   └──{ len = 1, height = 2, data = '2'}
-      └──{ len = 1, height = 1, data = '<'}
-
-insert offset = 3, str = 'p'
-size = 7
-string = '>*0p12<'
-│     ┌──nil
-│  ┌──{ len = 1, height = 2, data = '>'}
-│  │  └──{ len = 1, height = 1, data = '*'}
-└──{ len = 1, height = 4, data = '0'}
-   │     ┌──{ len = 1, height = 1, data = 'p'}
-   │  ┌──{ len = 1, height = 2, data = '1'}
-   │  │  └──nil
-   └──{ len = 1, height = 3, data = '2'}
-      └──{ len = 1, height = 1, data = '<'}
-
-insert offset = 3, str = 'p'
-size = 8
-string = '>*0pp12<'
-│     ┌──nil
-│  ┌──{ len = 1, height = 2, data = '>'}
-│  │  └──{ len = 1, height = 1, data = '*'}
-└──{ len = 1, height = 4, data = '0'}
-   │     ┌──{ len = 1, height = 1, data = 'p'}
-   │  ┌──{ len = 1, height = 2, data = 'p'}
-   │  │  └──{ len = 1, height = 1, data = '1'}
-   └──{ len = 1, height = 3, data = '2'}
-      └──{ len = 1, height = 1, data = '<'}
-
-insert offset = 3, str = 'p'
-size = 9
-string = '>*0ppp12<'
-│     ┌──nil
-│  ┌──{ len = 1, height = 2, data = '>'}
-│  │  └──{ len = 1, height = 1, data = '*'}
-└──{ len = 1, height = 4, data = '0'}
-   │     ┌──{ len = 1, height = 1, data = 'p'}
-   │  ┌──{ len = 1, height = 2, data = 'p'}
-   │  │  └──nil
-   └──{ len = 1, height = 3, data = 'p'}
-      │  ┌──{ len = 1, height = 1, data = '1'}
-      └──{ len = 1, height = 2, data = '2'}
-         └──{ len = 1, height = 1, data = '<'}
-
-insert offset = 3, str = 'p'
-size = 10
-string = '>*0pppp12<'
-│     ┌──nil
-│  ┌──{ len = 1, height = 2, data = '>'}
-│  │  └──{ len = 1, height = 1, data = '*'}
-└──{ len = 1, height = 4, data = '0'}
-   │     ┌──{ len = 1, height = 1, data = 'p'}
-   │  ┌──{ len = 1, height = 2, data = 'p'}
-   │  │  └──{ len = 1, height = 1, data = 'p'}
-   └──{ len = 1, height = 3, data = 'p'}
-      │  ┌──{ len = 1, height = 1, data = '1'}
-      └──{ len = 1, height = 2, data = '2'}
-         └──{ len = 1, height = 1, data = '<'}
-
-insert offset = 3, str = '*'
-size = 11
-string = '>*0*pppp12<'
-│        ┌──nil
-│     ┌──{ len = 1, height = 2, data = '>'}
-│     │  └──{ len = 1, height = 1, data = '*'}
-│  ┌──{ len = 1, height = 3, data = '0'}
-│  │  │  ┌──{ len = 1, height = 1, data = '*'}
-│  │  └──{ len = 1, height = 2, data = 'p'}
-│  │     └──nil
-└──{ len = 1, height = 4, data = 'p'}
-   │  ┌──{ len = 1, height = 1, data = 'p'}
-   └──{ len = 1, height = 3, data = 'p'}
-      │  ┌──{ len = 1, height = 1, data = '1'}
-      └──{ len = 1, height = 2, data = '2'}
-         └──{ len = 1, height = 1, data = '<'}
-
-	*** test_avl_rotations: done ***
diff --git a/test/unit/rope_basic.c b/test/unit/rope_basic.c
index d9e116292..5ef49cb8d 100644
--- a/test/unit/rope_basic.c
+++ b/test/unit/rope_basic.c
@@ -7,6 +7,7 @@ static void
 test_empty_rope()
 {
 	header();
+	plan(1);
 
 	struct rope *rope = test_rope_new();
 
@@ -19,13 +20,15 @@ test_empty_rope()
 
 	rope_traverse(rope, str_print);
 	rope_check(rope);
-	rope_pretty_print(rope, str_print);
+	/* rope_pretty_print(rope, str_print); */
 
 	/* rope_erase(), rope_extract() expect a non-empty rope */
 
 	rope_iter_delete(iter);
 	rope_delete(rope);
+	ok(1, "test empty rope");
 
+	check_plan();
 	footer();
 }
 
@@ -33,13 +36,16 @@ static void
 test_prepend()
 {
 	header();
+	plan(1);
 
 	struct rope *rope = test_rope_new();
 	test_rope_insert(rope, 0, " c ");
 	test_rope_insert(rope, 0, " b ");
 	test_rope_insert(rope, 0, " a ");
 	rope_delete(rope);
+	ok(1, "test prepend");
 
+	check_plan();
 	footer();
 }
 
@@ -47,13 +53,16 @@ static void
 test_append()
 {
 	header();
+	plan(1);
 
 	struct rope *rope = test_rope_new();
 	test_rope_insert(rope, rope_size(rope), " a ");
 	test_rope_insert(rope, rope_size(rope), " b ");
 	test_rope_insert(rope, rope_size(rope), " c ");
 	rope_delete(rope);
+	ok(1, "test append");
 
+	check_plan();
 	footer();
 }
 
@@ -61,6 +70,7 @@ static void
 test_insert()
 {
 	header();
+	plan(1);
 
 	struct rope *rope = test_rope_new();
 
@@ -73,6 +83,8 @@ test_insert()
 	test_rope_insert(rope, 8, "*");
 
 	rope_delete(rope);
+	ok(1, "test insert");
+	check_plan();
 
 	footer();
 }
@@ -81,6 +93,7 @@ static void
 test_erase()
 {
 	header();
+	plan(1);
 
 	struct rope *rope = test_rope_new();
 	rope_insert(rope, rope_size(rope), "a", 1);
@@ -90,6 +103,8 @@ test_erase()
 	test_rope_erase(rope, 0);
 
 	rope_delete(rope);
+	ok(1, "test erase")
+	check_plan();
 
 	footer();
 }
@@ -97,10 +112,12 @@ test_erase()
 int
 main()
 {
+	plan(5);
 	test_empty_rope();
 	test_append();
 	test_prepend();
 	test_insert();
 	test_erase();
+	check_plan();
 	return 0;
 }
diff --git a/test/unit/rope_basic.result b/test/unit/rope_basic.result
deleted file mode 100644
index fd8ef015e..000000000
--- a/test/unit/rope_basic.result
+++ /dev/null
@@ -1,139 +0,0 @@
-	*** test_empty_rope ***
-size = 0
-string = ''
-└──nil
-
-	*** test_empty_rope: done ***
-	*** test_append ***
-insert offset = 0, str = ' a '
-size = 3
-string = ' a '
-└──{ len = 3, height = 1, data = ' a '}
-
-insert offset = 3, str = ' b '
-size = 6
-string = ' a  b '
-│  ┌──nil
-└──{ len = 3, height = 2, data = ' a '}
-   └──{ len = 3, height = 1, data = ' b '}
-
-insert offset = 6, str = ' c '
-size = 9
-string = ' a  b  c '
-│  ┌──{ len = 3, height = 1, data = ' a '}
-└──{ len = 3, height = 2, data = ' b '}
-   └──{ len = 3, height = 1, data = ' c '}
-
-	*** test_append: done ***
-	*** test_prepend ***
-insert offset = 0, str = ' c '
-size = 3
-string = ' c '
-└──{ len = 3, height = 1, data = ' c '}
-
-insert offset = 0, str = ' b '
-size = 6
-string = ' b  c '
-│  ┌──{ len = 3, height = 1, data = ' b '}
-└──{ len = 3, height = 2, data = ' c '}
-   └──nil
-
-insert offset = 0, str = ' a '
-size = 9
-string = ' a  b  c '
-│  ┌──{ len = 3, height = 1, data = ' a '}
-└──{ len = 3, height = 2, data = ' b '}
-   └──{ len = 3, height = 1, data = ' c '}
-
-	*** test_prepend: done ***
-	*** test_insert ***
-insert offset = 0, str = '   a '
-size = 5
-string = '   a '
-└──{ len = 5, height = 1, data = '   a '}
-
-insert offset = 4, str = 'b '
-size = 7
-string = '   ab  '
-│  ┌──{ len = 4, height = 1, data = '   a'}
-└──{ len = 2, height = 2, data = 'b '}
-   └──{ len = 1, height = 1, data = ' '}
-
-insert offset = 5, str = 'c '
-size = 9
-string = '   abc   '
-│  ┌──{ len = 4, height = 1, data = '   a'}
-└──{ len = 1, height = 3, data = 'b'}
-   │  ┌──{ len = 2, height = 1, data = 'c '}
-   └──{ len = 1, height = 2, data = ' '}
-      └──{ len = 1, height = 1, data = ' '}
-
-insert offset = 1, str = ' '
-size = 10
-string = '    abc   '
-│     ┌──{ len = 1, height = 1, data = ' '}
-│  ┌──{ len = 1, height = 2, data = ' '}
-│  │  └──{ len = 3, height = 1, data = '  a'}
-└──{ len = 1, height = 3, data = 'b'}
-   │  ┌──{ len = 2, height = 1, data = 'c '}
-   └──{ len = 1, height = 2, data = ' '}
-      └──{ len = 1, height = 1, data = ' '}
-
-insert offset = 9, str = ' '
-size = 11
-string = '    abc    '
-│     ┌──{ len = 1, height = 1, data = ' '}
-│  ┌──{ len = 1, height = 2, data = ' '}
-│  │  └──{ len = 3, height = 1, data = '  a'}
-└──{ len = 1, height = 4, data = 'b'}
-   │  ┌──{ len = 2, height = 1, data = 'c '}
-   └──{ len = 1, height = 3, data = ' '}
-      │  ┌──{ len = 1, height = 1, data = ' '}
-      └──{ len = 1, height = 2, data = ' '}
-         └──nil
-
-insert offset = 4, str = '*'
-size = 12
-string = '    *abc    '
-│     ┌──{ len = 1, height = 1, data = ' '}
-│  ┌──{ len = 1, height = 3, data = ' '}
-│  │  │  ┌──{ len = 2, height = 1, data = '  '}
-│  │  └──{ len = 1, height = 2, data = '*'}
-│  │     └──{ len = 1, height = 1, data = 'a'}
-└──{ len = 1, height = 4, data = 'b'}
-   │  ┌──{ len = 2, height = 1, data = 'c '}
-   └──{ len = 1, height = 3, data = ' '}
-      │  ┌──{ len = 1, height = 1, data = ' '}
-      └──{ len = 1, height = 2, data = ' '}
-         └──nil
-
-insert offset = 8, str = '*'
-size = 13
-string = '    *abc*    '
-│     ┌──{ len = 1, height = 1, data = ' '}
-│  ┌──{ len = 1, height = 3, data = ' '}
-│  │  │  ┌──{ len = 2, height = 1, data = '  '}
-│  │  └──{ len = 1, height = 2, data = '*'}
-│  │     └──{ len = 1, height = 1, data = 'a'}
-└──{ len = 1, height = 4, data = 'b'}
-   │     ┌──{ len = 1, height = 1, data = 'c'}
-   │  ┌──{ len = 1, height = 2, data = '*'}
-   │  │  └──{ len = 1, height = 1, data = ' '}
-   └──{ len = 1, height = 3, data = ' '}
-      │  ┌──{ len = 1, height = 1, data = ' '}
-      └──{ len = 1, height = 2, data = ' '}
-         └──nil
-
-	*** test_insert: done ***
-	*** test_erase ***
-erase offset = 0
-size = 0
-string = ''
-└──nil
-
-erase offset = 0
-size = 1
-string = 'b'
-└──{ len = 1, height = 1, data = 'b'}
-
-	*** test_erase: done ***
diff --git a/test/unit/rope_common.h b/test/unit/rope_common.h
index 3392e87e3..67e2dbc2b 100644
--- a/test/unit/rope_common.h
+++ b/test/unit/rope_common.h
@@ -3,6 +3,9 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+
+#include "unit.h"
+
 static inline char *
 str_getn(void *ctx, char *data, size_t size, size_t offset)
 {
@@ -68,18 +71,18 @@ test_rope_new()
 static inline void
 test_rope_insert(struct rope *rope, rope_size_t offset, char *str)
 {
-	printf("insert offset = %zu, str = '%s'\n", (size_t) offset, str);
+	note("insert offset = %zu, str = '%s'", (size_t) offset, str);
 	rope_insert(rope, offset, str, strlen(str));
-	rope_pretty_print(rope, str_print);
+	/* rope_pretty_print(rope, str_print); */
 	rope_check(rope);
 }
 
 static inline void
 test_rope_erase(struct rope *rope, rope_size_t offset)
 {
-	printf("erase offset = %zu\n", (size_t) offset);
+	note("erase offset = %zu", (size_t) offset);
 	rope_erase(rope, offset);
-	rope_pretty_print(rope, str_print);
+	/* rope_pretty_print(rope, str_print); */
 	rope_check(rope);
 }
 
diff --git a/test/unit/rope_stress.c b/test/unit/rope_stress.c
index bc312d7c0..4d17ef6ef 100644
--- a/test/unit/rope_stress.c
+++ b/test/unit/rope_stress.c
@@ -8,6 +8,7 @@ static void
 test_rope_stress_small()
 {
 	header();
+	plan(1);
 
 	struct rope *rope = test_rope_new();
 	const int iterations = 500;
@@ -29,7 +30,9 @@ test_rope_stress_small()
 		rope_check(rope);
 	}
 	rope_delete(rope);
+	ok(1, "test rope stress small");
 
+	check_plan();
 	footer();
 }
 
@@ -37,6 +40,7 @@ static void
 test_rope_stress_large()
 {
 	header();
+	plan(1);
 
 	struct rope *rope = test_rope_new();
 	const int iterations = 50000;
@@ -58,14 +62,18 @@ test_rope_stress_large()
 			rope_check(rope);
 	}
 	rope_delete(rope);
+	ok(1, "test rope stress large");
 
+	check_plan();
 	footer();
 }
 int
 main()
 {
+	plan(2);
 	srand(time(NULL));
 	test_rope_stress_small();
 	test_rope_stress_large();
+	check_plan();
 	return 0;
 }
diff --git a/test/unit/rope_stress.result b/test/unit/rope_stress.result
deleted file mode 100644
index bd2e45b75..000000000
--- a/test/unit/rope_stress.result
+++ /dev/null
@@ -1,4 +0,0 @@
-	*** test_rope_stress_small ***
-	*** test_rope_stress_small: done ***
-	*** test_rope_stress_large ***
-	*** test_rope_stress_large: done ***
diff --git a/test/unit/rtree.cc b/test/unit/rtree.cc
index 02ca9cdd6..d623d0178 100644
--- a/test/unit/rtree.cc
+++ b/test/unit/rtree.cc
@@ -31,19 +31,20 @@ extent_free(void *ctx, void *page)
 static void
 simple_check()
 {
+	header();
+	plan(1);
+
 	struct rtree_rect rect;
 	struct rtree_iterator iterator;
 	rtree_iterator_init(&iterator);
 	const size_t rounds = 2000;
 
-	header();
-
 	struct rtree tree;
 	rtree_init(&tree, 2, extent_size,
 		   extent_alloc, extent_free, &page_count,
 		   RTREE_EUCLID);
 
-	printf("Insert 1..X, remove 1..X\n");
+	note("Insert 1..X, remove 1..X");
 	for (size_t i = 1; i <= rounds; i++) {
 		record_t rec = (record_t)i;
 
@@ -82,7 +83,7 @@ simple_check()
 		fail("Tree count mismatch (1)", "true");
 	}
 
-	printf("Insert 1..X, remove X..1\n");
+	note("Insert 1..X, remove X..1");
 	for (size_t i = 1; i <= rounds; i++) {
 		record_t rec = (record_t)i;
 
@@ -122,7 +123,7 @@ simple_check()
 	}
 
 
-	printf("Insert X..1, remove 1..X\n");
+	note("Insert X..1, remove 1..X");
 	for (size_t i = rounds; i != 0; i--) {
 		record_t rec = (record_t)i;
 
@@ -162,7 +163,7 @@ simple_check()
 	}
 
 
-	printf("Insert X..1, remove X..1\n");
+	note("Insert X..1, remove X..1");
 	for (size_t i = rounds; i != 0; i--) {
 		record_t rec = (record_t)i;
 
@@ -205,8 +206,10 @@ simple_check()
 	rtree_destroy(&tree);
 
 	rtree_iterator_destroy(&iterator);
+	ok(1, "simple test");
 
 	footer();
+	check_plan();
 }
 
 static void
@@ -222,6 +225,7 @@ static void
 neighbor_test()
 {
 	header();
+	plan(1);
 
 	const unsigned int test_count = 1000;
 	struct rtree_rect arr[test_count];
@@ -271,17 +275,21 @@ neighbor_test()
 		fail("something found from empty iterator ", "true");
 	}
 	rtree_iterator_destroy(&iterator);
+	ok(1, "neighbor test");
 
 	footer();
+	check_plan();
 }
 
 
 int
 main(void)
 {
+	plan(2);
 	simple_check();
 	neighbor_test();
 	if (page_count != 0) {
 		fail("memory leak!", "true");
 	}
+	check_plan();
 }
diff --git a/test/unit/rtree.result b/test/unit/rtree.result
deleted file mode 100644
index 6efa93438..000000000
--- a/test/unit/rtree.result
+++ /dev/null
@@ -1,8 +0,0 @@
-	*** simple_check ***
-Insert 1..X, remove 1..X
-Insert 1..X, remove X..1
-Insert X..1, remove 1..X
-Insert X..1, remove X..1
-	*** simple_check: done ***
-	*** neighbor_test ***
-	*** neighbor_test: done ***
diff --git a/test/unit/rtree_iterator.cc b/test/unit/rtree_iterator.cc
index b3c8695e9..ee1bcc131 100644
--- a/test/unit/rtree_iterator.cc
+++ b/test/unit/rtree_iterator.cc
@@ -31,6 +31,7 @@ static void
 iterator_check()
 {
 	header();
+	plan(1);
 
 	struct rtree tree;
 	rtree_init(&tree, 2, extent_size,
@@ -53,7 +54,7 @@ iterator_check()
 			rtree_insert(&tree, &rect, record_t(++count));
 		}
 	}
-	printf("Test tree size: %d\n", (int)rtree_number_of_records(&tree));
+	note("Test tree size: %d", (int)rtree_number_of_records(&tree));
 
 	/* Test that tree filled ok */
 	for (size_t i = 0; i < count1; i++) {
@@ -81,8 +82,8 @@ iterator_check()
 
 	/* Print 7 elems closest to coordinate basis */
 	{
+		fprintf(stderr, "--> ");
 		static struct rtree_rect basis;
-		printf("--> ");
 		if (!rtree_search(&tree, &basis, SOP_NEIGHBOR, &iterator)) {
 			fail("Integrity check failed (5)", "false");
 		}
@@ -91,13 +92,13 @@ iterator_check()
 			if (rec == 0) {
 				fail("Integrity check failed (6)", "false");
 			}
-			printf("%p ", rec);
+			fprintf(stderr, "%p ", rec);
 		}
-		printf("\n");
+		fprintf(stderr, "\n");
 	}
 	/* Print 7 elems closest to the point [(count1-1)*count2*2, (count1-1)*count2*2] */
 	{
-		printf("<-- ");
+		fprintf(stderr, "<-- ");
 		coord_t coord = (count1 - 1) * count2 * 2;
 		rtree_set2d(&rect, coord, coord, coord, coord);
 		if (!rtree_search(&tree, &rect, SOP_NEIGHBOR, &iterator)) {
@@ -108,9 +109,9 @@ iterator_check()
 			if (rec == 0) {
 				fail("Integrity check failed (6)", "false");
 			}
-			printf("%p ", rec);
+			fprintf(stderr, "%p ", rec);
 		}
-		printf("\n");
+		fprintf(stderr, "\n");
 	}
 
 	/* Test strict belongs */
@@ -192,6 +193,8 @@ iterator_check()
 	rtree_iterator_destroy(&iterator);
 	rtree_destroy(&tree);
 
+	ok(1, "iterator check");
+	check_plan();
 	footer();
 }
 
@@ -199,6 +202,7 @@ static void
 iterator_invalidate_check()
 {
 	header();
+	plan(1);
 
 	const size_t test_size = 300;
 	const size_t max_delete_count = 100;
@@ -299,15 +303,21 @@ iterator_invalidate_check()
 		rtree_destroy(&tree);
 	}
 
+	ok(1, "iterator invalidate check");
+	check_plan();
 	footer();
 }
 
 int
 main(void)
 {
+	header();
+	plan(2);
 	iterator_check();
 	iterator_invalidate_check();
 	if (extent_count != 0) {
 		fail("memory leak!", "false");
 	}
+	check_plan();
+	footer();
 }
diff --git a/test/unit/rtree_iterator.result b/test/unit/rtree_iterator.result
deleted file mode 100644
index 5eac9f090..000000000
--- a/test/unit/rtree_iterator.result
+++ /dev/null
@@ -1,7 +0,0 @@
-	*** iterator_check ***
-Test tree size: 50000
---> 0x1 0x2 0x3 0x4 0x5 0x6 0x7 
-<-- 0xc34c 0xc34d 0xc34e 0xc34f 0xc350 0xc34b 0xc34a 
-	*** iterator_check: done ***
-	*** iterator_invalidate_check ***
-	*** iterator_invalidate_check: done ***
diff --git a/test/unit/rtree_multidim.cc b/test/unit/rtree_multidim.cc
index e09f6190b..8fa44e6a9 100644
--- a/test/unit/rtree_multidim.cc
+++ b/test/unit/rtree_multidim.cc
@@ -348,14 +348,14 @@ test_select_neigh(const CBoxSet<DIMENSION> &set, const struct rtree *tree)
 		}
 	}
 	if (res1.size() != res2.size()) {
-		printf("%s result size differ %d %d\n", __func__,
+		diag("%s result size differ %d %d\n", __func__,
 		       (int)res1.size(), (int)res2.size());
 	} else {
 		for (size_t i = 0; i < res1.size(); i++)
 			if (res1[i].id != res2[i].id &&
 			    res1[i].box.Distance2(box) !=
 			    res2[i].box.Distance2(box))
-				printf("%s result differ!\n", __func__);
+				diag("%s result differ!\n", __func__);
 	}
 	rtree_iterator_destroy(&iterator);
 
@@ -388,14 +388,14 @@ test_select_neigh_man(const CBoxSet<DIMENSION> &set, struct rtree *tree)
 		}
 	}
 	if (res1.size() != res2.size()) {
-		printf("%s result size differ %d %d\n", __func__,
+		diag("%s result size differ %d %d\n", __func__,
 		       (int)res1.size(), (int)res2.size());
 	} else {
 		for (size_t i = 0; i < res1.size(); i++)
 			if (res1[i].id != res2[i].id &&
 			    res1[i].box.DistanceMan(box) !=
 			    res2[i].box.DistanceMan(box))
-				printf("%s result differ!\n", __func__);
+				diag("%s result differ!\n", __func__);
 	}
 	tree->distance_type = RTREE_EUCLID; /* dirty hack */
 	rtree_iterator_destroy(&iterator);
@@ -428,12 +428,12 @@ test_select_in(const CBoxSet<DIMENSION> &set, const struct rtree *tree)
 	sort(res1.begin(), res1.end());
 	sort(res2.begin(), res2.end());
 	if (res1.size() != res2.size()) {
-		printf("%s result size differ %d %d\n", __func__,
+		diag("%s result size differ %d %d\n", __func__,
 		       (int)res1.size(), (int)res2.size());
 	} else {
 		for (size_t i = 0; i < res1.size(); i++)
 			if (res1[i].id != res2[i].id)
-				printf("%s result differ!\n", __func__);
+				diag("%s result differ!\n", __func__);
 	}
 	rtree_iterator_destroy(&iterator);
 
@@ -465,12 +465,12 @@ test_select_strict_in(const CBoxSet<DIMENSION> &set, const struct rtree *tree)
 	sort(res1.begin(), res1.end());
 	sort(res2.begin(), res2.end());
 	if (res1.size() != res2.size()) {
-		printf("%s result size differ %d %d\n", __func__,
+		diag("%s result size differ %d %d\n", __func__,
 		       (int)res1.size(), (int)res2.size());
 	} else {
 		for (size_t i = 0; i < res1.size(); i++)
 			if (res1[i].id != res2[i].id)
-				printf("%s result differ!\n", __func__);
+				diag("%s result differ!\n", __func__);
 	}
 	rtree_iterator_destroy(&iterator);
 
@@ -481,6 +481,7 @@ static void
 rand_test()
 {
 	header();
+	plan(1);
 
 	CBoxSet<DIMENSION> set;
 
@@ -489,7 +490,7 @@ rand_test()
 		   extent_alloc, extent_free, &page_count,
 		   RTREE_EUCLID);
 
-	printf("\tDIMENSION: %u, page size: %u, max fill good: %d\n",
+	note("\tDIMENSION: %u, page size: %u, max fill good: %d\n",
 	       DIMENSION, tree.page_size, tree.page_max_fill >= 10);
 
 	for (unsigned i = 0; i < TEST_ROUNDS; i++) {
@@ -513,7 +514,7 @@ rand_test()
 			struct rtree_rect rt;
 			set.entries[id].box.FillRTreeRect(&rt);
 			if (!rtree_remove(&tree, &rt, (void *)(id + 1))) {
-				printf("Error in remove\n");
+				diag("Error in remove\n");
 			}
 			set.DeleteBox(id);
 		}
@@ -525,13 +526,21 @@ rand_test()
 	}
 
 	rtree_destroy(&tree);
+	ok(1, "rand_test %u", DIMENSION);
+
+	/*
+	note("\tDIMENSION: %u, page size: %u, max fill good: %d\n",
+	       DIMENSION, tree.page_size, tree.page_max_fill >= 10);
+	*/
 
 	footer();
+	check_plan();
 }
 
 int
 main(void)
 {
+	plan(5);
 	srand(time(0));
 	rand_test<1>();
 	rand_test<2>();
@@ -541,4 +550,5 @@ main(void)
 	if (page_count != 0) {
 		fail("memory leak!", "true");
 	}
+	check_plan();
 }
diff --git a/test/unit/rtree_multidim.result b/test/unit/rtree_multidim.result
deleted file mode 100644
index 9370ecc3a..000000000
--- a/test/unit/rtree_multidim.result
+++ /dev/null
@@ -1,15 +0,0 @@
-	*** rand_test ***
-	DIMENSION: 1, page size: 512, max fill good: 1
-	*** rand_test: done ***
-	*** rand_test ***
-	DIMENSION: 2, page size: 1024, max fill good: 1
-	*** rand_test: done ***
-	*** rand_test ***
-	DIMENSION: 3, page size: 1024, max fill good: 1
-	*** rand_test: done ***
-	*** rand_test ***
-	DIMENSION: 8, page size: 4096, max fill good: 1
-	*** rand_test: done ***
-	*** rand_test ***
-	DIMENSION: 16, page size: 8192, max fill good: 1
-	*** rand_test: done ***
diff --git a/test/unit/say.result b/test/unit/say.result
deleted file mode 100644
index 8dfed7b61..000000000
--- a/test/unit/say.result
+++ /dev/null
@@ -1,67 +0,0 @@
-1..33
-# type: file
-# next: 
-ok 1 - 
-# type: file
-# next: /dev/null
-ok 2 - /dev/null
-# type: pipe
-# next: 
-ok 3 - |
-# type: pipe
-# next: /usr/bin/cronolog
-ok 4 - |/usr/bin/cronolog
-# type: file
-# next: 
-ok 5 - file:
-# type: file
-# next: instance.log
-ok 6 - file:instance.log
-# type: pipe
-# next: 
-ok 7 - pipe:
-# type: pipe
-# next: gzip > instance.log.gz
-ok 8 - pipe:gzip > instance.log.gz
-# type: syslog
-# next: 
-ok 9 - syslog:
-# type: syslog
-# next: identity=
-ok 10 - syslog:identity=
-# next: unknown:
-ok 11 - unknown:
-# next: unknown:example.org
-ok 12 - unknown:example.org
-# facility: 24
-ok 13 - 
-# identity: tarantool
-# facility: 24
-ok 14 - identity=tarantool
-# facility: 1
-ok 15 - facility=user
-# identity: xtarantoolx
-# facility: 17
-ok 16 - identity=xtarantoolx,facility=local1
-# identity: xtarantoolx
-ok 17 - identity=xtarantoolx,facility=kern
-# identity: xtarantoolx
-# facility: 8
-ok 18 - identity=xtarantoolx,facility=uucp
-ok 19 - identity=xtarantoolx,facility=foo
-# identity: bar
-# facility: 10
-ok 20 - facility=authpriv,identity=bar
-ok 21 - invalid=
-ok 22 - facility=local1,facility=local2
-ok 23 - identity=foo,identity=bar
-ok 24 - plain
-ok 25 - json
-ok 26 - custom
-ok 27 - freopen
-ok 28 - parsed identity
-ok 29 - parsed facility
-ok 30 - ftell
-ok 31 - log_say
-ok 32 - fseek
-ok 33 - syslog line
diff --git a/test/unit/scramble.c b/test/unit/scramble.c
index 8f1ee55af..d4f684efb 100644
--- a/test/unit/scramble.c
+++ b/test/unit/scramble.c
@@ -9,6 +9,9 @@
 void
 test_scramble()
 {
+	header();
+	plan(1);
+
 	int salt[SCRAMBLE_SIZE/sizeof(int)];
 	for (unsigned i = 0; i < sizeof(salt)/sizeof(int); i++)
 		salt[i] = rand();
@@ -30,7 +33,7 @@ test_scramble()
 
 	scramble_prepare(scramble, salt, password, strlen(password));
 
-	printf("%d\n", scramble_check(scramble, salt, hash2));
+	note("%d", scramble_check(scramble, salt, hash2));
 
 	int remote_salt[SCRAMBLE_SIZE/sizeof(int)];
 	for(size_t i = 0; i < sizeof(salt)/sizeof(int); ++i)
@@ -40,21 +43,26 @@ test_scramble()
 
 	scramble_reencode(new_scramble, scramble, salt, remote_salt, hash2);
 
-	printf("%d\n", scramble_check(new_scramble, remote_salt, hash2));
+	note("%d", scramble_check(new_scramble, remote_salt, hash2));
 
 	password = "wrongpass";
 	scramble_prepare(scramble, salt, password, strlen(password));
 
-	printf("%d\n", scramble_check(scramble, salt, hash2) != 0);
+	note("%d", scramble_check(scramble, salt, hash2) != 0);
 
 	scramble_prepare(scramble, salt, password, 0);
 
-	printf("%d\n", scramble_check(scramble, salt, hash2) != 0);
+	note("%d", scramble_check(scramble, salt, hash2) != 0);
+
+	ok(1, "test scramble");
+	check_plan();	
 }
 
 void
 test_password_prepare()
 {
+	header();
+	plan(1);
 	char buf[SCRAMBLE_BASE64_SIZE * 2];
 	int password[5];
 	for (unsigned i = 0; i < sizeof(password)/sizeof(int); i++)
@@ -62,14 +70,19 @@ test_password_prepare()
 	password_prepare((char *) password, sizeof(password),
 			 buf, sizeof(buf));
 	fail_unless(strlen(buf) == SCRAMBLE_BASE64_SIZE);
+
+	ok(1, "test password prepare");
+	check_plan();
 }
 
 int main()
 {
 	random_init();
 
+	plan(2);
 	test_scramble();
 	test_password_prepare();
+	check_plan();
 
 	return 0;
 }
diff --git a/test/unit/scramble.result b/test/unit/scramble.result
deleted file mode 100644
index 0463db267..000000000
--- a/test/unit/scramble.result
+++ /dev/null
@@ -1,4 +0,0 @@
-0
-0
-1
-1
diff --git a/test/unit/sio.result b/test/unit/sio.result
deleted file mode 100644
index 896736bf9..000000000
--- a/test/unit/sio.result
+++ /dev/null
@@ -1,36 +0,0 @@
-	*** main ***
-1..2
-	*** check_uri_to_addr ***
-    1..22
-    ok 1 - invalid uri is detected
-    ok 2 - too long UNIX path
-    ok 3 - UNIX
-    ok 4 - UNIX path
-    ok 5 - UNIX family
-    ok 6 - unix host is not empty
-    ok 7 - localhost
-    ok 8 - localhost family
-    ok 9 - localhost address
-    ok 10 - localhost port
-    ok 11 - 'localhost' host is not empty
-    ok 12 - 'any'
-    ok 13 - 'any' family
-    ok 14 - 'any' address
-    ok 15 - 'any' port
-    ok 16 - only port specified - host is empty
-    ok 17 - IP
-    ok 18 - IP family
-    ok 19 - IP address
-    ok 20 - IP port
-    ok 21 - IPv4 host is not empty
-    ok 22 - invalid IP
-ok 1 - subtests
-	*** check_uri_to_addr: done ***
-	*** check_auto_bind ***
-    1..3
-    ok 1 - bind to 0 works
-    ok 2 - getsockname works on 0 bind
-    ok 3 - a real port is returned
-ok 2 - subtests
-	*** check_auto_bind: done ***
-	*** main: done ***
diff --git a/test/unit/stailq.result b/test/unit/stailq.result
deleted file mode 100644
index 041545008..000000000
--- a/test/unit/stailq.result
+++ /dev/null
@@ -1,76 +0,0 @@
-1..75
-ok 1 - list is empty
-ok 2 - list is empty after reverse
-ok 3 - first item
-ok 4 - last item
-ok 5 - element (foreach) 0
-ok 6 - element (foreach) 1
-ok 7 - element (foreach) 2
-ok 8 - element (foreach) 3
-ok 9 - element (foreach) 4
-ok 10 - element (foreach) 5
-ok 11 - element (foreach) 6
-ok 12 - first item
-ok 13 - head is not empty
-ok 14 - first entry
-ok 15 - shift item 0
-ok 16 - shift item 1
-ok 17 - shift item 2
-ok 18 - shift item 3
-ok 19 - shift item 4
-ok 20 - shift item 5
-ok 21 - shift item 6
-ok 22 - list is empty after shift
-ok 23 - next is empty
-ok 24 - element (foreach_entry) 6
-ok 25 - element (foreach_entry) 5
-ok 26 - element (foreach_entry) 4
-ok 27 - element (foreach_entry) 3
-ok 28 - element (foreach_entry) 2
-ok 29 - element (foreach_entry) 1
-ok 30 - element (foreach_entry) 0
-ok 31 - element (foreach_entry) 0
-ok 32 - element (foreach_entry) 1
-ok 33 - element (foreach_entry) 2
-ok 34 - element (foreach_entry) 3
-ok 35 - element (foreach_entry) 4
-ok 36 - element (foreach_entry) 5
-ok 37 - element (foreach_entry) 6
-ok 38 - head is empty after cut at first
-ok 39 - tail element after cut at first 0
-ok 40 - tail element after cut at first 1
-ok 41 - tail element after cut at first 2
-ok 42 - tail element after cut at first 3
-ok 43 - tail element after cut at first 4
-ok 44 - tail element after cut at first 5
-ok 45 - tail element after cut at first 6
-ok 46 - tail is empty after cut at last
-ok 47 - head element after cut at last 0
-ok 48 - head element after cut at last 1
-ok 49 - head element after cut at last 2
-ok 50 - head element after cut at last 3
-ok 51 - head element after cut at last 4
-ok 52 - head element after cut at last 5
-ok 53 - head element after cut at last 6
-ok 54 - head element after cut at middle 0
-ok 55 - head element after cut at middle 1
-ok 56 - head element after cut at middle 2
-ok 57 - head element after cut at middle 3
-ok 58 - tail element after cut at middle 4
-ok 59 - tail element after cut at middle 5
-ok 60 - tail element after cut at middle 6
-ok 61 - tail is empty after concat
-ok 62 - head element after concat 0
-ok 63 - head element after concat 1
-ok 64 - head element after concat 2
-ok 65 - head element after concat 3
-ok 66 - head element after concat 4
-ok 67 - head element after concat 5
-ok 68 - head element after concat 6
-ok 69 - element 0 (insert)
-ok 70 - element 1 (insert)
-ok 71 - element 2 (insert)
-ok 72 - element 3 (insert)
-ok 73 - element 4 (insert)
-ok 74 - first item (insert)
-ok 75 - last item (insert)
diff --git a/test/unit/swim.result b/test/unit/swim.result
deleted file mode 100644
index 07ea6a1a0..000000000
--- a/test/unit/swim.result
+++ /dev/null
@@ -1,234 +0,0 @@
-	*** main_f ***
-1..23
-	*** swim_test_one_link ***
-    1..6
-    ok 1 - no rounds - no fullmesh
-    ok 2 - one link
-    ok 3 - self 0 is alive
-    ok 4 - self 1 is alive
-    ok 5 - 0 sees 1 as alive
-    ok 6 - 1 sees 0 as alive
-ok 1 - subtests
-	*** swim_test_one_link: done ***
-	*** swim_test_sequence ***
-    1..1
-    ok 1 - sequence
-ok 2 - subtests
-	*** swim_test_sequence: done ***
-	*** swim_test_uuid_update ***
-    1..7
-    ok 1 - UUID update
-    ok 2 - old UUID is marked as 'left'
-    ok 3 - old UUID is dropped after a while
-    ok 4 - dropped everywhere
-    ok 5 - two members in each
-    ok 6 - can not update to an existing UUID - swim_cfg fails
-    ok 7 - diag says 'exists'
-ok 3 - subtests
-	*** swim_test_uuid_update: done ***
-	*** swim_test_cfg ***
-    1..16
-    ok 1 - first cfg failed - no URI
-    ok 2 - diag says 'mandatory'
-    ok 3 - first cfg failed - no UUID
-    ok 4 - diag says 'mandatory'
-    ok 5 - configured first time
-    ok 6 - second time can omit URI, UUID
-    ok 7 - hearbeat is dynamic
-    ok 8 - URI is unchanged after recfg with NULL URI
-    ok 9 - can not use invalid URI
-    ok 10 - diag says 'invalid uri'
-    ok 11 - can not use domain names
-    ok 12 - diag says 'invalid uri'
-    ok 13 - UNIX sockets are not supported
-    ok 14 - diag says 'only IP'
-    ok 15 - can not bind to an occupied port
-    ok 16 - diag says 'bind'
-ok 4 - subtests
-	*** swim_test_cfg: done ***
-	*** swim_test_add_remove ***
-    1..14
-    ok 1 - can not add an existing member
-    ok 2 - diag says 'already exists'
-    ok 3 - can not add a invalid uri
-    ok 4 - diag says 'invalid uri'
-    ok 5 - can not remove self
-    ok 6 - diag says the same
-    ok 7 - find by UUID works
-    ok 8 - now remove one element
-    ok 9 - and it can not be found anymore
-    ok 10 - remove of a not existing member
-    ok 11 - after removal the cluster is not in fullmesh
-    ok 12 - but it is back in 1 step
-    ok 13 - back in fullmesh after a member removal in the middle of a step
-    ok 14 - if a referenced member is dropped, it can be detected from the public API
-ok 5 - subtests
-	*** swim_test_add_remove: done ***
-	*** swim_test_basic_failure_detection ***
-    1..9
-    ok 1 - node is added as alive
-    ok 2 - member still is not suspected after 1 noack
-    ok 3 - but it is suspected after one more
-    ok 4 - it is not dead after 2 more noacks
-    ok 5 - but it is dead after one more
-    ok 6 - after 2 more unacks the member still is not deleted - dissemination TTD keeps it
-    ok 7 - but it is dropped after 2 rounds when TTD gets 0
-    ok 8 - fullmesh is restored
-    ok 9 - a member is added back on an ACK
-ok 6 - subtests
-	*** swim_test_basic_failure_detection: done ***
-	*** swim_test_probe ***
-    1..3
-    ok 1 - probe validates URI
-    ok 2 - send probe
-    ok 3 - receive ACK on probe and get fullmesh
-ok 7 - subtests
-	*** swim_test_probe: done ***
-	*** swim_test_refute ***
-    1..6
-    ok 1 - S2 increments its own incarnation to refute its suspicion
-    ok 2 - new incarnation has reached S1 with a next round message
-    ok 3 - after restart S2's version is 0 again
-    ok 4 - but generation is new
-    ok 5 - S2 disseminates new incarnation, S1 learns it
-    ok 6 - and considers S2 alive
-ok 8 - subtests
-	*** swim_test_refute: done ***
-	*** swim_test_basic_gossip ***
-    1..4
-    ok 1 - S1 still thinks that S2 is alive
-    ok 2 - but one more second, and a second ack timed out - S1 sees S2 as suspected
-    ok 3 - S3 still thinks that S2 is alive
-    ok 4 - S3 learns about suspected S2 from S1
-ok 9 - subtests
-	*** swim_test_basic_gossip: done ***
-	*** swim_test_too_big_packet ***
-    1..3
-    ok 1 - despite S1 can not send all the 50 members in a one packet, fullmesh is eventually reached
-    ok 2 - a dead member is detected in time not depending on cluster size
-    ok 3 - S26 death is eventually learned by everyone
-ok 10 - subtests
-	*** swim_test_too_big_packet: done ***
-	*** swim_test_undead ***
-    1..2
-    ok 1 - member S2 is dead
-    ok 2 - but it is never deleted due to the cfg option
-ok 11 - subtests
-	*** swim_test_undead: done ***
-	*** swim_test_packet_loss ***
-    1..5
-    ok 1 - drop rate = 5.00, but the failure is disseminated
-    ok 2 - drop rate = 10.00, but the failure is disseminated
-    ok 3 - drop rate = 20.00, but the failure is disseminated
-    ok 4 - drop rate = 50.00, but the failure is disseminated
-    ok 5 - drop rate = 90.00, but the failure is disseminated
-ok 12 - subtests
-	*** swim_test_packet_loss: done ***
-	*** swim_test_quit ***
-    1..10
-    ok 1 - 'self' is 'left' immediately after quit
-    ok 2 - 'quit' is sent to all the members without delays between dispatches
-    ok 3 - quited member S1 has returned and refuted the old status
-    ok 4 - another member S2 has taken the quited UUID
-    ok 5 - S3 did not add S1 back when received its 'quit'
-    ok 6 - S2 finally got 'quit' message from S1, but with its 'own' UUID - refute it
-    ok 7 - S3 sees S1 as left
-    ok 8 - S2 does not see S1 at all
-    ok 9 - after more time S1 is dropped from S3
-    ok 10 - and still is not added to S2 - left members can not be added
-ok 13 - subtests
-	*** swim_test_quit: done ***
-	*** swim_test_uri_update ***
-    1..2
-    ok 1 - S1 updated its URI and S2 sees that
-    ok 2 - S2 still keeps new S1's URI, even received the old one from S3
-ok 14 - subtests
-	*** swim_test_uri_update: done ***
-	*** swim_test_broadcast ***
-    1..6
-    ok 1 - S1 chooses to broadcast with port 2
-    ok 2 - S2 receives the broadcast from S1
-    ok 3 - others don't
-    ok 4 - S1 broadcasts ping without port
-    ok 5 - now everyone sees S1
-    ok 6 - fullmesh is reached, and no one link was added explicitly
-ok 15 - subtests
-	*** swim_test_broadcast: done ***
-	*** swim_test_payload_basic ***
-    1..11
-    ok 1 - no payload by default
-    ok 2 - can not set too big payload
-    ok 3 - diag says too big
-    ok 4 - payload is set
-    ok 5 - version is incremented on each payload update
-    ok 6 - payload is successfully obtained back
-    ok 7 - payload is disseminated
-    ok 8 - payload is changed
-    ok 9 - version is incremented on each payload update
-    ok 10 - second payload is disseminated
-    ok 11 - third payload is disseminated via anti-entropy
-ok 16 - subtests
-	*** swim_test_payload_basic: done ***
-	*** swim_test_indirect_ping ***
-    1..2
-    ok 1 - S1 is still alive everywhere
-    ok 2 - as well as S2 - they communicated via S3
-ok 17 - subtests
-	*** swim_test_indirect_ping: done ***
-	*** swim_test_encryption ***
-    1..3
-    ok 1 - cluster works with encryption
-    ok 2 - different encryption keys - can't interact
-    ok 3 - cluster works after encryption has been disabled
-ok 18 - subtests
-	*** swim_test_encryption: done ***
-	*** swim_test_slow_net ***
-    1..0
-    # slow network leads to idle round steps, they should not produce a new message
-ok 19 - subtests
-	*** swim_test_slow_net: done ***
-	*** swim_test_triggers ***
-    1..20
-    ok 1 - trigger is fired
-    ok 2 - is not deleted
-    ok 3 - ctx.member is set
-    ok 4 - ctx.events is set
-    ok 5 - self payload is updated
-    ok 6 - self is set as a member
-    ok 7 - both version and payload events are presented
-    ok 8 - suspicion fired a trigger
-    ok 9 - status suspected
-    ok 10 - death fired a trigger
-    ok 11 - status dead
-    ok 12 - drop fired a trigger
-    ok 13 - status dropped
-    ok 14 - dropped member is not presented in the member table
-    ok 15 - but is in the event context
-    ok 16 - yielding trigger is fired
-    ok 17 - non-yielding still is not
-    ok 18 - trigger is not deleted until all currently sleeping triggers are finished
-    # now all the triggers are done and deleted
-    ok 19 - local URI update warns about version update
-    ok 20 - version is a part of incarnation, so the latter is updated too
-ok 20 - subtests
-	*** swim_test_triggers: done ***
-	*** swim_test_generation ***
-    1..3
-    ok 1 - S1 disseminated its payload to S2
-    ok 2 - S1 restarted and set another payload. Without generation it could lead to never disseminated new payload.
-    ok 3 - S2 sees new generation of S1
-ok 21 - subtests
-	*** swim_test_generation: done ***
-	*** swim_test_dissemination_speed ***
-    1..2
-    ok 1 - dissemination work in log time even at the very start of a cluster
-    ok 2 - dissemination can withstand an event storm
-ok 22 - subtests
-	*** swim_test_dissemination_speed: done ***
-	*** swim_test_suspect_new_members ***
-    1..2
-    ok 1 - S2 dropped S1 as dead
-    ok 2 - S3 didn't add S1 from S2's messages, because S1 didn't answer on a ping
-ok 23 - subtests
-	*** swim_test_suspect_new_members: done ***
-	*** main_f: done ***
diff --git a/test/unit/swim_errinj.result b/test/unit/swim_errinj.result
deleted file mode 100644
index c60389d7f..000000000
--- a/test/unit/swim_errinj.result
+++ /dev/null
@@ -1,18 +0,0 @@
-	*** main_f ***
-1..1
-	*** swim_test_payload_refutation ***
-    1..11
-    ok 1 - S2 sees new version of S1
-    ok 2 - S3 does the same
-    ok 3 - but S2 does not known the new payload
-    ok 4 - as well as S3
-    ok 5 - S2 learned S1's payload via anti-entropy
-    ok 6 - version still is the same
-    ok 7 - S3 was blocked and does not know anything
-    ok 8 - version still is the same
-    ok 9 - S2 keeps the same new S1's payload, S3 did not rewrite it
-    ok 10 - S3 still does not know anything
-    ok 11 - S3 learns S1's payload from S2
-ok 1 - subtests
-	*** swim_test_payload_refutation: done ***
-	*** main_f: done ***
diff --git a/test/unit/swim_proto.result b/test/unit/swim_proto.result
deleted file mode 100644
index 8a41a5d40..000000000
--- a/test/unit/swim_proto.result
+++ /dev/null
@@ -1,40 +0,0 @@
-	*** main ***
-1..3
-	*** swim_test_member_def ***
-    1..12
-    ok 1 - not map header
-    ok 2 - not uint member key
-    ok 3 - too big member key
-    ok 4 - STATUS is not uint
-    ok 5 - invalid STATUS
-    ok 6 - invalid address
-    ok 7 - bad port
-    ok 8 - unexpected buffer end
-    ok 9 - unexpected buffer end
-    ok 10 - uuid is nil/undefined
-    ok 11 - port is 0/undefined
-    ok 12 - normal member def
-ok 1 - subtests
-	*** swim_test_member_def: done ***
-	*** swim_test_meta ***
-    1..8
-    ok 1 - not map header
-    ok 2 - not uint meta key
-    ok 3 - unknown meta key
-    ok 4 - unexpected end
-    ok 5 - invalid version
-    ok 6 - port is 0/undefined
-    ok 7 - version is 0/undefined
-    ok 8 - normal meta
-ok 2 - subtests
-	*** swim_test_meta: done ***
-	*** swim_test_route ***
-    1..5
-    ok 1 - route was expected, but map is too short
-    ok 2 - no route map
-    ok 3 - empty route map
-    ok 4 - zero addresses
-    ok 5 - normal route
-ok 3 - subtests
-	*** swim_test_route: done ***
-	*** main: done ***
diff --git a/test/unit/tuple_bigref.result b/test/unit/tuple_bigref.result
deleted file mode 100644
index 6e3f0cfa4..000000000
--- a/test/unit/tuple_bigref.result
+++ /dev/null
@@ -1,17 +0,0 @@
-	*** main ***
-1..2
-	*** test_bigrefs_overall ***
-    1..3
-    ok 1 - All tuples have refs == 1.
-    ok 2 - All tuples have bigrefs.
-    ok 3 - All tuples were deleted.
-	*** test_bigrefs_overall: done ***
-ok 1 - subtests
-	*** test_bigrefs_non_consistent ***
-    1..3
-    ok 1 - All tuples have bigrefs.
-    ok 2 - 11 tuples don't have bigrefs and all other tuples have
-    ok 3 - All tuples have bigrefs and their indexes are in right order.
-	*** test_bigrefs_non_consistent: done ***
-ok 2 - subtests
-	*** main: done ***
diff --git a/test/unit/uri.result b/test/unit/uri.result
deleted file mode 100644
index 804560b69..000000000
--- a/test/unit/uri.result
+++ /dev/null
@@ -1,1307 +0,0 @@
-1..63
-    1..19
-    ok 1 - host: parse
-    ok 2 - host: scheme
-    ok 3 - host: login
-    ok 4 - host: password
-    ok 5 - host: host
-    ok 6 - host: service
-    ok 7 - host: path
-    ok 8 - host: query
-    ok 9 - host: fragment
-    ok 10 - host: host_hint
-    ok 11 - host: parse
-    ok 12 - host: scheme
-    ok 13 - host: login
-    ok 14 - host: password
-    ok 15 - host: host
-    ok 16 - host: service
-    ok 17 - host: path
-    ok 18 - host: query
-    ok 19 - host: fragment
-ok 1 - subtests
-    1..19
-    ok 1 - host/: parse
-    ok 2 - host/: scheme
-    ok 3 - host/: login
-    ok 4 - host/: password
-    ok 5 - host/: host
-    ok 6 - host/: service
-    ok 7 - host/: path
-    ok 8 - host/: query
-    ok 9 - host/: fragment
-    ok 10 - host/: host_hint
-    ok 11 - host/: parse
-    ok 12 - host/: scheme
-    ok 13 - host/: login
-    ok 14 - host/: password
-    ok 15 - host/: host
-    ok 16 - host/: service
-    ok 17 - host/: path
-    ok 18 - host/: query
-    ok 19 - host/: fragment
-ok 2 - subtests
-    1..19
-    ok 1 - host/path1/path2/path3: parse
-    ok 2 - host/path1/path2/path3: scheme
-    ok 3 - host/path1/path2/path3: login
-    ok 4 - host/path1/path2/path3: password
-    ok 5 - host/path1/path2/path3: host
-    ok 6 - host/path1/path2/path3: service
-    ok 7 - host/path1/path2/path3: path
-    ok 8 - host/path1/path2/path3: query
-    ok 9 - host/path1/path2/path3: fragment
-    ok 10 - host/path1/path2/path3: host_hint
-    ok 11 - host/path1/path2/path3: parse
-    ok 12 - host/path1/path2/path3: scheme
-    ok 13 - host/path1/path2/path3: login
-    ok 14 - host/path1/path2/path3: password
-    ok 15 - host/path1/path2/path3: host
-    ok 16 - host/path1/path2/path3: service
-    ok 17 - host/path1/path2/path3: path
-    ok 18 - host/path1/path2/path3: query
-    ok 19 - host/path1/path2/path3: fragment
-ok 3 - subtests
-    1..19
-    ok 1 - host/path1/path2/path3?q1=v1&q2=v2#fragment: parse
-    ok 2 - host/path1/path2/path3?q1=v1&q2=v2#fragment: scheme
-    ok 3 - host/path1/path2/path3?q1=v1&q2=v2#fragment: login
-    ok 4 - host/path1/path2/path3?q1=v1&q2=v2#fragment: password
-    ok 5 - host/path1/path2/path3?q1=v1&q2=v2#fragment: host
-    ok 6 - host/path1/path2/path3?q1=v1&q2=v2#fragment: service
-    ok 7 - host/path1/path2/path3?q1=v1&q2=v2#fragment: path
-    ok 8 - host/path1/path2/path3?q1=v1&q2=v2#fragment: query
-    ok 9 - host/path1/path2/path3?q1=v1&q2=v2#fragment: fragment
-    ok 10 - host/path1/path2/path3?q1=v1&q2=v2#fragment: host_hint
-    ok 11 - host/path1/path2/path3?q1=v1&q2=v2#fragment: parse
-    ok 12 - host/path1/path2/path3?q1=v1&q2=v2#fragment: scheme
-    ok 13 - host/path1/path2/path3?q1=v1&q2=v2#fragment: login
-    ok 14 - host/path1/path2/path3?q1=v1&q2=v2#fragment: password
-    ok 15 - host/path1/path2/path3?q1=v1&q2=v2#fragment: host
-    ok 16 - host/path1/path2/path3?q1=v1&q2=v2#fragment: service
-    ok 17 - host/path1/path2/path3?q1=v1&q2=v2#fragment: path
-    ok 18 - host/path1/path2/path3?q1=v1&q2=v2#fragment: query
-    ok 19 - host/path1/path2/path3?q1=v1&q2=v2#fragment: fragment
-ok 4 - subtests
-    1..19
-    ok 1 - host:service: parse
-    ok 2 - host:service: scheme
-    ok 3 - host:service: login
-    ok 4 - host:service: password
-    ok 5 - host:service: host
-    ok 6 - host:service: service
-    ok 7 - host:service: path
-    ok 8 - host:service: query
-    ok 9 - host:service: fragment
-    ok 10 - host:service: host_hint
-    ok 11 - host:service: parse
-    ok 12 - host:service: scheme
-    ok 13 - host:service: login
-    ok 14 - host:service: password
-    ok 15 - host:service: host
-    ok 16 - host:service: service
-    ok 17 - host:service: path
-    ok 18 - host:service: query
-    ok 19 - host:service: fragment
-ok 5 - subtests
-    1..19
-    ok 1 - host:service/: parse
-    ok 2 - host:service/: scheme
-    ok 3 - host:service/: login
-    ok 4 - host:service/: password
-    ok 5 - host:service/: host
-    ok 6 - host:service/: service
-    ok 7 - host:service/: path
-    ok 8 - host:service/: query
-    ok 9 - host:service/: fragment
-    ok 10 - host:service/: host_hint
-    ok 11 - host:service/: parse
-    ok 12 - host:service/: scheme
-    ok 13 - host:service/: login
-    ok 14 - host:service/: password
-    ok 15 - host:service/: host
-    ok 16 - host:service/: service
-    ok 17 - host:service/: path
-    ok 18 - host:service/: query
-    ok 19 - host:service/: fragment
-ok 6 - subtests
-    1..19
-    ok 1 - host:service/path1/path2/path3: parse
-    ok 2 - host:service/path1/path2/path3: scheme
-    ok 3 - host:service/path1/path2/path3: login
-    ok 4 - host:service/path1/path2/path3: password
-    ok 5 - host:service/path1/path2/path3: host
-    ok 6 - host:service/path1/path2/path3: service
-    ok 7 - host:service/path1/path2/path3: path
-    ok 8 - host:service/path1/path2/path3: query
-    ok 9 - host:service/path1/path2/path3: fragment
-    ok 10 - host:service/path1/path2/path3: host_hint
-    ok 11 - host:service/path1/path2/path3: parse
-    ok 12 - host:service/path1/path2/path3: scheme
-    ok 13 - host:service/path1/path2/path3: login
-    ok 14 - host:service/path1/path2/path3: password
-    ok 15 - host:service/path1/path2/path3: host
-    ok 16 - host:service/path1/path2/path3: service
-    ok 17 - host:service/path1/path2/path3: path
-    ok 18 - host:service/path1/path2/path3: query
-    ok 19 - host:service/path1/path2/path3: fragment
-ok 7 - subtests
-    1..19
-    ok 1 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: parse
-    ok 2 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: scheme
-    ok 3 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: login
-    ok 4 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: password
-    ok 5 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: host
-    ok 6 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: service
-    ok 7 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: path
-    ok 8 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: query
-    ok 9 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: fragment
-    ok 10 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: host_hint
-    ok 11 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: parse
-    ok 12 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: scheme
-    ok 13 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: login
-    ok 14 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: password
-    ok 15 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: host
-    ok 16 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: service
-    ok 17 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: path
-    ok 18 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: query
-    ok 19 - host:service/path1/path2/path3?q1=v1&q2=v2#fragment: fragment
-ok 8 - subtests
-    1..19
-    ok 1 - login at host: parse
-    ok 2 - login at host: scheme
-    ok 3 - login at host: login
-    ok 4 - login at host: password
-    ok 5 - login at host: host
-    ok 6 - login at host: service
-    ok 7 - login at host: path
-    ok 8 - login at host: query
-    ok 9 - login at host: fragment
-    ok 10 - login at host: host_hint
-    ok 11 - login at host: parse
-    ok 12 - login at host: scheme
-    ok 13 - login at host: login
-    ok 14 - login at host: password
-    ok 15 - login at host: host
-    ok 16 - login at host: service
-    ok 17 - login at host: path
-    ok 18 - login at host: query
-    ok 19 - login at host: fragment
-ok 9 - subtests
-    1..19
-    ok 1 - login at host/: parse
-    ok 2 - login at host/: scheme
-    ok 3 - login at host/: login
-    ok 4 - login at host/: password
-    ok 5 - login at host/: host
-    ok 6 - login at host/: service
-    ok 7 - login at host/: path
-    ok 8 - login at host/: query
-    ok 9 - login at host/: fragment
-    ok 10 - login at host/: host_hint
-    ok 11 - login at host/: parse
-    ok 12 - login at host/: scheme
-    ok 13 - login at host/: login
-    ok 14 - login at host/: password
-    ok 15 - login at host/: host
-    ok 16 - login at host/: service
-    ok 17 - login at host/: path
-    ok 18 - login at host/: query
-    ok 19 - login at host/: fragment
-ok 10 - subtests
-    1..19
-    ok 1 - login at host/path1/path2/path3: parse
-    ok 2 - login at host/path1/path2/path3: scheme
-    ok 3 - login at host/path1/path2/path3: login
-    ok 4 - login at host/path1/path2/path3: password
-    ok 5 - login at host/path1/path2/path3: host
-    ok 6 - login at host/path1/path2/path3: service
-    ok 7 - login at host/path1/path2/path3: path
-    ok 8 - login at host/path1/path2/path3: query
-    ok 9 - login at host/path1/path2/path3: fragment
-    ok 10 - login at host/path1/path2/path3: host_hint
-    ok 11 - login at host/path1/path2/path3: parse
-    ok 12 - login at host/path1/path2/path3: scheme
-    ok 13 - login at host/path1/path2/path3: login
-    ok 14 - login at host/path1/path2/path3: password
-    ok 15 - login at host/path1/path2/path3: host
-    ok 16 - login at host/path1/path2/path3: service
-    ok 17 - login at host/path1/path2/path3: path
-    ok 18 - login at host/path1/path2/path3: query
-    ok 19 - login at host/path1/path2/path3: fragment
-ok 11 - subtests
-    1..19
-    ok 1 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: parse
-    ok 2 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: scheme
-    ok 3 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: login
-    ok 4 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: password
-    ok 5 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: host
-    ok 6 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: service
-    ok 7 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: path
-    ok 8 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: query
-    ok 9 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: fragment
-    ok 10 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: host_hint
-    ok 11 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: parse
-    ok 12 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: scheme
-    ok 13 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: login
-    ok 14 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: password
-    ok 15 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: host
-    ok 16 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: service
-    ok 17 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: path
-    ok 18 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: query
-    ok 19 - login at host/path1/path2/path3?q1=v1&q2=v2#fragment: fragment
-ok 12 - subtests
-    1..19
-    ok 1 - login:password at host: parse
-    ok 2 - login:password at host: scheme
-    ok 3 - login:password at host: login
-    ok 4 - login:password at host: password
-    ok 5 - login:password at host: host
-    ok 6 - login:password at host: service
-    ok 7 - login:password at host: path
-    ok 8 - login:password at host: query
-    ok 9 - login:password at host: fragment
-    ok 10 - login:password at host: host_hint
-    ok 11 - login:password at host: parse
-    ok 12 - login:password at host: scheme
-    ok 13 - login:password at host: login
-    ok 14 - login:password at host: password
-    ok 15 - login:password at host: host
-    ok 16 - login:password at host: service
-    ok 17 - login:password at host: path
-    ok 18 - login:password at host: query
-    ok 19 - login:password at host: fragment
-ok 13 - subtests
-    1..19
-    ok 1 - login:@host: parse
-    ok 2 - login:@host: scheme
-    ok 3 - login:@host: login
-    ok 4 - login:@host: password
-    ok 5 - login:@host: host
-    ok 6 - login:@host: service
-    ok 7 - login:@host: path
-    ok 8 - login:@host: query
-    ok 9 - login:@host: fragment
-    ok 10 - login:@host: host_hint
-    ok 11 - login:@host: parse
-    ok 12 - login:@host: scheme
-    ok 13 - login:@host: login
-    ok 14 - login:@host: password
-    ok 15 - login:@host: host
-    ok 16 - login:@host: service
-    ok 17 - login:@host: path
-    ok 18 - login:@host: query
-    ok 19 - login:@host: fragment
-ok 14 - subtests
-    1..19
-    ok 1 - login:password at host/: parse
-    ok 2 - login:password at host/: scheme
-    ok 3 - login:password at host/: login
-    ok 4 - login:password at host/: password
-    ok 5 - login:password at host/: host
-    ok 6 - login:password at host/: service
-    ok 7 - login:password at host/: path
-    ok 8 - login:password at host/: query
-    ok 9 - login:password at host/: fragment
-    ok 10 - login:password at host/: host_hint
-    ok 11 - login:password at host/: parse
-    ok 12 - login:password at host/: scheme
-    ok 13 - login:password at host/: login
-    ok 14 - login:password at host/: password
-    ok 15 - login:password at host/: host
-    ok 16 - login:password at host/: service
-    ok 17 - login:password at host/: path
-    ok 18 - login:password at host/: query
-    ok 19 - login:password at host/: fragment
-ok 15 - subtests
-    1..19
-    ok 1 - login:password at host/path1/path2/path3: parse
-    ok 2 - login:password at host/path1/path2/path3: scheme
-    ok 3 - login:password at host/path1/path2/path3: login
-    ok 4 - login:password at host/path1/path2/path3: password
-    ok 5 - login:password at host/path1/path2/path3: host
-    ok 6 - login:password at host/path1/path2/path3: service
-    ok 7 - login:password at host/path1/path2/path3: path
-    ok 8 - login:password at host/path1/path2/path3: query
-    ok 9 - login:password at host/path1/path2/path3: fragment
-    ok 10 - login:password at host/path1/path2/path3: host_hint
-    ok 11 - login:password at host/path1/path2/path3: parse
-    ok 12 - login:password at host/path1/path2/path3: scheme
-    ok 13 - login:password at host/path1/path2/path3: login
-    ok 14 - login:password at host/path1/path2/path3: password
-    ok 15 - login:password at host/path1/path2/path3: host
-    ok 16 - login:password at host/path1/path2/path3: service
-    ok 17 - login:password at host/path1/path2/path3: path
-    ok 18 - login:password at host/path1/path2/path3: query
-    ok 19 - login:password at host/path1/path2/path3: fragment
-ok 16 - subtests
-    1..19
-    ok 1 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: parse
-    ok 2 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: scheme
-    ok 3 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: login
-    ok 4 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: password
-    ok 5 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: host
-    ok 6 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: service
-    ok 7 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: path
-    ok 8 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: query
-    ok 9 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: fragment
-    ok 10 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: host_hint
-    ok 11 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: parse
-    ok 12 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: scheme
-    ok 13 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: login
-    ok 14 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: password
-    ok 15 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: host
-    ok 16 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: service
-    ok 17 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: path
-    ok 18 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: query
-    ok 19 - login:password at host/path1/path2/path3?q1=v1&q2=v2#fragment: fragment
-ok 17 - subtests
-    1..19
-    ok 1 - login:password at host:service: parse
-    ok 2 - login:password at host:service: scheme
-    ok 3 - login:password at host:service: login
-    ok 4 - login:password at host:service: password
-    ok 5 - login:password at host:service: host
-    ok 6 - login:password at host:service: service
-    ok 7 - login:password at host:service: path
-    ok 8 - login:password at host:service: query
-    ok 9 - login:password at host:service: fragment
-    ok 10 - login:password at host:service: host_hint
-    ok 11 - login:password at host:service: parse
-    ok 12 - login:password at host:service: scheme
-    ok 13 - login:password at host:service: login
-    ok 14 - login:password at host:service: password
-    ok 15 - login:password at host:service: host
-    ok 16 - login:password at host:service: service
-    ok 17 - login:password at host:service: path
-    ok 18 - login:password at host:service: query
-    ok 19 - login:password at host:service: fragment
-ok 18 - subtests
-    1..19
-    ok 1 - login:password at host:service/: parse
-    ok 2 - login:password at host:service/: scheme
-    ok 3 - login:password at host:service/: login
-    ok 4 - login:password at host:service/: password
-    ok 5 - login:password at host:service/: host
-    ok 6 - login:password at host:service/: service
-    ok 7 - login:password at host:service/: path
-    ok 8 - login:password at host:service/: query
-    ok 9 - login:password at host:service/: fragment
-    ok 10 - login:password at host:service/: host_hint
-    ok 11 - login:password at host:service/: parse
-    ok 12 - login:password at host:service/: scheme
-    ok 13 - login:password at host:service/: login
-    ok 14 - login:password at host:service/: password
-    ok 15 - login:password at host:service/: host
-    ok 16 - login:password at host:service/: service
-    ok 17 - login:password at host:service/: path
-    ok 18 - login:password at host:service/: query
-    ok 19 - login:password at host:service/: fragment
-ok 19 - subtests
-    1..19
-    ok 1 - login:password at host:service/path1/path2/path3: parse
-    ok 2 - login:password at host:service/path1/path2/path3: scheme
-    ok 3 - login:password at host:service/path1/path2/path3: login
-    ok 4 - login:password at host:service/path1/path2/path3: password
-    ok 5 - login:password at host:service/path1/path2/path3: host
-    ok 6 - login:password at host:service/path1/path2/path3: service
-    ok 7 - login:password at host:service/path1/path2/path3: path
-    ok 8 - login:password at host:service/path1/path2/path3: query
-    ok 9 - login:password at host:service/path1/path2/path3: fragment
-    ok 10 - login:password at host:service/path1/path2/path3: host_hint
-    ok 11 - login:password at host:service/path1/path2/path3: parse
-    ok 12 - login:password at host:service/path1/path2/path3: scheme
-    ok 13 - login:password at host:service/path1/path2/path3: login
-    ok 14 - login:password at host:service/path1/path2/path3: password
-    ok 15 - login:password at host:service/path1/path2/path3: host
-    ok 16 - login:password at host:service/path1/path2/path3: service
-    ok 17 - login:password at host:service/path1/path2/path3: path
-    ok 18 - login:password at host:service/path1/path2/path3: query
-    ok 19 - login:password at host:service/path1/path2/path3: fragment
-ok 20 - subtests
-    1..19
-    ok 1 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: parse
-    ok 2 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: scheme
-    ok 3 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: login
-    ok 4 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: password
-    ok 5 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: host
-    ok 6 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: service
-    ok 7 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: path
-    ok 8 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: query
-    ok 9 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: fragment
-    ok 10 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: host_hint
-    ok 11 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: parse
-    ok 12 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: scheme
-    ok 13 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: login
-    ok 14 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: password
-    ok 15 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: host
-    ok 16 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: service
-    ok 17 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: path
-    ok 18 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: query
-    ok 19 - login:password at host:service/path1/path2/path3?q1=v1&q2=v2#fragment: fragment
-ok 21 - subtests
-    1..19
-    ok 1 - scheme://login:password@host:service: parse
-    ok 2 - scheme://login:password@host:service: scheme
-    ok 3 - scheme://login:password@host:service: login
-    ok 4 - scheme://login:password@host:service: password
-    ok 5 - scheme://login:password@host:service: host
-    ok 6 - scheme://login:password@host:service: service
-    ok 7 - scheme://login:password@host:service: path
-    ok 8 - scheme://login:password@host:service: query
-    ok 9 - scheme://login:password@host:service: fragment
-    ok 10 - scheme://login:password@host:service: host_hint
-    ok 11 - scheme://login:password@host:service: parse
-    ok 12 - scheme://login:password@host:service: scheme
-    ok 13 - scheme://login:password@host:service: login
-    ok 14 - scheme://login:password@host:service: password
-    ok 15 - scheme://login:password@host:service: host
-    ok 16 - scheme://login:password@host:service: service
-    ok 17 - scheme://login:password@host:service: path
-    ok 18 - scheme://login:password@host:service: query
-    ok 19 - scheme://login:password@host:service: fragment
-ok 22 - subtests
-    1..19
-    ok 1 - scheme://login:password@host:service/: parse
-    ok 2 - scheme://login:password@host:service/: scheme
-    ok 3 - scheme://login:password@host:service/: login
-    ok 4 - scheme://login:password@host:service/: password
-    ok 5 - scheme://login:password@host:service/: host
-    ok 6 - scheme://login:password@host:service/: service
-    ok 7 - scheme://login:password@host:service/: path
-    ok 8 - scheme://login:password@host:service/: query
-    ok 9 - scheme://login:password@host:service/: fragment
-    ok 10 - scheme://login:password@host:service/: host_hint
-    ok 11 - scheme://login:password@host:service/: parse
-    ok 12 - scheme://login:password@host:service/: scheme
-    ok 13 - scheme://login:password@host:service/: login
-    ok 14 - scheme://login:password@host:service/: password
-    ok 15 - scheme://login:password@host:service/: host
-    ok 16 - scheme://login:password@host:service/: service
-    ok 17 - scheme://login:password@host:service/: path
-    ok 18 - scheme://login:password@host:service/: query
-    ok 19 - scheme://login:password@host:service/: fragment
-ok 23 - subtests
-    1..19
-    ok 1 - scheme://login:password@host:service/path1/path2/path3: parse
-    ok 2 - scheme://login:password@host:service/path1/path2/path3: scheme
-    ok 3 - scheme://login:password@host:service/path1/path2/path3: login
-    ok 4 - scheme://login:password@host:service/path1/path2/path3: password
-    ok 5 - scheme://login:password@host:service/path1/path2/path3: host
-    ok 6 - scheme://login:password@host:service/path1/path2/path3: service
-    ok 7 - scheme://login:password@host:service/path1/path2/path3: path
-    ok 8 - scheme://login:password@host:service/path1/path2/path3: query
-    ok 9 - scheme://login:password@host:service/path1/path2/path3: fragment
-    ok 10 - scheme://login:password@host:service/path1/path2/path3: host_hint
-    ok 11 - scheme://login:password@host:service/path1/path2/path3: parse
-    ok 12 - scheme://login:password@host:service/path1/path2/path3: scheme
-    ok 13 - scheme://login:password@host:service/path1/path2/path3: login
-    ok 14 - scheme://login:password@host:service/path1/path2/path3: password
-    ok 15 - scheme://login:password@host:service/path1/path2/path3: host
-    ok 16 - scheme://login:password@host:service/path1/path2/path3: service
-    ok 17 - scheme://login:password@host:service/path1/path2/path3: path
-    ok 18 - scheme://login:password@host:service/path1/path2/path3: query
-    ok 19 - scheme://login:password@host:service/path1/path2/path3: fragment
-ok 24 - subtests
-    1..19
-    ok 1 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: parse
-    ok 2 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: scheme
-    ok 3 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: login
-    ok 4 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: password
-    ok 5 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: host
-    ok 6 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: service
-    ok 7 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: path
-    ok 8 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: query
-    ok 9 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: fragment
-    ok 10 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: host_hint
-    ok 11 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: parse
-    ok 12 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: scheme
-    ok 13 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: login
-    ok 14 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: password
-    ok 15 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: host
-    ok 16 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: service
-    ok 17 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: path
-    ok 18 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: query
-    ok 19 - scheme://login:password@host:service/path1/path2/path3?q1=v1&q2=v2#fragment: fragment
-ok 25 - subtests
-    1..19
-    ok 1 - host/path: parse
-    ok 2 - host/path: scheme
-    ok 3 - host/path: login
-    ok 4 - host/path: password
-    ok 5 - host/path: host
-    ok 6 - host/path: service
-    ok 7 - host/path: path
-    ok 8 - host/path: query
-    ok 9 - host/path: fragment
-    ok 10 - host/path: host_hint
-    ok 11 - host/path: parse
-    ok 12 - host/path: scheme
-    ok 13 - host/path: login
-    ok 14 - host/path: password
-    ok 15 - host/path: host
-    ok 16 - host/path: service
-    ok 17 - host/path: path
-    ok 18 - host/path: query
-    ok 19 - host/path: fragment
-ok 26 - subtests
-    1..19
-    ok 1 - host//: parse
-    ok 2 - host//: scheme
-    ok 3 - host//: login
-    ok 4 - host//: password
-    ok 5 - host//: host
-    ok 6 - host//: service
-    ok 7 - host//: path
-    ok 8 - host//: query
-    ok 9 - host//: fragment
-    ok 10 - host//: host_hint
-    ok 11 - host//: parse
-    ok 12 - host//: scheme
-    ok 13 - host//: login
-    ok 14 - host//: password
-    ok 15 - host//: host
-    ok 16 - host//: service
-    ok 17 - host//: path
-    ok 18 - host//: query
-    ok 19 - host//: fragment
-ok 27 - subtests
-    1..19
-    ok 1 - host//path: parse
-    ok 2 - host//path: scheme
-    ok 3 - host//path: login
-    ok 4 - host//path: password
-    ok 5 - host//path: host
-    ok 6 - host//path: service
-    ok 7 - host//path: path
-    ok 8 - host//path: query
-    ok 9 - host//path: fragment
-    ok 10 - host//path: host_hint
-    ok 11 - host//path: parse
-    ok 12 - host//path: scheme
-    ok 13 - host//path: login
-    ok 14 - host//path: password
-    ok 15 - host//path: host
-    ok 16 - host//path: service
-    ok 17 - host//path: path
-    ok 18 - host//path: query
-    ok 19 - host//path: fragment
-ok 28 - subtests
-    1..19
-    ok 1 - host/;abc?q: parse
-    ok 2 - host/;abc?q: scheme
-    ok 3 - host/;abc?q: login
-    ok 4 - host/;abc?q: password
-    ok 5 - host/;abc?q: host
-    ok 6 - host/;abc?q: service
-    ok 7 - host/;abc?q: path
-    ok 8 - host/;abc?q: query
-    ok 9 - host/;abc?q: fragment
-    ok 10 - host/;abc?q: host_hint
-    ok 11 - host/;abc?q: parse
-    ok 12 - host/;abc?q: scheme
-    ok 13 - host/;abc?q: login
-    ok 14 - host/;abc?q: password
-    ok 15 - host/;abc?q: host
-    ok 16 - host/;abc?q: service
-    ok 17 - host/;abc?q: path
-    ok 18 - host/;abc?q: query
-    ok 19 - host/;abc?q: fragment
-ok 29 - subtests
-    1..19
-    ok 1 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: parse
-    ok 2 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: scheme
-    ok 3 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: login
-    ok 4 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: password
-    ok 5 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: host
-    ok 6 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: service
-    ok 7 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: path
-    ok 8 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: query
-    ok 9 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: fragment
-    ok 10 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: host_hint
-    ok 11 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: parse
-    ok 12 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: scheme
-    ok 13 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: login
-    ok 14 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: password
-    ok 15 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: host
-    ok 16 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: service
-    ok 17 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: path
-    ok 18 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: query
-    ok 19 - scheme://login:password@host:service/@path1/:path2?q1=v1&q2=v2#fragment: fragment
-ok 30 - subtests
-    1..19
-    ok 1 - host/~user: parse
-    ok 2 - host/~user: scheme
-    ok 3 - host/~user: login
-    ok 4 - host/~user: password
-    ok 5 - host/~user: host
-    ok 6 - host/~user: service
-    ok 7 - host/~user: path
-    ok 8 - host/~user: query
-    ok 9 - host/~user: fragment
-    ok 10 - host/~user: host_hint
-    ok 11 - host/~user: parse
-    ok 12 - host/~user: scheme
-    ok 13 - host/~user: login
-    ok 14 - host/~user: password
-    ok 15 - host/~user: host
-    ok 16 - host/~user: service
-    ok 17 - host/~user: path
-    ok 18 - host/~user: query
-    ok 19 - host/~user: fragment
-ok 31 - subtests
-    1..19
-    ok 1 - try.tarantool.org: parse
-    ok 2 - try.tarantool.org: scheme
-    ok 3 - try.tarantool.org: login
-    ok 4 - try.tarantool.org: password
-    ok 5 - try.tarantool.org: host
-    ok 6 - try.tarantool.org: service
-    ok 7 - try.tarantool.org: path
-    ok 8 - try.tarantool.org: query
-    ok 9 - try.tarantool.org: fragment
-    ok 10 - try.tarantool.org: host_hint
-    ok 11 - try.tarantool.org: parse
-    ok 12 - try.tarantool.org: scheme
-    ok 13 - try.tarantool.org: login
-    ok 14 - try.tarantool.org: password
-    ok 15 - try.tarantool.org: host
-    ok 16 - try.tarantool.org: service
-    ok 17 - try.tarantool.org: path
-    ok 18 - try.tarantool.org: query
-    ok 19 - try.tarantool.org: fragment
-ok 32 - subtests
-    1..19
-    ok 1 - try.tarantool.org: parse
-    ok 2 - try.tarantool.org: scheme
-    ok 3 - try.tarantool.org: login
-    ok 4 - try.tarantool.org: password
-    ok 5 - try.tarantool.org: host
-    ok 6 - try.tarantool.org: service
-    ok 7 - try.tarantool.org: path
-    ok 8 - try.tarantool.org: query
-    ok 9 - try.tarantool.org: fragment
-    ok 10 - try.tarantool.org: host_hint
-    ok 11 - try.tarantool.org: parse
-    ok 12 - try.tarantool.org: scheme
-    ok 13 - try.tarantool.org: login
-    ok 14 - try.tarantool.org: password
-    ok 15 - try.tarantool.org: host
-    ok 16 - try.tarantool.org: service
-    ok 17 - try.tarantool.org: path
-    ok 18 - try.tarantool.org: query
-    ok 19 - try.tarantool.org: fragment
-ok 33 - subtests
-    1..19
-    ok 1 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: parse
-    ok 2 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: scheme
-    ok 3 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: login
-    ok 4 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: password
-    ok 5 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: host
-    ok 6 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: service
-    ok 7 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: path
-    ok 8 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: query
-    ok 9 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: fragment
-    ok 10 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: host_hint
-    ok 11 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: parse
-    ok 12 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: scheme
-    ok 13 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: login
-    ok 14 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: password
-    ok 15 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: host
-    ok 16 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: service
-    ok 17 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: path
-    ok 18 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: query
-    ok 19 - www.llanfairpwllgwyngyllgogerychwyrndrobwyll-llantysiliogogogoch.com: fragment
-ok 34 - subtests
-    1..19
-    ok 1 - 0.0.0.0: parse
-    ok 2 - 0.0.0.0: scheme
-    ok 3 - 0.0.0.0: login
-    ok 4 - 0.0.0.0: password
-    ok 5 - 0.0.0.0: host
-    ok 6 - 0.0.0.0: service
-    ok 7 - 0.0.0.0: path
-    ok 8 - 0.0.0.0: query
-    ok 9 - 0.0.0.0: fragment
-    ok 10 - 0.0.0.0: host_hint
-    ok 11 - 0.0.0.0: parse
-    ok 12 - 0.0.0.0: scheme
-    ok 13 - 0.0.0.0: login
-    ok 14 - 0.0.0.0: password
-    ok 15 - 0.0.0.0: host
-    ok 16 - 0.0.0.0: service
-    ok 17 - 0.0.0.0: path
-    ok 18 - 0.0.0.0: query
-    ok 19 - 0.0.0.0: fragment
-ok 35 - subtests
-    1..19
-    ok 1 - 127.0.0.1: parse
-    ok 2 - 127.0.0.1: scheme
-    ok 3 - 127.0.0.1: login
-    ok 4 - 127.0.0.1: password
-    ok 5 - 127.0.0.1: host
-    ok 6 - 127.0.0.1: service
-    ok 7 - 127.0.0.1: path
-    ok 8 - 127.0.0.1: query
-    ok 9 - 127.0.0.1: fragment
-    ok 10 - 127.0.0.1: host_hint
-    ok 11 - 127.0.0.1: parse
-    ok 12 - 127.0.0.1: scheme
-    ok 13 - 127.0.0.1: login
-    ok 14 - 127.0.0.1: password
-    ok 15 - 127.0.0.1: host
-    ok 16 - 127.0.0.1: service
-    ok 17 - 127.0.0.1: path
-    ok 18 - 127.0.0.1: query
-    ok 19 - 127.0.0.1: fragment
-ok 36 - subtests
-    1..19
-    ok 1 - 127.0.0.1:3313: parse
-    ok 2 - 127.0.0.1:3313: scheme
-    ok 3 - 127.0.0.1:3313: login
-    ok 4 - 127.0.0.1:3313: password
-    ok 5 - 127.0.0.1:3313: host
-    ok 6 - 127.0.0.1:3313: service
-    ok 7 - 127.0.0.1:3313: path
-    ok 8 - 127.0.0.1:3313: query
-    ok 9 - 127.0.0.1:3313: fragment
-    ok 10 - 127.0.0.1:3313: host_hint
-    ok 11 - 127.0.0.1:3313: parse
-    ok 12 - 127.0.0.1:3313: scheme
-    ok 13 - 127.0.0.1:3313: login
-    ok 14 - 127.0.0.1:3313: password
-    ok 15 - 127.0.0.1:3313: host
-    ok 16 - 127.0.0.1:3313: service
-    ok 17 - 127.0.0.1:3313: path
-    ok 18 - 127.0.0.1:3313: query
-    ok 19 - 127.0.0.1:3313: fragment
-ok 37 - subtests
-    1..19
-    ok 1 - scheme://login:password@127.0.0.1:3313: parse
-    ok 2 - scheme://login:password@127.0.0.1:3313: scheme
-    ok 3 - scheme://login:password@127.0.0.1:3313: login
-    ok 4 - scheme://login:password@127.0.0.1:3313: password
-    ok 5 - scheme://login:password@127.0.0.1:3313: host
-    ok 6 - scheme://login:password@127.0.0.1:3313: service
-    ok 7 - scheme://login:password@127.0.0.1:3313: path
-    ok 8 - scheme://login:password@127.0.0.1:3313: query
-    ok 9 - scheme://login:password@127.0.0.1:3313: fragment
-    ok 10 - scheme://login:password@127.0.0.1:3313: host_hint
-    ok 11 - scheme://login:password@127.0.0.1:3313: parse
-    ok 12 - scheme://login:password@127.0.0.1:3313: scheme
-    ok 13 - scheme://login:password@127.0.0.1:3313: login
-    ok 14 - scheme://login:password@127.0.0.1:3313: password
-    ok 15 - scheme://login:password@127.0.0.1:3313: host
-    ok 16 - scheme://login:password@127.0.0.1:3313: service
-    ok 17 - scheme://login:password@127.0.0.1:3313: path
-    ok 18 - scheme://login:password@127.0.0.1:3313: query
-    ok 19 - scheme://login:password@127.0.0.1:3313: fragment
-ok 38 - subtests
-    1..19
-    ok 1 - [2001::11a3:09d7::1]: parse
-    ok 2 - [2001::11a3:09d7::1]: scheme
-    ok 3 - [2001::11a3:09d7::1]: login
-    ok 4 - [2001::11a3:09d7::1]: password
-    ok 5 - [2001::11a3:09d7::1]: host
-    ok 6 - [2001::11a3:09d7::1]: service
-    ok 7 - [2001::11a3:09d7::1]: path
-    ok 8 - [2001::11a3:09d7::1]: query
-    ok 9 - [2001::11a3:09d7::1]: fragment
-    ok 10 - [2001::11a3:09d7::1]: host_hint
-    ok 11 - [2001::11a3:09d7::1]: parse
-    ok 12 - [2001::11a3:09d7::1]: scheme
-    ok 13 - [2001::11a3:09d7::1]: login
-    ok 14 - [2001::11a3:09d7::1]: password
-    ok 15 - [2001::11a3:09d7::1]: host
-    ok 16 - [2001::11a3:09d7::1]: service
-    ok 17 - [2001::11a3:09d7::1]: path
-    ok 18 - [2001::11a3:09d7::1]: query
-    ok 19 - [2001::11a3:09d7::1]: fragment
-ok 39 - subtests
-    1..19
-    ok 1 - scheme://login:password@[2001::11a3:09d7::1]:3313: parse
-    ok 2 - scheme://login:password@[2001::11a3:09d7::1]:3313: scheme
-    ok 3 - scheme://login:password@[2001::11a3:09d7::1]:3313: login
-    ok 4 - scheme://login:password@[2001::11a3:09d7::1]:3313: password
-    ok 5 - scheme://login:password@[2001::11a3:09d7::1]:3313: host
-    ok 6 - scheme://login:password@[2001::11a3:09d7::1]:3313: service
-    ok 7 - scheme://login:password@[2001::11a3:09d7::1]:3313: path
-    ok 8 - scheme://login:password@[2001::11a3:09d7::1]:3313: query
-    ok 9 - scheme://login:password@[2001::11a3:09d7::1]:3313: fragment
-    ok 10 - scheme://login:password@[2001::11a3:09d7::1]:3313: host_hint
-    ok 11 - scheme://login:password@[2001::11a3:09d7::1]:3313: parse
-    ok 12 - scheme://login:password@[2001::11a3:09d7::1]:3313: scheme
-    ok 13 - scheme://login:password@[2001::11a3:09d7::1]:3313: login
-    ok 14 - scheme://login:password@[2001::11a3:09d7::1]:3313: password
-    ok 15 - scheme://login:password@[2001::11a3:09d7::1]:3313: host
-    ok 16 - scheme://login:password@[2001::11a3:09d7::1]:3313: service
-    ok 17 - scheme://login:password@[2001::11a3:09d7::1]:3313: path
-    ok 18 - scheme://login:password@[2001::11a3:09d7::1]:3313: query
-    ok 19 - scheme://login:password@[2001::11a3:09d7::1]:3313: fragment
-ok 40 - subtests
-    1..19
-    ok 1 - scheme://[2001:0db8:11a3:09d7::1]: parse
-    ok 2 - scheme://[2001:0db8:11a3:09d7::1]: scheme
-    ok 3 - scheme://[2001:0db8:11a3:09d7::1]: login
-    ok 4 - scheme://[2001:0db8:11a3:09d7::1]: password
-    ok 5 - scheme://[2001:0db8:11a3:09d7::1]: host
-    ok 6 - scheme://[2001:0db8:11a3:09d7::1]: service
-    ok 7 - scheme://[2001:0db8:11a3:09d7::1]: path
-    ok 8 - scheme://[2001:0db8:11a3:09d7::1]: query
-    ok 9 - scheme://[2001:0db8:11a3:09d7::1]: fragment
-    ok 10 - scheme://[2001:0db8:11a3:09d7::1]: host_hint
-    ok 11 - scheme://[2001:0db8:11a3:09d7::1]: parse
-    ok 12 - scheme://[2001:0db8:11a3:09d7::1]: scheme
-    ok 13 - scheme://[2001:0db8:11a3:09d7::1]: login
-    ok 14 - scheme://[2001:0db8:11a3:09d7::1]: password
-    ok 15 - scheme://[2001:0db8:11a3:09d7::1]: host
-    ok 16 - scheme://[2001:0db8:11a3:09d7::1]: service
-    ok 17 - scheme://[2001:0db8:11a3:09d7::1]: path
-    ok 18 - scheme://[2001:0db8:11a3:09d7::1]: query
-    ok 19 - scheme://[2001:0db8:11a3:09d7::1]: fragment
-ok 41 - subtests
-    1..19
-    ok 1 - [::ffff:11.2.3.4]: parse
-    ok 2 - [::ffff:11.2.3.4]: scheme
-    ok 3 - [::ffff:11.2.3.4]: login
-    ok 4 - [::ffff:11.2.3.4]: password
-    ok 5 - [::ffff:11.2.3.4]: host
-    ok 6 - [::ffff:11.2.3.4]: service
-    ok 7 - [::ffff:11.2.3.4]: path
-    ok 8 - [::ffff:11.2.3.4]: query
-    ok 9 - [::ffff:11.2.3.4]: fragment
-    ok 10 - [::ffff:11.2.3.4]: host_hint
-    ok 11 - [::ffff:11.2.3.4]: parse
-    ok 12 - [::ffff:11.2.3.4]: scheme
-    ok 13 - [::ffff:11.2.3.4]: login
-    ok 14 - [::ffff:11.2.3.4]: password
-    ok 15 - [::ffff:11.2.3.4]: host
-    ok 16 - [::ffff:11.2.3.4]: service
-    ok 17 - [::ffff:11.2.3.4]: path
-    ok 18 - [::ffff:11.2.3.4]: query
-    ok 19 - [::ffff:11.2.3.4]: fragment
-ok 42 - subtests
-    1..19
-    ok 1 - scheme://login:password@[::ffff:11.2.3.4]:3313: parse
-    ok 2 - scheme://login:password@[::ffff:11.2.3.4]:3313: scheme
-    ok 3 - scheme://login:password@[::ffff:11.2.3.4]:3313: login
-    ok 4 - scheme://login:password@[::ffff:11.2.3.4]:3313: password
-    ok 5 - scheme://login:password@[::ffff:11.2.3.4]:3313: host
-    ok 6 - scheme://login:password@[::ffff:11.2.3.4]:3313: service
-    ok 7 - scheme://login:password@[::ffff:11.2.3.4]:3313: path
-    ok 8 - scheme://login:password@[::ffff:11.2.3.4]:3313: query
-    ok 9 - scheme://login:password@[::ffff:11.2.3.4]:3313: fragment
-    ok 10 - scheme://login:password@[::ffff:11.2.3.4]:3313: host_hint
-    ok 11 - scheme://login:password@[::ffff:11.2.3.4]:3313: parse
-    ok 12 - scheme://login:password@[::ffff:11.2.3.4]:3313: scheme
-    ok 13 - scheme://login:password@[::ffff:11.2.3.4]:3313: login
-    ok 14 - scheme://login:password@[::ffff:11.2.3.4]:3313: password
-    ok 15 - scheme://login:password@[::ffff:11.2.3.4]:3313: host
-    ok 16 - scheme://login:password@[::ffff:11.2.3.4]:3313: service
-    ok 17 - scheme://login:password@[::ffff:11.2.3.4]:3313: path
-    ok 18 - scheme://login:password@[::ffff:11.2.3.4]:3313: query
-    ok 19 - scheme://login:password@[::ffff:11.2.3.4]:3313: fragment
-ok 43 - subtests
-    1..19
-    ok 1 - 1: parse
-    ok 2 - 1: scheme
-    ok 3 - 1: login
-    ok 4 - 1: password
-    ok 5 - 1: host
-    ok 6 - 1: service
-    ok 7 - 1: path
-    ok 8 - 1: query
-    ok 9 - 1: fragment
-    ok 10 - 1: host_hint
-    ok 11 - 1: parse
-    ok 12 - 1: scheme
-    ok 13 - 1: login
-    ok 14 - 1: password
-    ok 15 - 1: host
-    ok 16 - 1: service
-    ok 17 - 1: path
-    ok 18 - 1: query
-    ok 19 - 1: fragment
-ok 44 - subtests
-    1..19
-    ok 1 - 10: parse
-    ok 2 - 10: scheme
-    ok 3 - 10: login
-    ok 4 - 10: password
-    ok 5 - 10: host
-    ok 6 - 10: service
-    ok 7 - 10: path
-    ok 8 - 10: query
-    ok 9 - 10: fragment
-    ok 10 - 10: host_hint
-    ok 11 - 10: parse
-    ok 12 - 10: scheme
-    ok 13 - 10: login
-    ok 14 - 10: password
-    ok 15 - 10: host
-    ok 16 - 10: service
-    ok 17 - 10: path
-    ok 18 - 10: query
-    ok 19 - 10: fragment
-ok 45 - subtests
-    1..19
-    ok 1 - 331: parse
-    ok 2 - 331: scheme
-    ok 3 - 331: login
-    ok 4 - 331: password
-    ok 5 - 331: host
-    ok 6 - 331: service
-    ok 7 - 331: path
-    ok 8 - 331: query
-    ok 9 - 331: fragment
-    ok 10 - 331: host_hint
-    ok 11 - 331: parse
-    ok 12 - 331: scheme
-    ok 13 - 331: login
-    ok 14 - 331: password
-    ok 15 - 331: host
-    ok 16 - 331: service
-    ok 17 - 331: path
-    ok 18 - 331: query
-    ok 19 - 331: fragment
-ok 46 - subtests
-    1..19
-    ok 1 - 3313: parse
-    ok 2 - 3313: scheme
-    ok 3 - 3313: login
-    ok 4 - 3313: password
-    ok 5 - 3313: host
-    ok 6 - 3313: service
-    ok 7 - 3313: path
-    ok 8 - 3313: query
-    ok 9 - 3313: fragment
-    ok 10 - 3313: host_hint
-    ok 11 - 3313: parse
-    ok 12 - 3313: scheme
-    ok 13 - 3313: login
-    ok 14 - 3313: password
-    ok 15 - 3313: host
-    ok 16 - 3313: service
-    ok 17 - 3313: path
-    ok 18 - 3313: query
-    ok 19 - 3313: fragment
-ok 47 - subtests
-    1..19
-    ok 1 - /: parse
-    ok 2 - /: scheme
-    ok 3 - /: login
-    ok 4 - /: password
-    ok 5 - /: host
-    ok 6 - /: service
-    ok 7 - /: path
-    ok 8 - /: query
-    ok 9 - /: fragment
-    ok 10 - /: host_hint
-    ok 11 - /: parse
-    ok 12 - /: scheme
-    ok 13 - /: login
-    ok 14 - /: password
-    ok 15 - /: host
-    ok 16 - /: service
-    ok 17 - /: path
-    ok 18 - /: query
-    ok 19 - /: fragment
-ok 48 - subtests
-    1..19
-    ok 1 - /path1/path2/path3: parse
-    ok 2 - /path1/path2/path3: scheme
-    ok 3 - /path1/path2/path3: login
-    ok 4 - /path1/path2/path3: password
-    ok 5 - /path1/path2/path3: host
-    ok 6 - /path1/path2/path3: service
-    ok 7 - /path1/path2/path3: path
-    ok 8 - /path1/path2/path3: query
-    ok 9 - /path1/path2/path3: fragment
-    ok 10 - /path1/path2/path3: host_hint
-    ok 11 - /path1/path2/path3: parse
-    ok 12 - /path1/path2/path3: scheme
-    ok 13 - /path1/path2/path3: login
-    ok 14 - /path1/path2/path3: password
-    ok 15 - /path1/path2/path3: host
-    ok 16 - /path1/path2/path3: service
-    ok 17 - /path1/path2/path3: path
-    ok 18 - /path1/path2/path3: query
-    ok 19 - /path1/path2/path3: fragment
-ok 49 - subtests
-    1..19
-    ok 1 - login:password@/path1/path2/path3: parse
-    ok 2 - login:password@/path1/path2/path3: scheme
-    ok 3 - login:password@/path1/path2/path3: login
-    ok 4 - login:password@/path1/path2/path3: password
-    ok 5 - login:password@/path1/path2/path3: host
-    ok 6 - login:password@/path1/path2/path3: service
-    ok 7 - login:password@/path1/path2/path3: path
-    ok 8 - login:password@/path1/path2/path3: query
-    ok 9 - login:password@/path1/path2/path3: fragment
-    ok 10 - login:password@/path1/path2/path3: host_hint
-    ok 11 - login:password@/path1/path2/path3: parse
-    ok 12 - login:password@/path1/path2/path3: scheme
-    ok 13 - login:password@/path1/path2/path3: login
-    ok 14 - login:password@/path1/path2/path3: password
-    ok 15 - login:password@/path1/path2/path3: host
-    ok 16 - login:password@/path1/path2/path3: service
-    ok 17 - login:password@/path1/path2/path3: path
-    ok 18 - login:password@/path1/path2/path3: query
-    ok 19 - login:password@/path1/path2/path3: fragment
-ok 50 - subtests
-    1..19
-    ok 1 - unix/:/path1/path2/path3: parse
-    ok 2 - unix/:/path1/path2/path3: scheme
-    ok 3 - unix/:/path1/path2/path3: login
-    ok 4 - unix/:/path1/path2/path3: password
-    ok 5 - unix/:/path1/path2/path3: host
-    ok 6 - unix/:/path1/path2/path3: service
-    ok 7 - unix/:/path1/path2/path3: path
-    ok 8 - unix/:/path1/path2/path3: query
-    ok 9 - unix/:/path1/path2/path3: fragment
-    ok 10 - unix/:/path1/path2/path3: host_hint
-    ok 11 - unix/:/path1/path2/path3: parse
-    ok 12 - unix/:/path1/path2/path3: scheme
-    ok 13 - unix/:/path1/path2/path3: login
-    ok 14 - unix/:/path1/path2/path3: password
-    ok 15 - unix/:/path1/path2/path3: host
-    ok 16 - unix/:/path1/path2/path3: service
-    ok 17 - unix/:/path1/path2/path3: path
-    ok 18 - unix/:/path1/path2/path3: query
-    ok 19 - unix/:/path1/path2/path3: fragment
-ok 51 - subtests
-    1..19
-    ok 1 - unix/:/path1/path2/path3:: parse
-    ok 2 - unix/:/path1/path2/path3:: scheme
-    ok 3 - unix/:/path1/path2/path3:: login
-    ok 4 - unix/:/path1/path2/path3:: password
-    ok 5 - unix/:/path1/path2/path3:: host
-    ok 6 - unix/:/path1/path2/path3:: service
-    ok 7 - unix/:/path1/path2/path3:: path
-    ok 8 - unix/:/path1/path2/path3:: query
-    ok 9 - unix/:/path1/path2/path3:: fragment
-    ok 10 - unix/:/path1/path2/path3:: host_hint
-    ok 11 - unix/:/path1/path2/path3:: parse
-    ok 12 - unix/:/path1/path2/path3:: scheme
-    ok 13 - unix/:/path1/path2/path3:: login
-    ok 14 - unix/:/path1/path2/path3:: password
-    ok 15 - unix/:/path1/path2/path3:: host
-    ok 16 - unix/:/path1/path2/path3:: service
-    ok 17 - unix/:/path1/path2/path3:: path
-    ok 18 - unix/:/path1/path2/path3:: query
-    ok 19 - unix/:/path1/path2/path3:: fragment
-ok 52 - subtests
-    1..19
-    ok 1 - unix/:/path1/path2/path3:/: parse
-    ok 2 - unix/:/path1/path2/path3:/: scheme
-    ok 3 - unix/:/path1/path2/path3:/: login
-    ok 4 - unix/:/path1/path2/path3:/: password
-    ok 5 - unix/:/path1/path2/path3:/: host
-    ok 6 - unix/:/path1/path2/path3:/: service
-    ok 7 - unix/:/path1/path2/path3:/: path
-    ok 8 - unix/:/path1/path2/path3:/: query
-    ok 9 - unix/:/path1/path2/path3:/: fragment
-    ok 10 - unix/:/path1/path2/path3:/: host_hint
-    ok 11 - unix/:/path1/path2/path3:/: parse
-    ok 12 - unix/:/path1/path2/path3:/: scheme
-    ok 13 - unix/:/path1/path2/path3:/: login
-    ok 14 - unix/:/path1/path2/path3:/: password
-    ok 15 - unix/:/path1/path2/path3:/: host
-    ok 16 - unix/:/path1/path2/path3:/: service
-    ok 17 - unix/:/path1/path2/path3:/: path
-    ok 18 - unix/:/path1/path2/path3:/: query
-    ok 19 - unix/:/path1/path2/path3:/: fragment
-ok 53 - subtests
-    1..19
-    ok 1 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: parse
-    ok 2 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: scheme
-    ok 3 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: login
-    ok 4 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: password
-    ok 5 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: host
-    ok 6 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: service
-    ok 7 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: path
-    ok 8 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: query
-    ok 9 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: fragment
-    ok 10 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: host_hint
-    ok 11 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: parse
-    ok 12 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: scheme
-    ok 13 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: login
-    ok 14 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: password
-    ok 15 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: host
-    ok 16 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: service
-    ok 17 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: path
-    ok 18 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: query
-    ok 19 - unix/:/path1/path2/path3?q1=v1&q2=v2#fragment: fragment
-ok 54 - subtests
-    1..19
-    ok 1 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: parse
-    ok 2 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: scheme
-    ok 3 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: login
-    ok 4 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: password
-    ok 5 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: host
-    ok 6 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: service
-    ok 7 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: path
-    ok 8 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: query
-    ok 9 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: fragment
-    ok 10 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: host_hint
-    ok 11 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: parse
-    ok 12 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: scheme
-    ok 13 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: login
-    ok 14 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: password
-    ok 15 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: host
-    ok 16 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: service
-    ok 17 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: path
-    ok 18 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: query
-    ok 19 - unix/:/path1/path2/path3:/p1/p2?q1=v1&q2=v2#fragment: fragment
-ok 55 - subtests
-    1..19
-    ok 1 - login:password at unix/:/path1/path2/path3: parse
-    ok 2 - login:password at unix/:/path1/path2/path3: scheme
-    ok 3 - login:password at unix/:/path1/path2/path3: login
-    ok 4 - login:password at unix/:/path1/path2/path3: password
-    ok 5 - login:password at unix/:/path1/path2/path3: host
-    ok 6 - login:password at unix/:/path1/path2/path3: service
-    ok 7 - login:password at unix/:/path1/path2/path3: path
-    ok 8 - login:password at unix/:/path1/path2/path3: query
-    ok 9 - login:password at unix/:/path1/path2/path3: fragment
-    ok 10 - login:password at unix/:/path1/path2/path3: host_hint
-    ok 11 - login:password at unix/:/path1/path2/path3: parse
-    ok 12 - login:password at unix/:/path1/path2/path3: scheme
-    ok 13 - login:password at unix/:/path1/path2/path3: login
-    ok 14 - login:password at unix/:/path1/path2/path3: password
-    ok 15 - login:password at unix/:/path1/path2/path3: host
-    ok 16 - login:password at unix/:/path1/path2/path3: service
-    ok 17 - login:password at unix/:/path1/path2/path3: path
-    ok 18 - login:password at unix/:/path1/path2/path3: query
-    ok 19 - login:password at unix/:/path1/path2/path3: fragment
-ok 56 - subtests
-    1..19
-    ok 1 - login:password at unix/:/path1/path2/path3:: parse
-    ok 2 - login:password at unix/:/path1/path2/path3:: scheme
-    ok 3 - login:password at unix/:/path1/path2/path3:: login
-    ok 4 - login:password at unix/:/path1/path2/path3:: password
-    ok 5 - login:password at unix/:/path1/path2/path3:: host
-    ok 6 - login:password at unix/:/path1/path2/path3:: service
-    ok 7 - login:password at unix/:/path1/path2/path3:: path
-    ok 8 - login:password at unix/:/path1/path2/path3:: query
-    ok 9 - login:password at unix/:/path1/path2/path3:: fragment
-    ok 10 - login:password at unix/:/path1/path2/path3:: host_hint
-    ok 11 - login:password at unix/:/path1/path2/path3:: parse
-    ok 12 - login:password at unix/:/path1/path2/path3:: scheme
-    ok 13 - login:password at unix/:/path1/path2/path3:: login
-    ok 14 - login:password at unix/:/path1/path2/path3:: password
-    ok 15 - login:password at unix/:/path1/path2/path3:: host
-    ok 16 - login:password at unix/:/path1/path2/path3:: service
-    ok 17 - login:password at unix/:/path1/path2/path3:: path
-    ok 18 - login:password at unix/:/path1/path2/path3:: query
-    ok 19 - login:password at unix/:/path1/path2/path3:: fragment
-ok 57 - subtests
-    1..19
-    ok 1 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: parse
-    ok 2 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: scheme
-    ok 3 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: login
-    ok 4 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: password
-    ok 5 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: host
-    ok 6 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: service
-    ok 7 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: path
-    ok 8 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: query
-    ok 9 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: fragment
-    ok 10 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: host_hint
-    ok 11 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: parse
-    ok 12 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: scheme
-    ok 13 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: login
-    ok 14 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: password
-    ok 15 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: host
-    ok 16 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: service
-    ok 17 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: path
-    ok 18 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: query
-    ok 19 - scheme://login:password@unix/:/tmp/unix.sock:/path1/path2/path3: fragment
-ok 58 - subtests
-    1..19
-    ok 1 - unix/:./relative/path.sock:/test: parse
-    ok 2 - unix/:./relative/path.sock:/test: scheme
-    ok 3 - unix/:./relative/path.sock:/test: login
-    ok 4 - unix/:./relative/path.sock:/test: password
-    ok 5 - unix/:./relative/path.sock:/test: host
-    ok 6 - unix/:./relative/path.sock:/test: service
-    ok 7 - unix/:./relative/path.sock:/test: path
-    ok 8 - unix/:./relative/path.sock:/test: query
-    ok 9 - unix/:./relative/path.sock:/test: fragment
-    ok 10 - unix/:./relative/path.sock:/test: host_hint
-    ok 11 - unix/:./relative/path.sock:/test: parse
-    ok 12 - unix/:./relative/path.sock:/test: scheme
-    ok 13 - unix/:./relative/path.sock:/test: login
-    ok 14 - unix/:./relative/path.sock:/test: password
-    ok 15 - unix/:./relative/path.sock:/test: host
-    ok 16 - unix/:./relative/path.sock:/test: service
-    ok 17 - unix/:./relative/path.sock:/test: path
-    ok 18 - unix/:./relative/path.sock:/test: query
-    ok 19 - unix/:./relative/path.sock:/test: fragment
-ok 59 - subtests
-    1..19
-    ok 1 - scheme://unix/:./relative/path.sock:/test: parse
-    ok 2 - scheme://unix/:./relative/path.sock:/test: scheme
-    ok 3 - scheme://unix/:./relative/path.sock:/test: login
-    ok 4 - scheme://unix/:./relative/path.sock:/test: password
-    ok 5 - scheme://unix/:./relative/path.sock:/test: host
-    ok 6 - scheme://unix/:./relative/path.sock:/test: service
-    ok 7 - scheme://unix/:./relative/path.sock:/test: path
-    ok 8 - scheme://unix/:./relative/path.sock:/test: query
-    ok 9 - scheme://unix/:./relative/path.sock:/test: fragment
-    ok 10 - scheme://unix/:./relative/path.sock:/test: host_hint
-    ok 11 - scheme://unix/:./relative/path.sock:/test: parse
-    ok 12 - scheme://unix/:./relative/path.sock:/test: scheme
-    ok 13 - scheme://unix/:./relative/path.sock:/test: login
-    ok 14 - scheme://unix/:./relative/path.sock:/test: password
-    ok 15 - scheme://unix/:./relative/path.sock:/test: host
-    ok 16 - scheme://unix/:./relative/path.sock:/test: service
-    ok 17 - scheme://unix/:./relative/path.sock:/test: path
-    ok 18 - scheme://unix/:./relative/path.sock:/test: query
-    ok 19 - scheme://unix/:./relative/path.sock:/test: fragment
-ok 60 - subtests
-    1..19
-    ok 1 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: parse
-    ok 2 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: scheme
-    ok 3 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: login
-    ok 4 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: password
-    ok 5 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: host
-    ok 6 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: service
-    ok 7 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: path
-    ok 8 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: query
-    ok 9 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: fragment
-    ok 10 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: host_hint
-    ok 11 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: parse
-    ok 12 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: scheme
-    ok 13 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: login
-    ok 14 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: password
-    ok 15 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: host
-    ok 16 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: service
-    ok 17 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: path
-    ok 18 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: query
-    ok 19 - http://tarantool.org/dist/master/debian/pool/main/t/tarantool/tarantool_1.6.3+314+g91066ee+20140910+1434.orig.tar.gz: fragment
-ok 61 - subtests
-    1..19
-    ok 1 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: parse
-    ok 2 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: scheme
-    ok 3 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: login
-    ok 4 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: password
-    ok 5 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: host
-    ok 6 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: service
-    ok 7 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: path
-    ok 8 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: query
-    ok 9 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: fragment
-    ok 10 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: host_hint
-    ok 11 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: parse
-    ok 12 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: scheme
-    ok 13 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: login
-    ok 14 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: password
-    ok 15 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: host
-    ok 16 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: service
-    ok 17 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: path
-    ok 18 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: query
-    ok 19 - https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&biw=1918&bih=1109&q=Tarantool&oq=Tarantool&gs_l=img.3..0i24l3j0i10i24j0i24&gws_rd=ssl: fragment
-ok 62 - subtests
-    1..2
-    ok 1 - empty is invalid
-    ok 2 - :// is invalid
-ok 63 - subtests
diff --git a/test/unit/uuid.result b/test/unit/uuid.result
deleted file mode 100644
index 50a1140c5..000000000
--- a/test/unit/uuid.result
+++ /dev/null
@@ -1,9 +0,0 @@
-1..3
-ok 1 - 6611265b-8852-4832-af8b-4164d52c62eb > 186ebbf7-cf97-4e2e-8b1b-76154f6f3949
-ok 2 - 075b4148-8fb0-2e7f-af50-4164d52c62eb < 1fbc929f-5da8-28c5-8b36-76154f6f3949
-    1..4
-    ok 1 - mp_sizeof_uuid() == encoded length
-    ok 2 - mp_decode_uuid() return code
-    ok 3 - mp_sizeof_uuid() == decoded length
-    ok 4 - mp_decode_uuid(mp_encode_uuid(uu)) == uu
-ok 3 - subtests
diff --git a/test/unit/vclock.result b/test/unit/vclock.result
deleted file mode 100644
index 2ca741bbd..000000000
--- a/test/unit/vclock.result
+++ /dev/null
@@ -1,149 +0,0 @@
-1..5
-    1..40
-	*** test_compare ***
-    ok 1 - compare (), () => 0
-    ok 2 - compare (), () => 0
-    ok 3 - compare (), (10) => -1
-    ok 4 - compare (10), () => 1
-    ok 5 - compare (0), (0) => 0
-    ok 6 - compare (0), (0) => 0
-    ok 7 - compare (1), (1) => 0
-    ok 8 - compare (1), (1) => 0
-    ok 9 - compare (1), (2) => -1
-    ok 10 - compare (2), (1) => 1
-    ok 11 - compare (), (10, 1, 0) => -1
-    ok 12 - compare (10, 1, 0), () => 1
-    ok 13 - compare (5), (10, 1, 0) => -1
-    ok 14 - compare (10, 1, 0), (5) => 1
-    ok 15 - compare (10), (10, 1, 0) => -1
-    ok 16 - compare (10, 1, 0), (10) => 1
-    ok 17 - compare (15), (10, 1, 0) => 2147483647
-    ok 18 - compare (10, 1, 0), (15) => 2147483647
-    ok 19 - compare (10, 1, 0), (10, 1, 1) => -1
-    ok 20 - compare (10, 1, 1), (10, 1, 0) => 1
-    ok 21 - compare (10, 1, 0), (10, 2, 0) => -1
-    ok 22 - compare (10, 2, 0), (10, 1, 0) => 1
-    ok 23 - compare (10, 1, 0), (10, 1, 0) => 0
-    ok 24 - compare (10, 1, 0), (10, 1, 0) => 0
-    ok 25 - compare (10, 0, 1), (10, 1, 0) => 2147483647
-    ok 26 - compare (10, 1, 0), (10, 0, 1) => 2147483647
-    ok 27 - compare (10, 2, 1), (10, 1, 2) => 2147483647
-    ok 28 - compare (10, 1, 2), (10, 2, 1) => 2147483647
-    ok 29 - compare (10, 0, 1), (11, 0, 0) => 2147483647
-    ok 30 - compare (11, 0, 0), (10, 0, 1) => 2147483647
-    ok 31 - compare (10, 0, 5), (5, 0, 10) => 2147483647
-    ok 32 - compare (5, 0, 10), (10, 0, 5) => 2147483647
-    ok 33 - compare (10, 10, 10), (10, 10, 10) => 0
-    ok 34 - compare (10, 10, 10), (10, 10, 10) => 0
-    ok 35 - compare (10, 10, 10), (10, 10, 10, 1) => -1
-    ok 36 - compare (10, 10, 10, 1), (10, 10, 10) => 1
-    ok 37 - compare (10, 10, 10), (10, 10, 10, 1, 2, 3) => -1
-    ok 38 - compare (10, 10, 10, 1, 2, 3), (10, 10, 10) => 1
-    ok 39 - compare (0, 0, 0), (10, 0, 0, 0, 0) => -1
-    ok 40 - compare (10, 0, 0, 0, 0), (0, 0, 0) => 1
-	*** test_compare: done ***
-ok 1 - subtests
-    1..36
-	*** test_isearch ***
-    ok 1 - query #1
-    ok 2 - query #2
-    ok 3 - query #3
-    ok 4 - query #4
-    ok 5 - query #5
-    ok 6 - query #6
-    ok 7 - query #7
-    ok 8 - query #8
-    ok 9 - query #9
-    ok 10 - query #10
-    ok 11 - query #11
-    ok 12 - query #12
-    ok 13 - query #13
-    ok 14 - query #14
-    ok 15 - query #15
-    ok 16 - query #16
-    ok 17 - query #17
-    ok 18 - query #18
-    ok 19 - query #19
-    ok 20 - query #20
-    ok 21 - query #21
-    ok 22 - query #22
-    ok 23 - query #23
-    ok 24 - query #24
-    ok 25 - query #25
-    ok 26 - query #26
-    ok 27 - query #27
-    ok 28 - query #28
-    ok 29 - query #29
-    ok 30 - query #30
-    ok 31 - query #31
-    ok 32 - query #32
-    ok 33 - query #33
-    ok 34 - query #34
-    ok 35 - query #35
-    ok 36 - query #36
-	*** test_isearch: done ***
-ok 2 - subtests
-    1..8
-	*** test_tostring ***
-    ok 1 - tostring () => {}
-    ok 2 - tostring (-1, -1, -1) => {}
-    ok 3 - tostring (1) => {0: 1}
-    ok 4 - tostring (1, 2) => {0: 1, 1: 2}
-    ok 5 - tostring (10, 15, 20) => {0: 10, 1: 15, 2: 20}
-    ok 6 - tostring (10, -1, 15, -1, 20) => {0: 10, 2: 15, 4: 20}
-    ok 7 - tostring (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) => {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15}
-    ok 8 - tostring (9223372036854775000, 9223372036854775001, 9223372036854775002, 9223372036854775003, 9223372036854775004, 9223372036854775005, 9223372036854775006, 9223372036854775007, 9223372036854775008, 9223372036854775009, 9223372036854775010, 9223372036854775011, 9223372036854775012, 9223372036854775013, 9223372036854775014, 9223372036854775015) => {0: 9223372036854775000, 1: 9223372036854775001, 2: 9223372036854775002, 3: 9223372036854775003, 4: 9223372036854775004, 5: 9223372036854775005, 6: 9223372036854775006, 7: 9223372036854775007, 8: 9223372036854775008, 9: 9223372036854775009, 10: 9223372036854775010, 11: 9223372036854775011, 12: 9223372036854775012, 13: 9223372036854775013, 14: 9223372036854775014, 15: 9223372036854775015}
-	*** test_tostring: done ***
-ok 3 - subtests
-    1..12
-	*** test_fromstring ***
-    ok 1 - fromstring {} => ()
-    ok 2 - fromstring  	 	 { 	 	 } 	 	  => ()
-    ok 3 - fromstring {0: 10} => (10)
-    ok 4 - fromstring {0: 10,} => (10)
-    ok 5 - fromstring {	 0	 :	  10	 ,	 } => (10)
-    ok 6 - fromstring {0: 10, 1: 15, 3: 20} => (10, 15, -1, 20)
-    ok 7 - fromstring {2: 20, 0: 10, 4: 30} => (10, -1, 20, -1, 30)
-    ok 8 - fromstring {4: 30, 2: 20} => (-1, -1, 20, -1, 30)
-    ok 9 - fromstring {4: 30, 2: 20,} => (-1, -1, 20, -1, 30)
-    ok 10 - fromstring {0: 4294967295} => (4294967295)
-    ok 11 - fromstring {0: 4294967296} => (4294967296)
-    ok 12 - fromstring {0: 9223372036854775807} => (9223372036854775807)
-	*** test_fromstring: done ***
-ok 4 - subtests
-    1..32
-	*** test_fromstring_invalid ***
-    ok 1 - fromstring "" => 1
-    ok 2 - fromstring " " => 2
-    ok 3 - fromstring "	 	 	 " => 7
-    ok 4 - fromstring "}" => 1
-    ok 5 - fromstring "1: 10" => 1
-    ok 6 - fromstring "abcde" => 1
-    ok 7 - fromstring "12345" => 1
-    ok 8 - fromstring "" => 1
-    ok 9 - fromstring "{" => 2
-    ok 10 - fromstring "{1	 " => 5
-    ok 11 - fromstring "{1:	 " => 6
-    ok 12 - fromstring "{1:10" => 6
-    ok 13 - fromstring "{1:10	 " => 8
-    ok 14 - fromstring "{1:10," => 7
-    ok 15 - fromstring "{1:10,	 	 " => 11
-    ok 16 - fromstring "{1:10 2:20" => 7
-    ok 17 - fromstring "{1:10,," => 7
-    ok 18 - fromstring "{1:10, 10,}" => 10
-    ok 19 - fromstring "{1:-1}" => 4
-    ok 20 - fromstring "{-1:1}" => 2
-    ok 21 - fromstring "{128:1}" => 5
-    ok 22 - fromstring "{1:abcde}" => 4
-    ok 23 - fromstring "{abcde:1}" => 2
-    ok 24 - fromstring "{1:1.1}" => 5
-    ok 25 - fromstring "{1.1:1}" => 3
-    ok 26 - fromstring "{4294967296:1}" => 12
-    ok 27 - fromstring "{1:9223372036854775808}" => 23
-    ok 28 - fromstring "{1:18446744073709551616}" => 24
-    ok 29 - fromstring "{1:18446744073709551616}" => 24
-    ok 30 - fromstring "{1:340282366920938463463374607431768211456}" => 43
-    ok 31 - fromstring "{1:10, 1:20}" => 12
-    ok 32 - fromstring "{1:20, 1:10}" => 12
-	*** test_fromstring_invalid: done ***
-ok 5 - subtests
diff --git a/test/unit/vy_cache.result b/test/unit/vy_cache.result
deleted file mode 100644
index a67e8edb0..000000000
--- a/test/unit/vy_cache.result
+++ /dev/null
@@ -1,9 +0,0 @@
-	*** test_basic ***
-1..6
-ok 1 - cache is filled with 6 statements
-ok 2 - cache is filled with 12 statements
-ok 3 - cache is filled with 18 statements
-ok 4 - next_key * 4
-ok 5 - restore
-ok 6 - restore on position after last
-	*** test_basic: done ***
diff --git a/test/unit/vy_mem.c b/test/unit/vy_mem.c
index 2e461f312..4e136b72b 100644
--- a/test/unit/vy_mem.c
+++ b/test/unit/vy_mem.c
@@ -9,7 +9,7 @@ test_basic(void)
 {
 	header();
 
-	plan(12);
+	plan(9);
 
 	/* Create key_def */
 	uint32_t fields[] = { 0 };
@@ -334,11 +334,13 @@ test_iterator_restore_after_insertion()
 int
 main(int argc, char *argv[])
 {
+	plan(2);
 	vy_iterator_C_test_init(0);
 
 	test_basic();
 	test_iterator_restore_after_insertion();
 
 	vy_iterator_C_test_finish();
+	check_plan();
 	return 0;
 }
diff --git a/test/unit/vy_mem.result b/test/unit/vy_mem.result
deleted file mode 100644
index 5c9c7af58..000000000
--- a/test/unit/vy_mem.result
+++ /dev/null
@@ -1,17 +0,0 @@
-# Looks like you planned 12 tests but ran 9.
-	*** test_basic ***
-1..12
-ok 1 - mem->dump_lsn on empty mem
-ok 2 - mem->dump_lsn after prepare
-ok 3 - mem->dump_lsn after commit
-ok 4 - vy_mem_older_lsn 1
-ok 5 - vy_mem_older_lsn 2
-ok 6 - vy_mem_rollback 1
-ok 7 - vy_mem_rollback 2
-ok 8 - vy_mem->version
-ok 9 - vy_mem->version
-	*** test_basic: done ***
-	*** test_iterator_restore_after_insertion ***
-1..1
-ok 1 - check wrong_output 0
-	*** test_iterator_restore_after_insertion: done ***
diff --git a/test/unit/vy_point_lookup.result b/test/unit/vy_point_lookup.result
deleted file mode 100644
index 4e68dda6d..000000000
--- a/test/unit/vy_point_lookup.result
+++ /dev/null
@@ -1,20 +0,0 @@
-1..1
-	*** test_basic ***
-    1..15
-    ok 1 - vy_lsm_env_create
-    ok 2 - key_def is not NULL
-    ok 3 - tuple_format_new is not NULL
-    ok 4 - lsm is not NULL
-    ok 5 - range is not NULL
-    ok 6 - temp dir name is not NULL
-    ok 7 - temp dir create (2)
-    ok 8 - temp dir create (3)
-    ok 9 - vy_lsm_rotate_mem
-    ok 10 - vy_run_new
-    ok 11 - vy_run_write
-    ok 12 - vy_run_new
-    ok 13 - vy_run_write
-    ok 14 - select results
-    ok 15 - no errors happened
-ok 1 - subtests
-	*** test_basic: done ***
diff --git a/test/unit/vy_write_iterator.result b/test/unit/vy_write_iterator.result
deleted file mode 100644
index a80116852..000000000
--- a/test/unit/vy_write_iterator.result
+++ /dev/null
@@ -1,61 +0,0 @@
-	*** test_basic ***
-1..58
-ok 1 - stmt 0 is correct
-ok 2 - stmt 1 is correct
-ok 3 - stmt 2 is correct
-ok 4 - stmt 3 is correct
-ok 5 - correct results count
-ok 6 - stmt 0 is correct
-ok 7 - stmt 1 is correct
-ok 8 - stmt 2 is correct
-ok 9 - stmt 3 is correct
-ok 10 - correct results count
-ok 11 - stmt 0 is correct
-ok 12 - stmt 1 is correct
-ok 13 - correct results count
-ok 14 - stmt 0 is correct
-ok 15 - stmt 1 is correct
-ok 16 - correct results count
-ok 17 - stmt 0 is correct
-ok 18 - correct results count
-ok 19 - stmt 0 is correct
-ok 20 - stmt 1 is correct
-ok 21 - correct results count
-ok 22 - stmt 0 is correct
-ok 23 - stmt 1 is correct
-ok 24 - correct results count
-ok 25 - stmt 0 is correct
-ok 26 - stmt 1 is correct
-ok 27 - stmt 2 is correct
-ok 28 - correct results count
-ok 29 - stmt 0 is correct
-ok 30 - correct results count
-ok 31 - stmt 0 is correct
-ok 32 - stmt 1 is correct
-ok 33 - stmt 2 is correct
-ok 34 - correct results count
-ok 35 - stmt 0 is correct
-ok 36 - stmt 1 is correct
-ok 37 - stmt 2 is correct
-ok 38 - correct results count
-ok 39 - stmt 0 is correct
-ok 40 - stmt 1 is correct
-ok 41 - stmt 2 is correct
-ok 42 - correct results count
-ok 43 - deferred stmt 0 is correct
-ok 44 - deferred stmt 1 is correct
-ok 45 - deferred stmt 2 is correct
-ok 46 - deferred stmt 3 is correct
-ok 47 - correct deferred stmt count
-ok 48 - stmt 0 is correct
-ok 49 - stmt 1 is correct
-ok 50 - correct results count
-ok 51 - correct deferred stmt count
-ok 52 - stmt 0 is correct
-ok 53 - stmt 1 is correct
-ok 54 - correct results count
-ok 55 - correct deferred stmt count
-ok 56 - stmt 0 is correct
-ok 57 - correct results count
-ok 58 - correct deferred stmt count
-	*** test_basic: done ***
diff --git a/test/unit/xrow.result b/test/unit/xrow.result
deleted file mode 100644
index 5ee92ad7b..000000000
--- a/test/unit/xrow.result
+++ /dev/null
@@ -1,58 +0,0 @@
-1..3
-    1..40
-    ok 1 - round trip
-    ok 2 - roundtrip.version_id
-    ok 3 - roundtrip.protocol
-    ok 4 - roundtrip.uuid
-    ok 5 - roundtrip.salt_len
-    ok 6 - roundtrip.salt
-    ok 7 - decode iproto
-    ok 8 - iproto.version_id
-    ok 9 - iproto.protocol
-    ok 10 - iproto.uuid
-    ok 11 - iproto.salt_len
-    ok 12 - iproto.salt
-    ok 13 - decode lua
-    ok 14 - lua.version_id
-    ok 15 - lua.protocol
-    ok 16 - lua.uuid
-    ok 17 - lua.salt_len
-    ok 18 - decode iproto166
-    ok 19 - iproto166.version_id
-    ok 20 - iproto166.protocol
-    ok 21 - iproto166.uuid
-    ok 22 - iproto166.salt_len
-    ok 23 - iproto166.salt
-    ok 24 - decode lua166
-    ok 25 - lua166.version_id
-    ok 26 - lua166.protocol
-    ok 27 - lua166.uuid
-    ok 28 - lua166.salt_len
-    ok 29 - invalid 0
-    ok 30 - invalid 1
-    ok 31 - invalid 2
-    ok 32 - invalid 3
-    ok 33 - invalid 4
-    ok 34 - invalid 5
-    ok 35 - invalid 6
-    ok 36 - invalid 7
-    ok 37 - invalid 8
-    ok 38 - invalid 9
-    ok 39 - invalid 10
-    ok 40 - invalid 11
-ok 1 - subtests
-    1..10
-    ok 1 - bad msgpack end
-    ok 2 - encode
-    ok 3 - header map size
-    ok 4 - header decode
-    ok 5 - decoded type
-    ok 6 - decoded replica_id
-    ok 7 - decoded lsn
-    ok 8 - decoded tm
-    ok 9 - decoded sync
-    ok 10 - decoded bodycnt
-ok 2 - subtests
-    1..1
-    ok 1 - request_str
-ok 3 - subtests
-- 
2.23.0



More information about the Tarantool-patches mailing list