From ce492a427632cc7da9607a6a5a53a7a996411226 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 12 Jan 2017 12:06:51 +0200 Subject: Add small_vector workaround for VC --- tests/small-vector/driver.cxx | 64 +++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 23 deletions(-) (limited to 'tests') diff --git a/tests/small-vector/driver.cxx b/tests/small-vector/driver.cxx index ae9e2a6..f4914de 100644 --- a/tests/small-vector/driver.cxx +++ b/tests/small-vector/driver.cxx @@ -24,14 +24,17 @@ small (const small_vector& v) int main () { - using vector = small_vector; + using vector = small_vector; { vector v; - assert (v.capacity () == 1 && small (v)); + assert (v.capacity () == 2 && small (v)); v.push_back ("abc"); - assert (v[0] == "abc" && v.capacity () == 1 && small (v)); + assert (v[0] == "abc" && v.capacity () == 2 && small (v)); + + v.push_back ("ABC"); + assert (v[1] == "ABC" && v.capacity () == 2 && small (v)); string* d (v.data ()); // Small buffer... @@ -49,10 +52,10 @@ main () vector v1, v2; assert (v1.get_allocator () != v2.get_allocator ()); // stack/stack - v1.assign ({"abc", "xyz"}); + v1.assign ({"abc", "ABC", "xyz"}); assert (v1.get_allocator () != v2.get_allocator ()); // heap/stack - v2.assign ({"abc", "xyz"}); + v2.assign ({"abc", "ABC", "xyz"}); assert (v1.get_allocator () == v2.get_allocator ()); // heap/heap v1.pop_back (); @@ -68,9 +71,9 @@ main () // { vector s1 ({"abc"}), s2 (s1); - assert (s1 == s2 && s2.capacity () == 1 && small (s2)); + assert (s1 == s2 && s2.capacity () == 2 && small (s2)); - vector l1 ({"abc", "xyz"}), l2 (l1); + vector l1 ({"abc", "ABC", "xyz"}), l2 (l1); assert (l1 == l2 && !small (l2)); } @@ -89,15 +92,30 @@ main () mstring& operator= (const mstring&) = delete; }; - using vector = small_vector; + using vector = small_vector; - vector s1; s1.emplace_back ("abc"); - vector s2 (move (s1)); - assert (s2[0] == "abc" && s2.capacity () == 1 && small (s2)); + { + vector s1; + s1.emplace_back ("abc"); + vector s2 (move (s1)); + assert (s2[0] == "abc" && s2.capacity () == 2 && small (s2)); + } - vector l1; l1.emplace_back ("abc"); l1.emplace_back ("xyz"); + { + vector s1; + s1.emplace_back ("abc"); + s1.emplace_back ("ABC"); + vector s2 (move (s1)); + assert (s2[0] == "abc" && s2[1] == "ABC" && + s2.capacity () == 2 && small (s2)); + } + + vector l1; + l1.emplace_back ("abc"); + l1.emplace_back ("ABC"); + l1.emplace_back ("xyz"); vector l2 (move (l1)); - assert (l2[0] == "abc" && l2[1] == "xyz" && !small (l2)); + assert (l2[0] == "abc" && l2[1] == "ABC" && l2[2] == "xyz" && !small (l2)); } // Other constructors. @@ -105,28 +123,28 @@ main () { const char* sa[] = {"abc"}; - const char* la[] = {"abc", "xyz"}; + const char* la[] = {"abc", "ABC", "xyz"}; vector s (sa, sa + 1); - assert (s[0] == "abc" && s.capacity () == 1 && small (s)); + assert (s[0] == "abc" && s.capacity () == 2 && small (s)); - vector l (la, la + 2); - assert (l[0] == "abc" && l[1] == "xyz" && !small (l)); + vector l (la, la + 3); + assert (l[0] == "abc" && l[1] == "ABC" && l[2] == "xyz" && !small (l)); } { vector s (1, "abc"); - assert (s[0] == "abc" && s.capacity () == 1 && small (s)); + assert (s[0] == "abc" && s.capacity () == 2 && small (s)); - vector l (2, "abc"); - assert (l[0] == "abc" && l[1] == "abc" && !small (l)); + vector l (3, "abc"); + assert (l[0] == "abc" && l[2] == "abc" && !small (l)); } { vector s (1); - assert (s[0] == "" && s.capacity () == 1 && small (s)); + assert (s[0] == "" && s.capacity () == 2 && small (s)); - vector l (2); - assert (l[0] == "" && l[1] == "" && !small (l)); + vector l (3); + assert (l[0] == "" && l[2] == "" && !small (l)); } } -- cgit v1.1