summaryrefslogtreecommitdiff
path: root/test/example/small_vector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/example/small_vector.cpp')
-rw-r--r--test/example/small_vector.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/example/small_vector.cpp b/test/example/small_vector.cpp
index 29d964997..a1e394e23 100644
--- a/test/example/small_vector.cpp
+++ b/test/example/small_vector.cpp
@@ -66,12 +66,47 @@ template<typename T> void test(size_t N) {
t.reserve(t.capacity() + 100);
assert(t.capacity() >= N + 100);
}
+ {
+ // Test resizing.
+ T t;
+
+ assert(t.empty());
+ t.resize(1);
+ assert(t.size() == 1);
+ t.resize(2);
+ assert(t.size() == 2);
+ t.resize(3);
+ assert(t.size() == 3);
+ t.resize(6);
+ assert(t.size() == 6);
+
+ // Now go in reverse.
+ t.resize(6);
+ assert(t.size() == 6);
+ t.resize(3);
+ assert(t.size() == 3);
+ t.resize(2);
+ assert(t.size() == 2);
+ t.resize(1);
+ assert(t.size() == 1);
+
+ // Test a big leap from nothing (rather than gradual increase as before).
+ t.clear();
+ assert(t.empty());
+ t.resize(6);
+ assert(t.size() == 6);
+ t.resize(2);
+ assert(t.size() == 2);
+ t.clear();
+ assert(t.empty());
+ }
}
int main() {
test<SmallVector<int, 0>>(0);
test<SmallVector<int, 1>>(1);
test<SmallVector<int, 2>>(2);
+ test<SmallVector<int, 3>>(3);
test<SmallVector<int, 10>>(10);
std::cout << "ok.\n";
}