1//===-- tsan_vector_test.cc -----------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file is a part of ThreadSanitizer (TSan), a race detector. 11// 12//===----------------------------------------------------------------------===// 13#include "tsan_vector.h" 14#include "tsan_rtl.h" 15#include "gtest/gtest.h" 16 17namespace __tsan { 18 19TEST(Vector, Basic) { 20 ScopedInRtl in_rtl; 21 Vector<int> v(MBlockScopedBuf); 22 EXPECT_EQ(v.Size(), (uptr)0); 23 v.PushBack(42); 24 EXPECT_EQ(v.Size(), (uptr)1); 25 EXPECT_EQ(v[0], 42); 26 v.PushBack(43); 27 EXPECT_EQ(v.Size(), (uptr)2); 28 EXPECT_EQ(v[0], 42); 29 EXPECT_EQ(v[1], 43); 30} 31 32TEST(Vector, Stride) { 33 ScopedInRtl in_rtl; 34 Vector<int> v(MBlockScopedBuf); 35 for (int i = 0; i < 1000; i++) { 36 v.PushBack(i); 37 EXPECT_EQ(v.Size(), (uptr)(i + 1)); 38 EXPECT_EQ(v[i], i); 39 } 40 for (int i = 0; i < 1000; i++) { 41 EXPECT_EQ(v[i], i); 42 } 43} 44 45} // namespace __tsan 46