5 * Created by Victor Grishchenko on 3/9/09.
6 * Copyright 2009-2012 TECHNISCHE UNIVERSITEIT DELFT. All rights reserved.
10 #include "bin_utils.h"
11 #include <gtest/gtest.h>
13 TEST(Bin64Test,InitGet) {
15 EXPECT_EQ(0x1,bin_t(1,0).toUInt());
16 EXPECT_EQ(0xB,bin_t(2,1).toUInt());
17 EXPECT_EQ(0x2,bin_t(2,1).layer());
18 EXPECT_EQ(34,bin_t(34,2345).layer());
19 EXPECT_EQ(0x7ffffffffULL,bin_t(34,2345).layer_bits());
20 EXPECT_EQ(1,bin_t(2,1).layer_offset());
21 EXPECT_EQ(2345,bin_t(34,2345).layer_offset());
22 EXPECT_EQ((1<<1) - 1,bin_t(0,123).layer_bits());
23 EXPECT_EQ((1<<17) - 1,bin_t(16,123).layer_bits());
27 TEST(Bin64Test,Navigation) {
30 EXPECT_EQ(bin_t(5,9),mid.parent());
31 EXPECT_EQ(bin_t(3,36),mid.left());
32 EXPECT_EQ(bin_t(3,37),mid.right());
33 EXPECT_EQ(bin_t(5,9),bin_t(4,19).parent());
35 EXPECT_EQ(bin_t(31,0),up32.parent());
39 TEST(Bin64Test,Overflows) {
41 EXPECT_FALSE(bin_t::NONE.contains(bin_t(0,1)));
42 EXPECT_TRUE(bin_t::ALL.contains(bin_t(0,1)));
43 EXPECT_EQ(0,bin_t::NONE.base_length());
44 EXPECT_EQ(bin_t::NONE,bin_t::NONE.twisted(123));
45 /*EXPECT_EQ(bin64_t::NONE.parent(),bin64_t::NONE);
46 EXPECT_EQ(bin64_t::NONE.left(),bin64_t::NONE);
47 EXPECT_EQ(bin64_t::NONE.right(),bin64_t::NONE);
48 EXPECT_EQ(bin64_t::NONE,bin64_t(0,2345).left());
49 EXPECT_EQ(bin64_t::NONE,bin64_t::ALL.parent());
53 TEST(Bin64Test, Advanced) {
55 EXPECT_EQ(4,bin_t(2,3).base_length());
56 EXPECT_FALSE(bin_t(1,1234).is_base());
57 EXPECT_TRUE(bin_t(0,12345).is_base());
58 EXPECT_EQ(bin_t(0,2),bin_t(1,1).base_left());
60 int peak_count = gen_peaks(7,peaks);
61 EXPECT_EQ(3,peak_count);
62 EXPECT_EQ(bin_t(2,0),peaks[0]);
63 EXPECT_EQ(bin_t(1,2),peaks[1]);
64 EXPECT_EQ(bin_t(0,6),peaks[2]);
68 TEST(Bin64Test, Bits) {
69 bin_t all = bin_t::ALL, none = bin_t::NONE, big = bin_t(40,18);
70 uint32_t a32 = bin_toUInt32(all), n32 = bin_toUInt32(none), b32 = bin_toUInt32(big);
71 EXPECT_EQ(0x7fffffff,a32);
72 EXPECT_EQ(0xffffffff,n32);
73 EXPECT_EQ(bin_t::NONE,bin_fromUInt32(b32));
76 int main (int argc, char** argv) {
78 testing::InitGoogleTest(&argc, argv);
79 return RUN_ALL_TESTS();