blob: eceabaa81598306ecea1997fdffc382eac7a9aa1 [file] [log] [blame]
//===-- Unittests for byte ------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "src/__support/CPP/cstddef.h"
#include "src/__support/macros/config.h"
#include "test/UnitTest/Test.h"
namespace LIBC_NAMESPACE_DECL {
namespace cpp {
TEST(LlvmLibcByteTest, to_integer) {
const char str[] = "abc";
const byte *const ptr = reinterpret_cast<const byte *>(str);
ASSERT_EQ(to_integer<char>(ptr[0]), 'a');
ASSERT_EQ(to_integer<char>(ptr[1]), 'b');
ASSERT_EQ(to_integer<char>(ptr[2]), 'c');
ASSERT_EQ(to_integer<char>(ptr[3]), '\0');
}
TEST(LlvmLibcByteTest, bitwise) {
byte b{42};
ASSERT_EQ(b, byte{0b00101010});
b <<= 1;
ASSERT_EQ(b, byte{0b01010100});
b >>= 1;
ASSERT_EQ((b << 1), byte{0b01010100});
ASSERT_EQ((b >> 1), byte{0b00010101});
b |= byte{0b11110000};
ASSERT_EQ(b, byte{0b11111010});
b &= byte{0b11110000};
ASSERT_EQ(b, byte{0b11110000});
b ^= byte{0b11111111};
ASSERT_EQ(b, byte{0b00001111});
}
} // namespace cpp
} // namespace LIBC_NAMESPACE_DECL