Edit

kc3-lang/angle/src/tests/compiler_tests/ImmutableString_test.cpp

Branch :

  • Show log

    Commit

  • Author : Olli Etuaho
    Date : 2018-04-06 11:27:03
    Hash : 5ae64c94
    Message : Fix writing hex values in ImmutableStringBuilder The old code was accidentally using letters offset by 10 when writing out hex values >= 10. Now the letters a to f are used as they should. This is one issue that changed shader output when ImmutableString was introduced, so it is a potential cause for a regression detailed in bug 824062, though this has not been verified. BUG=chromium:824062 TEST=angle_unittests Change-Id: Idb871dffba32a3ab20df0fe17b4b1a98ec00b7fa Reviewed-on: https://chromium-review.googlesource.com/999480 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>

  • src/tests/compiler_tests/ImmutableString_test.cpp
  • // 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();
        }
    
        TPoolAllocator 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());
    }