1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // <vector> 11 12 // void push_back(const value_type& x); 13 14 #include <vector> 15 #include <cassert> 16 #include "../../../stack_allocator.h" 17 #include "min_allocator.h" 18 #include "asan_testing.h" 19 20 int main() 21 { 22 { 23 std::vector<int> c; 24 c.push_back(0); 25 assert(c.size() == 1); 26 assert(is_contiguous_container_asan_correct(c)); 27 for (int j = 0; j < c.size(); ++j) 28 assert(c[j] == j); 29 c.push_back(1); 30 assert(c.size() == 2); 31 assert(is_contiguous_container_asan_correct(c)); 32 for (int j = 0; j < c.size(); ++j) 33 assert(c[j] == j); 34 c.push_back(2); 35 assert(c.size() == 3); 36 assert(is_contiguous_container_asan_correct(c)); 37 for (int j = 0; j < c.size(); ++j) 38 assert(c[j] == j); 39 c.push_back(3); 40 assert(c.size() == 4); 41 assert(is_contiguous_container_asan_correct(c)); 42 for (int j = 0; j < c.size(); ++j) 43 assert(c[j] == j); 44 c.push_back(4); 45 assert(c.size() == 5); 46 assert(is_contiguous_container_asan_correct(c)); 47 for (int j = 0; j < c.size(); ++j) 48 assert(c[j] == j); 49 } 50 { 51 std::vector<int, stack_allocator<int, 15> > c; 52 c.push_back(0); 53 assert(c.size() == 1); 54 assert(is_contiguous_container_asan_correct(c)); 55 for (int j = 0; j < c.size(); ++j) 56 assert(c[j] == j); 57 c.push_back(1); 58 assert(c.size() == 2); 59 assert(is_contiguous_container_asan_correct(c)); 60 for (int j = 0; j < c.size(); ++j) 61 assert(c[j] == j); 62 c.push_back(2); 63 assert(c.size() == 3); 64 assert(is_contiguous_container_asan_correct(c)); 65 for (int j = 0; j < c.size(); ++j) 66 assert(c[j] == j); 67 c.push_back(3); 68 assert(c.size() == 4); 69 assert(is_contiguous_container_asan_correct(c)); 70 for (int j = 0; j < c.size(); ++j) 71 assert(c[j] == j); 72 c.push_back(4); 73 assert(c.size() == 5); 74 assert(is_contiguous_container_asan_correct(c)); 75 for (int j = 0; j < c.size(); ++j) 76 assert(c[j] == j); 77 } 78 #if __cplusplus >= 201103L 79 { 80 std::vector<int, min_allocator<int>> c; 81 c.push_back(0); 82 assert(c.size() == 1); 83 assert(is_contiguous_container_asan_correct(c)); 84 for (int j = 0; j < c.size(); ++j) 85 assert(c[j] == j); 86 c.push_back(1); 87 assert(c.size() == 2); 88 assert(is_contiguous_container_asan_correct(c)); 89 for (int j = 0; j < c.size(); ++j) 90 assert(c[j] == j); 91 c.push_back(2); 92 assert(c.size() == 3); 93 assert(is_contiguous_container_asan_correct(c)); 94 for (int j = 0; j < c.size(); ++j) 95 assert(c[j] == j); 96 c.push_back(3); 97 assert(c.size() == 4); 98 assert(is_contiguous_container_asan_correct(c)); 99 for (int j = 0; j < c.size(); ++j) 100 assert(c[j] == j); 101 c.push_back(4); 102 assert(c.size() == 5); 103 assert(is_contiguous_container_asan_correct(c)); 104 for (int j = 0; j < c.size(); ++j) 105 assert(c[j] == j); 106 } 107 #endif 108 } 109