Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / libc++ / trunk / test / containers / sequences / vector / vector.modifiers / push_back.pass.cpp
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 }