--- /dev/null 2018-04-03 12:55:20.301839954 +0200 +++ new/test/hotspot/gtest/gc/z/test_zBitField.cpp 2018-06-08 19:47:00.111452429 +0200 @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + */ + +#include "precompiled.hpp" +#include "gc/z/zBitField.hpp" +#include "unittest.hpp" + +TEST(ZBitFieldTest, test) { + typedef ZBitField field_bool; + typedef ZBitField field_uint8; + typedef ZBitField field_uint16; + typedef ZBitField field_uint32; + typedef ZBitField field_uint64; + typedef ZBitField field_pointer; + + uint64_t entry; + + { + const bool value = false; + entry = field_bool::encode(value); + EXPECT_EQ(field_bool::decode(entry), value) << "Should be equal"; + } + + { + const bool value = true; + entry = field_bool::encode(value); + EXPECT_EQ(field_bool::decode(entry), value) << "Should be equal"; + } + + { + const uint8_t value = ~(uint8_t)0; + entry = field_uint8::encode(value); + EXPECT_EQ(field_uint8::decode(entry), value) << "Should be equal"; + } + + { + const uint16_t value = ~(uint16_t)0; + entry = field_uint16::encode(value); + EXPECT_EQ(field_uint16::decode(entry), value) << "Should be equal"; + } + + { + const uint32_t value = ~(uint32_t)0; + entry = field_uint32::encode(value); + EXPECT_EQ(field_uint32::decode(entry), value) << "Should be equal"; + } + + { + const uint64_t value = ~(uint64_t)0 >> 1; + entry = field_uint64::encode(value); + EXPECT_EQ(field_uint64::decode(entry), value) << "Should be equal"; + } + + { + void* const value = (void*)(~(uintptr_t)0 << 3); + entry = field_pointer::encode(value); + EXPECT_EQ(field_pointer::decode(entry), value) << "Should be equal"; + } +}