benchmark silo added
[c11concurrency-benchmarks.git] / silo / varint.cc
1 #include <iostream>
2
3 #include "varint.h"
4 #include "macros.h"
5 #include "util.h"
6
7 using namespace std;
8 using namespace util;
9
10 static void
11 do_test(uint32_t v)
12 {
13   uint8_t buf[5];
14   uint8_t *p = &buf[0];
15   p = write_uvint32(p, v);
16   ALWAYS_ASSERT(size_t(p - &buf[0]) == size_uvint32(v));
17
18   const uint8_t *p0 = &buf[0];
19   uint32_t v0 = 0;
20   p0 = read_uvint32(p0, &v0);
21   ALWAYS_ASSERT(v == v0);
22   ALWAYS_ASSERT(p == p0);
23 }
24
25 void
26 varint::Test()
27 {
28   fast_random r(2043859);
29   for (int i = 0; i < 1000; i++)
30     do_test(r.next_u32());
31   cerr << "varint tests passed" << endl;
32 }