|
1 /* |
|
2 * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. |
|
3 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. |
|
4 */ |
|
5 |
|
6 #include "precompiled.hpp" |
|
7 #include "gc/z/zBitField.hpp" |
|
8 #include "unittest.hpp" |
|
9 |
|
10 TEST(ZBitFieldTest, test) { |
|
11 typedef ZBitField<uint64_t, bool, 0, 1> field_bool; |
|
12 typedef ZBitField<uint64_t, uint8_t, 1, 8> field_uint8; |
|
13 typedef ZBitField<uint64_t, uint16_t, 2, 16> field_uint16; |
|
14 typedef ZBitField<uint64_t, uint32_t, 32, 32> field_uint32; |
|
15 typedef ZBitField<uint64_t, uint64_t, 0, 63> field_uint64; |
|
16 typedef ZBitField<uint64_t, void*, 1, 61, 3> field_pointer; |
|
17 |
|
18 uint64_t entry; |
|
19 |
|
20 { |
|
21 const bool value = false; |
|
22 entry = field_bool::encode(value); |
|
23 EXPECT_EQ(field_bool::decode(entry), value) << "Should be equal"; |
|
24 } |
|
25 |
|
26 { |
|
27 const bool value = true; |
|
28 entry = field_bool::encode(value); |
|
29 EXPECT_EQ(field_bool::decode(entry), value) << "Should be equal"; |
|
30 } |
|
31 |
|
32 { |
|
33 const uint8_t value = ~(uint8_t)0; |
|
34 entry = field_uint8::encode(value); |
|
35 EXPECT_EQ(field_uint8::decode(entry), value) << "Should be equal"; |
|
36 } |
|
37 |
|
38 { |
|
39 const uint16_t value = ~(uint16_t)0; |
|
40 entry = field_uint16::encode(value); |
|
41 EXPECT_EQ(field_uint16::decode(entry), value) << "Should be equal"; |
|
42 } |
|
43 |
|
44 { |
|
45 const uint32_t value = ~(uint32_t)0; |
|
46 entry = field_uint32::encode(value); |
|
47 EXPECT_EQ(field_uint32::decode(entry), value) << "Should be equal"; |
|
48 } |
|
49 |
|
50 { |
|
51 const uint64_t value = ~(uint64_t)0 >> 1; |
|
52 entry = field_uint64::encode(value); |
|
53 EXPECT_EQ(field_uint64::decode(entry), value) << "Should be equal"; |
|
54 } |
|
55 |
|
56 { |
|
57 void* const value = (void*)(~(uintptr_t)0 << 3); |
|
58 entry = field_pointer::encode(value); |
|
59 EXPECT_EQ(field_pointer::decode(entry), value) << "Should be equal"; |
|
60 } |
|
61 } |