52 lines
1.5 KiB
C++
52 lines
1.5 KiB
C++
//
|
|
// 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);
|
|
}
|
|
}
|