From 707cc94fe52463870a9c6c8e2e66eaaa389e601d Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 24 Feb 2009 15:16:26 +0200 Subject: Start tracking XSD/e with git after version 3.0.0 --- tests/cxx/string/driver.cxx | 102 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 tests/cxx/string/driver.cxx (limited to 'tests/cxx/string/driver.cxx') diff --git a/tests/cxx/string/driver.cxx b/tests/cxx/string/driver.cxx new file mode 100644 index 0000000..4b8484a --- /dev/null +++ b/tests/cxx/string/driver.cxx @@ -0,0 +1,102 @@ +// file : tests/cxx/string/driver.cxx +// author : Boris Kolpackov +// copyright : Copyright (c) 2006-2009 Code Synthesis Tools CC +// license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +// Test xsde::cxx::string string type. +// +#include + +#include + +using xsde::cxx::string; + +int +main () +{ + // Start with un-initialized string. + // + { + string s; + assert (s.data () == 0 && s.size () == 0 && s.capacity () == 0); + } + + // Test initialization with an empty string. + // + { + string s; + s.assign ("", 0); + assert (s.size () == 0 && s.capacity () == 64 && s == ""); + } + + // String starts with at least 64 bytes. + // + { + string s; + s.assign ("aaa"); + assert (s.size () == 3 && s == "aaa" && s.capacity () == 64); + } + + + // If we grow beyond 32 it should be greater of new size and 2*64. + // + { + const char v[] = + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" // 32 + "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + "cccccccccccccccccccccccccccccccc"; + + string s; + s.assign ("aaa"); + s.assign (v); + assert (s.size () == 96 && s == v && s.capacity () == 128); + } + + // If we grow beyond 32 it should be greater of new size and 2*32. + // + { + const char v[] = + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" // 32 + "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + "cccccccccccccccccccccccccccccccc" + "dddddddddddddddddddddddddddddddd" + "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; + + string s; + s.assign ("aaa"); + s.assign (v); + assert (s.size () == 159 && s == v && s.capacity () == 160); + } + + // Make sure the new capacity is even. + // + { + const char v[] = + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" // 32 + "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + "cccccccccccccccccccccccccccccccc" + "dddddddddddddddddddddddddddddddd" + "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; + + string s; + s.assign ("aaa"); + s.assign (v); + assert (s.size () == 160 && s == v && s.capacity () == 162); + } + + // Test append + // + { + const char v[] = + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" // 32 + "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + "cccccccccccccccccccccccccccccccc" + "dddddddddddddddddddddddddddddddd" + "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; + + string s; + s.assign ("aaa"); + s.append (&v[3]); + assert (s.size () == 160 && s == v && s.capacity () == 162); + } +} -- cgit v1.1