| // | |
| // Copyright 2017 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. | |
| // | |
| // Unit tests for VertexArray and related classes. | |
| // | |
| #include "gmock/gmock.h" | |
| #include "gtest/gtest.h" | |
| #include "common/bitset_utils.h" | |
| #include "common/utilities.h" | |
| #include "libANGLE/VertexArray.h" | |
| using namespace gl; | |
| // Tests that function GetIndexFromDirtyBit computes the index properly. | |
| TEST(VertexArrayTest, VerifyGetIndexFromDirtyBit) | |
| { | |
| VertexArray::DirtyBits dirtyBits; | |
| constexpr size_t bits[] = {1, 4, 9, 16, 25, 35}; | |
| constexpr GLint count = sizeof(bits) / sizeof(size_t); | |
| for (GLint i = 0; i < count; i++) | |
| { | |
| dirtyBits.set(bits[i]); | |
| } | |
| for (size_t dirtyBit : dirtyBits) | |
| { | |
| const size_t index = VertexArray::GetVertexIndexFromDirtyBit(dirtyBit); | |
| if (dirtyBit < VertexArray::DIRTY_BIT_ATTRIB_0) | |
| { | |
| continue; | |
| } | |
| else if (dirtyBit < VertexArray::DIRTY_BIT_ATTRIB_MAX) | |
| { | |
| EXPECT_EQ(dirtyBit - VertexArray::DIRTY_BIT_ATTRIB_0, index); | |
| } | |
| else if (dirtyBit < VertexArray::DIRTY_BIT_BINDING_MAX) | |
| { | |
| EXPECT_EQ(dirtyBit - VertexArray::DIRTY_BIT_BINDING_0, index); | |
| } | |
| else if (dirtyBit < VertexArray::DIRTY_BIT_BUFFER_DATA_MAX) | |
| { | |
| EXPECT_EQ(dirtyBit - VertexArray::DIRTY_BIT_BUFFER_DATA_0, index); | |
| } | |
| else | |
| ASSERT_TRUE(false); | |
| } | |
| } |