xref: /minix3/external/bsd/libc++/dist/libcxx/test/strings/basic.string/string.cons/alloc.pass.cpp (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
14684ddb6SLionel Sambuc //===----------------------------------------------------------------------===//
24684ddb6SLionel Sambuc //
34684ddb6SLionel Sambuc //                     The LLVM Compiler Infrastructure
44684ddb6SLionel Sambuc //
54684ddb6SLionel Sambuc // This file is dual licensed under the MIT and the University of Illinois Open
64684ddb6SLionel Sambuc // Source Licenses. See LICENSE.TXT for details.
74684ddb6SLionel Sambuc //
84684ddb6SLionel Sambuc //===----------------------------------------------------------------------===//
94684ddb6SLionel Sambuc 
104684ddb6SLionel Sambuc // <string>
114684ddb6SLionel Sambuc 
124684ddb6SLionel Sambuc // explicit basic_string(const Allocator& a = Allocator());
134684ddb6SLionel Sambuc 
144684ddb6SLionel Sambuc #include <string>
154684ddb6SLionel Sambuc #include <cassert>
164684ddb6SLionel Sambuc 
17*0a6a1f1dSLionel Sambuc #include "test_allocator.h"
18*0a6a1f1dSLionel Sambuc #include "min_allocator.h"
194684ddb6SLionel Sambuc 
204684ddb6SLionel Sambuc template <class S>
214684ddb6SLionel Sambuc void
test()224684ddb6SLionel Sambuc test()
234684ddb6SLionel Sambuc {
244684ddb6SLionel Sambuc     {
254684ddb6SLionel Sambuc     S s;
264684ddb6SLionel Sambuc     assert(s.__invariants());
274684ddb6SLionel Sambuc     assert(s.data());
284684ddb6SLionel Sambuc     assert(s.size() == 0);
294684ddb6SLionel Sambuc     assert(s.capacity() >= s.size());
304684ddb6SLionel Sambuc     assert(s.get_allocator() == typename S::allocator_type());
314684ddb6SLionel Sambuc     }
324684ddb6SLionel Sambuc     {
334684ddb6SLionel Sambuc     S s(typename S::allocator_type(5));
344684ddb6SLionel Sambuc     assert(s.__invariants());
354684ddb6SLionel Sambuc     assert(s.data());
364684ddb6SLionel Sambuc     assert(s.size() == 0);
374684ddb6SLionel Sambuc     assert(s.capacity() >= s.size());
384684ddb6SLionel Sambuc     assert(s.get_allocator() == typename S::allocator_type(5));
394684ddb6SLionel Sambuc     }
404684ddb6SLionel Sambuc }
414684ddb6SLionel Sambuc 
424684ddb6SLionel Sambuc #if __cplusplus >= 201103L
434684ddb6SLionel Sambuc 
444684ddb6SLionel Sambuc template <class S>
454684ddb6SLionel Sambuc void
test2()464684ddb6SLionel Sambuc test2()
474684ddb6SLionel Sambuc {
484684ddb6SLionel Sambuc     {
494684ddb6SLionel Sambuc     S s;
504684ddb6SLionel Sambuc     assert(s.__invariants());
514684ddb6SLionel Sambuc     assert(s.data());
524684ddb6SLionel Sambuc     assert(s.size() == 0);
534684ddb6SLionel Sambuc     assert(s.capacity() >= s.size());
544684ddb6SLionel Sambuc     assert(s.get_allocator() == typename S::allocator_type());
554684ddb6SLionel Sambuc     }
564684ddb6SLionel Sambuc     {
574684ddb6SLionel Sambuc     S s(typename S::allocator_type{});
584684ddb6SLionel Sambuc     assert(s.__invariants());
594684ddb6SLionel Sambuc     assert(s.data());
604684ddb6SLionel Sambuc     assert(s.size() == 0);
614684ddb6SLionel Sambuc     assert(s.capacity() >= s.size());
624684ddb6SLionel Sambuc     assert(s.get_allocator() == typename S::allocator_type());
634684ddb6SLionel Sambuc     }
644684ddb6SLionel Sambuc }
654684ddb6SLionel Sambuc 
664684ddb6SLionel Sambuc #endif
674684ddb6SLionel Sambuc 
main()684684ddb6SLionel Sambuc int main()
694684ddb6SLionel Sambuc {
704684ddb6SLionel Sambuc     test<std::basic_string<char, std::char_traits<char>, test_allocator<char> > >();
714684ddb6SLionel Sambuc #if __cplusplus >= 201103L
724684ddb6SLionel Sambuc     test2<std::basic_string<char, std::char_traits<char>, min_allocator<char> > >();
734684ddb6SLionel Sambuc #endif
744684ddb6SLionel Sambuc }
75