1#include <gmock/gmock.h>
2#include <gtest/gtest.h>
10TEST(Uint1Test, Constructors)
14 EXPECT_EQ(default_val.value(), 0);
17 uint1_t true_val(
true);
18 EXPECT_EQ(true_val.value(), 1);
20 uint1_t false_val(
false);
21 EXPECT_EQ(false_val.value(), 0);
24 uint1_t from_int_zero(0);
25 EXPECT_EQ(from_int_zero.value(), 0);
27 uint1_t from_int_one(1);
28 EXPECT_EQ(from_int_one.value(), 1);
30 uint1_t from_int_two(2);
31 EXPECT_EQ(from_int_two.value(), 1);
33 uint1_t from_int_negative(-1);
34 EXPECT_EQ(from_int_negative.value(), 1);
38TEST(Uint1Test, ArithmeticOperators)
44 EXPECT_EQ((zero + zero).
value(), 0);
45 EXPECT_EQ((zero + one).
value(), 1);
46 EXPECT_EQ((one + zero).
value(), 1);
47 EXPECT_EQ((one + one).
value(), 0);
50 EXPECT_EQ((zero - zero).
value(), 0);
51 EXPECT_EQ((zero - one).
value(), 1);
52 EXPECT_EQ((one - zero).
value(), 1);
53 EXPECT_EQ((one - one).
value(), 0);
56 EXPECT_EQ((zero * zero).
value(), 0);
57 EXPECT_EQ((zero * one).
value(), 0);
58 EXPECT_EQ((one * zero).
value(), 0);
59 EXPECT_EQ((one * one).
value(), 1);
62 EXPECT_EQ((zero / one).
value(), 0);
63 EXPECT_EQ((one / one).
value(), 1);
67 EXPECT_EQ((-zero).
value(), 1);
68 EXPECT_EQ((-one).
value(), 0);
72TEST(Uint1Test, BitwiseOperators)
78 EXPECT_EQ((zero & zero).
value(), 0);
79 EXPECT_EQ((zero & one).
value(), 0);
80 EXPECT_EQ((one & zero).
value(), 0);
81 EXPECT_EQ((one & one).
value(), 1);
84 EXPECT_EQ((zero | zero).
value(), 0);
85 EXPECT_EQ((zero | one).
value(), 1);
86 EXPECT_EQ((one | zero).
value(), 1);
87 EXPECT_EQ((one | one).
value(), 1);
90 EXPECT_EQ((zero ^ zero).
value(), 0);
91 EXPECT_EQ((zero ^ one).
value(), 1);
92 EXPECT_EQ((one ^ zero).
value(), 1);
93 EXPECT_EQ((one ^ one).
value(), 0);
96 EXPECT_EQ((~zero).
value(), 1);
97 EXPECT_EQ((~one).
value(), 0);
101TEST(Uint1Test, ShiftOperators)
107 EXPECT_EQ((zero << zero).
value(), 0);
108 EXPECT_EQ((zero << one).
value(), 0);
109 EXPECT_EQ((one << zero).
value(), 1);
110 EXPECT_EQ((one << one).
value(), 0);
113 EXPECT_EQ((zero >> zero).
value(), 0);
114 EXPECT_EQ((zero >> one).
value(), 0);
115 EXPECT_EQ((one >> zero).
value(), 1);
116 EXPECT_EQ((one >> one).
value(), 0);
120TEST(Uint1Test, ComparisonOperators)
127 EXPECT_TRUE(zero == zero);
128 EXPECT_FALSE(zero == one);
129 EXPECT_FALSE(one == zero);
130 EXPECT_TRUE(one == also_one);
133 EXPECT_FALSE(zero != zero);
134 EXPECT_TRUE(zero != one);
135 EXPECT_TRUE(one != zero);
136 EXPECT_FALSE(one != also_one);
139 EXPECT_FALSE(zero < zero);
140 EXPECT_TRUE(zero < one);
141 EXPECT_FALSE(one < zero);
142 EXPECT_FALSE(one < also_one);
145 EXPECT_TRUE(zero <= zero);
146 EXPECT_TRUE(zero <= one);
147 EXPECT_FALSE(one <= zero);
148 EXPECT_TRUE(one <= also_one);
151 EXPECT_FALSE(zero > zero);
152 EXPECT_FALSE(zero > one);
153 EXPECT_TRUE(one > zero);
154 EXPECT_FALSE(one > also_one);
157 EXPECT_TRUE(zero >= zero);
158 EXPECT_FALSE(zero >= one);
159 EXPECT_TRUE(one >= zero);
160 EXPECT_TRUE(one >= also_one);
164TEST(Uint1Test, Conversion)
170 EXPECT_EQ(zero.value(), 0);
171 EXPECT_EQ(one.value(), 1);
174 uint8_t zero_u8 = zero;
175 uint8_t one_u8 = one;
176 EXPECT_EQ(zero_u8, 0);
177 EXPECT_EQ(one_u8, 1);
181TEST(Uint1Test, ComplexExpressions)
187 EXPECT_EQ(((zero | one) & ~zero).
value(), 1);
188 EXPECT_EQ(((zero & one) | zero).
value(), 0);
189 EXPECT_EQ(((zero ^ one) ^ zero).
value(), 1);
192 EXPECT_EQ((zero + one * zero).
value(), 0);
193 EXPECT_EQ((zero | (one & zero)).
value(), 0);
194 EXPECT_EQ((zero + (one | zero)).
value(), 1);
197 EXPECT_EQ(((zero | one) + (zero & zero)).
value(), 1);
198 EXPECT_EQ(((zero ^ one) - (one & zero)).
value(), 1);
199 EXPECT_EQ(((~zero & one) * (zero | zero)).
value(), 0);
TEST(EmitUnencryptedLogTest, Basic)