Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/src/common/FixedVector_unittest.cpp
1693 views
1
//
2
// Copyright 2018 The ANGLE Project Authors. All rights reserved.
3
// Use of this source code is governed by a BSD-style license that can be
4
// found in the LICENSE file.
5
//
6
// FixedVector_unittest:
7
// Tests of the FixedVector class
8
//
9
10
#include <gtest/gtest.h>
11
12
#include "common/FixedVector.h"
13
14
namespace angle
15
{
16
// Make sure the various constructors compile and do basic checks
17
TEST(FixedVector, Constructors)
18
{
19
FixedVector<int, 5> defaultContructor;
20
EXPECT_EQ(0u, defaultContructor.size());
21
22
FixedVector<int, 5> count(3);
23
EXPECT_EQ(3u, count.size());
24
25
FixedVector<int, 5> countAndValue(3, 2);
26
EXPECT_EQ(3u, countAndValue.size());
27
EXPECT_EQ(2, countAndValue[1]);
28
29
FixedVector<int, 5> copy(countAndValue);
30
EXPECT_EQ(copy, countAndValue);
31
32
FixedVector<int, 5> copyRValue(std::move(count));
33
EXPECT_EQ(3u, copyRValue.size());
34
35
FixedVector<int, 5> initializerList{1, 2, 3, 4, 5};
36
EXPECT_EQ(5u, initializerList.size());
37
EXPECT_EQ(3, initializerList[2]);
38
39
FixedVector<int, 5> assignCopy(copyRValue);
40
EXPECT_EQ(3u, assignCopy.size());
41
42
FixedVector<int, 5> assignRValue(std::move(assignCopy));
43
EXPECT_EQ(3u, assignRValue.size());
44
45
FixedVector<int, 5> assignmentInitializerList = {1, 2, 3, 4, 5};
46
EXPECT_EQ(5u, assignmentInitializerList.size());
47
EXPECT_EQ(3, assignmentInitializerList[2]);
48
}
49
50
// Test indexing operations (at, operator[])
51
TEST(FixedVector, Indexing)
52
{
53
FixedVector<int, 5> vec = {0, 1, 2, 3, 4};
54
EXPECT_EQ(0, vec.at(0));
55
EXPECT_EQ(vec[0], vec.at(0));
56
}
57
58
// Test the push_back functions
59
TEST(FixedVector, PushBack)
60
{
61
FixedVector<int, 5> vec;
62
vec.push_back(1);
63
EXPECT_EQ(1, vec[0]);
64
vec.push_back(1);
65
vec.push_back(1);
66
vec.push_back(1);
67
vec.push_back(1);
68
EXPECT_EQ(vec.size(), vec.max_size());
69
}
70
71
// Test the pop_back function
72
TEST(FixedVector, PopBack)
73
{
74
FixedVector<int, 5> vec;
75
vec.push_back(1);
76
EXPECT_EQ(1, (int)vec.size());
77
vec.pop_back();
78
EXPECT_EQ(0, (int)vec.size());
79
}
80
81
// Test the back function
82
TEST(FixedVector, Back)
83
{
84
FixedVector<int, 5> vec;
85
vec.push_back(1);
86
vec.push_back(2);
87
EXPECT_EQ(2, vec.back());
88
}
89
90
// Test the sizing operations
91
TEST(FixedVector, Size)
92
{
93
FixedVector<int, 5> vec;
94
EXPECT_TRUE(vec.empty());
95
EXPECT_EQ(0u, vec.size());
96
EXPECT_EQ(5u, vec.max_size());
97
98
vec.push_back(1);
99
EXPECT_FALSE(vec.empty());
100
EXPECT_EQ(1u, vec.size());
101
}
102
103
// Test clearing the vector
104
TEST(FixedVector, Clear)
105
{
106
FixedVector<int, 5> vec = {0, 1, 2, 3, 4};
107
vec.clear();
108
EXPECT_TRUE(vec.empty());
109
}
110
111
// Test resizing the vector
112
TEST(FixedVector, Resize)
113
{
114
FixedVector<int, 5> vec;
115
vec.resize(5u, 1);
116
EXPECT_EQ(5u, vec.size());
117
EXPECT_EQ(1, vec[4]);
118
119
vec.resize(2u);
120
EXPECT_EQ(2u, vec.size());
121
}
122
123
// Test iterating over the vector
124
TEST(FixedVector, Iteration)
125
{
126
FixedVector<int, 5> vec = {0, 1, 2, 3};
127
128
int vistedCount = 0;
129
for (int value : vec)
130
{
131
EXPECT_EQ(vistedCount, value);
132
vistedCount++;
133
}
134
EXPECT_EQ(4, vistedCount);
135
}
136
137
// Test the "full" method.
138
TEST(FixedVector, Full)
139
{
140
FixedVector<int, 2> vec;
141
142
EXPECT_FALSE(vec.full());
143
vec.push_back(0);
144
EXPECT_FALSE(vec.full());
145
vec.push_back(1);
146
EXPECT_TRUE(vec.full());
147
}
148
} // namespace angle
149
150