From 3e519524c118651123eecf60c2bbc5d65ad9bac3 Mon Sep 17 00:00:00 2001 From: Howard Hinnant Date: Tue, 11 May 2010 19:42:16 +0000 Subject: libcxx initial import llvm-svn: 103490 --- .../string.cons/pointer_alloc.pass.cpp | 69 ++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 libcxx/test/strings/basic.string/string.cons/pointer_alloc.pass.cpp (limited to 'libcxx/test/strings/basic.string/string.cons/pointer_alloc.pass.cpp') diff --git a/libcxx/test/strings/basic.string/string.cons/pointer_alloc.pass.cpp b/libcxx/test/strings/basic.string/string.cons/pointer_alloc.pass.cpp new file mode 100644 index 00000000000..517e5f6f215 --- /dev/null +++ b/libcxx/test/strings/basic.string/string.cons/pointer_alloc.pass.cpp @@ -0,0 +1,69 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// + +// basic_string(const charT* s, const Allocator& a = Allocator()); + +#include +#include +#include +#include + +#include "../test_allocator.h" + +template +void +test(const charT* s) +{ + typedef std::basic_string, test_allocator > S; + typedef typename S::traits_type T; + typedef typename S::allocator_type A; + unsigned n = T::length(s); + S s2(s); + assert(s2.__invariants()); + assert(s2.size() == n); + assert(T::compare(s2.data(), s, n) == 0); + assert(s2.get_allocator() == A()); + assert(s2.capacity() >= s2.size()); +} + +template +void +test(const charT* s, const test_allocator& a) +{ + typedef std::basic_string, test_allocator > S; + typedef typename S::traits_type T; + typedef typename S::allocator_type A; + unsigned n = T::length(s); + S s2(s, a); + assert(s2.__invariants()); + assert(s2.size() == n); + assert(T::compare(s2.data(), s, n) == 0); + assert(s2.get_allocator() == a); + assert(s2.capacity() >= s2.size()); +} + +int main() +{ + typedef test_allocator A; + typedef std::basic_string, A> S; + + test(""); + test("", A(2)); + + test("1"); + test("1", A(2)); + + test("1234567980"); + test("1234567980", A(2)); + + test("123456798012345679801234567980123456798012345679801234567980"); + test("123456798012345679801234567980123456798012345679801234567980", A(2)); +} -- cgit v1.2.3