1*d6d569fcSNico Weber //===-- sanitizer_vector_test.cpp -----------------------------------------===//
2*d6d569fcSNico Weber //
3*d6d569fcSNico Weber // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*d6d569fcSNico Weber // See https://llvm.org/LICENSE.txt for license information.
5*d6d569fcSNico Weber // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*d6d569fcSNico Weber //
7*d6d569fcSNico Weber //===----------------------------------------------------------------------===//
8*d6d569fcSNico Weber //
9*d6d569fcSNico Weber // This file is a part of *Sanitizer runtime.
10*d6d569fcSNico Weber //
11*d6d569fcSNico Weber //===----------------------------------------------------------------------===//
12*d6d569fcSNico Weber #include "sanitizer_common/sanitizer_vector.h"
13*d6d569fcSNico Weber #include "gtest/gtest.h"
14*d6d569fcSNico Weber
15*d6d569fcSNico Weber namespace __sanitizer {
16*d6d569fcSNico Weber
TEST(Vector,Basic)17*d6d569fcSNico Weber TEST(Vector, Basic) {
18*d6d569fcSNico Weber Vector<int> v;
19*d6d569fcSNico Weber EXPECT_EQ(v.Size(), 0u);
20*d6d569fcSNico Weber v.PushBack(42);
21*d6d569fcSNico Weber EXPECT_EQ(v.Size(), 1u);
22*d6d569fcSNico Weber EXPECT_EQ(v[0], 42);
23*d6d569fcSNico Weber v.PushBack(43);
24*d6d569fcSNico Weber EXPECT_EQ(v.Size(), 2u);
25*d6d569fcSNico Weber EXPECT_EQ(v[0], 42);
26*d6d569fcSNico Weber EXPECT_EQ(v[1], 43);
27*d6d569fcSNico Weber }
28*d6d569fcSNico Weber
TEST(Vector,Stride)29*d6d569fcSNico Weber TEST(Vector, Stride) {
30*d6d569fcSNico Weber Vector<int> v;
31*d6d569fcSNico Weber for (int i = 0; i < 1000; i++) {
32*d6d569fcSNico Weber v.PushBack(i);
33*d6d569fcSNico Weber EXPECT_EQ(v.Size(), i + 1u);
34*d6d569fcSNico Weber EXPECT_EQ(v[i], i);
35*d6d569fcSNico Weber }
36*d6d569fcSNico Weber for (int i = 0; i < 1000; i++) {
37*d6d569fcSNico Weber EXPECT_EQ(v[i], i);
38*d6d569fcSNico Weber }
39*d6d569fcSNico Weber }
40*d6d569fcSNico Weber
TEST(Vector,ResizeReduction)41*d6d569fcSNico Weber TEST(Vector, ResizeReduction) {
42*d6d569fcSNico Weber Vector<int> v;
43*d6d569fcSNico Weber v.PushBack(0);
44*d6d569fcSNico Weber v.PushBack(0);
45*d6d569fcSNico Weber EXPECT_EQ(v.Size(), 2u);
46*d6d569fcSNico Weber v.Resize(1);
47*d6d569fcSNico Weber EXPECT_EQ(v.Size(), 1u);
48*d6d569fcSNico Weber }
49*d6d569fcSNico Weber
50*d6d569fcSNico Weber } // namespace __sanitizer
51