1 /*++
2 Copyright (c) 2006 Microsoft Corporation
3 
4 Module Name:
5 
6     tst_vector.cpp
7 
8 Abstract:
9 
10     Test my vector template.
11 
12 Author:
13 
14     Leonardo de Moura (leonardo) 2006-09-11.
15 
16 Revision History:
17 
18 --*/
19 #include "util/vector.h"
20 
tst1()21 static void tst1() {
22     svector<int> v1;
23     ENSURE(v1.empty());
24     for (unsigned i = 0; i < 1000; i++) {
25         v1.push_back(i + 3);
26         ENSURE(static_cast<unsigned>(v1[i]) == i + 3);
27         ENSURE(v1.capacity() >= v1.size());
28         ENSURE(!v1.empty());
29     }
30     for (unsigned i = 0; i < 1000; i++) {
31         ENSURE(static_cast<unsigned>(v1[i]) == i + 3);
32     }
33     svector<int>::iterator it = v1.begin();
34     svector<int>::iterator end = v1.end();
35     for (int i = 0; it != end; ++it, ++i) {
36         ENSURE(*it == i + 3);
37     }
38     for (unsigned i = 0; i < 1000; i++) {
39         ENSURE(static_cast<unsigned>(v1.back()) == 1000 - i - 1 + 3);
40         ENSURE(v1.size() == 1000 - i);
41         v1.pop_back();
42     }
43     ENSURE(v1.empty());
44     ENSURE(v1.empty());
45     unsigned i = 1000000000;
46     while (true) {
47         std::cout << "resize " << i << "\n";
48         try {
49             v1.resize(i);
50         }
51         catch (z3_exception& e) {
52             std::cout << e.msg() << "\n";
53             break;
54         }
55         i *= 2;
56     }
57 }
58 
tst_vector()59 void tst_vector() {
60     tst1();
61 }
62