// Copyright 2018 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // ImmutableString_test.cpp: // Tests for ImmutableString and ImmutableStringBuilder. #include "compiler/translator/ImmutableString.h" #include "compiler/translator/ImmutableStringBuilder.h" #include "compiler/translator/PoolAlloc.h" #include "gtest/gtest.h" using namespace sh; class ImmutableStringBuilderTest : public testing::Test { public: ImmutableStringBuilderTest() {} protected: void SetUp() override { allocator.push(); SetGlobalPoolAllocator(&allocator); } void TearDown() override { SetGlobalPoolAllocator(nullptr); allocator.pop(); } angle::PoolAllocator allocator; }; // Test writing a 32-bit signed int as hexadecimal using ImmutableStringBuilder. TEST_F(ImmutableStringBuilderTest, AppendHexInt32) { int32_t i = -1; ImmutableStringBuilder strBuilder(2 * sizeof(int32_t)); strBuilder.appendHex(i); ImmutableString str = strBuilder; EXPECT_EQ(std::string("ffffffff"), str.data()); } // Test writing a 32-bit unsigned int as hexadecimal using ImmutableStringBuilder. TEST_F(ImmutableStringBuilderTest, AppendHexUint32) { uint32_t i = 0x1234beefu; ImmutableStringBuilder strBuilder(2 * sizeof(uint32_t)); strBuilder.appendHex(i); ImmutableString str = strBuilder; EXPECT_EQ(std::string("1234beef"), str.data()); } // Test writing a 64-bit signed int as hexadecimal using ImmutableStringBuilder. TEST_F(ImmutableStringBuilderTest, AppendHexInt64) { int64_t i = -1; ImmutableStringBuilder strBuilder(2 * sizeof(int64_t)); strBuilder.appendHex(i); ImmutableString str = strBuilder; EXPECT_EQ(std::string("ffffffffffffffff"), str.data()); } // Test writing a 64-bit unsigned int as hexadecimal using ImmutableStringBuilder. TEST_F(ImmutableStringBuilderTest, AppendHexUint64) { uint64_t i = 0xfeedcafe9876beefull; ImmutableStringBuilder strBuilder(2 * sizeof(uint64_t)); strBuilder.appendHex(i); ImmutableString str = strBuilder; EXPECT_EQ(std::string("feedcafe9876beef"), str.data()); }