Use Linux-like indentation in mptp.c
[swifty.git] / src / libswift / tests / bin64test.cpp
1 /*
2  *  bintest.cpp
3  *  bin++
4  *
5  *  Created by Victor Grishchenko on 3/9/09.
6  *  Copyright 2009-2012 TECHNISCHE UNIVERSITEIT DELFT. All rights reserved.
7  *
8  */
9 #include "bin.h"
10 #include "bin_utils.h"
11 #include <gtest/gtest.h>
12
13 TEST(Bin64Test,InitGet) {
14
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());
24
25 }
26
27 TEST(Bin64Test,Navigation) {
28
29     bin_t mid(4,18);
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());
34     bin_t up32(30,1);
35     EXPECT_EQ(bin_t(31,0),up32.parent());
36
37 }
38
39 TEST(Bin64Test,Overflows) {
40
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());
50 */
51 }
52
53 TEST(Bin64Test, Advanced) {
54
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());
59     bin_t peaks[64];
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]);
65
66 }
67
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));
74 }
75
76 int main (int argc, char** argv) {
77
78         testing::InitGoogleTest(&argc, argv);
79         return RUN_ALL_TESTS();
80
81 }