test/hotspot/gtest/gc/z/test_zBitField.cpp
changeset 50525 767cdb97f103
child 50975 b833992fa8fa
equal deleted inserted replaced
50524:04f4e983c2f7 50525:767cdb97f103
       
     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 }