Implement full support for non-pointer pointers in custom allocators for string. This completes the custom pointer support for the entire library.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@185167 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Howard Hinnant
2013-06-28 16:59:19 +00:00
parent 2c39cbe020
commit 9dcdcdee25
151 changed files with 5125 additions and 645 deletions

View File

@@ -16,6 +16,8 @@
#include <algorithm>
#include <cassert>
#include "../../min_allocator.h"
template <class S>
void
test(const S& s, typename S::size_type pos, typename S::size_type n)
@@ -35,10 +37,10 @@ test(const S& s, typename S::size_type pos, typename S::size_type n)
}
}
typedef std::string S;
int main()
{
{
typedef std::string S;
test(S(""), 0, 0);
test(S(""), 1, 0);
test(S("pniot"), 0, 0);
@@ -97,4 +99,68 @@ int main()
test(S("ktsrmnqagdecfhijpobl"), 19, 1);
test(S("lsaijeqhtrbgcdmpfkno"), 20, 0);
test(S("dplqartnfgejichmoskb"), 21, 0);
}
#if __cplusplus >= 201103L
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), 0, 0);
test(S(""), 1, 0);
test(S("pniot"), 0, 0);
test(S("htaob"), 0, 1);
test(S("fodgq"), 0, 2);
test(S("hpqia"), 0, 4);
test(S("qanej"), 0, 5);
test(S("dfkap"), 1, 0);
test(S("clbao"), 1, 1);
test(S("ihqrf"), 1, 2);
test(S("mekdn"), 1, 3);
test(S("ngtjf"), 1, 4);
test(S("srdfq"), 2, 0);
test(S("qkdrs"), 2, 1);
test(S("ikcrq"), 2, 2);
test(S("cdaih"), 2, 3);
test(S("dmajb"), 4, 0);
test(S("karth"), 4, 1);
test(S("lhcdo"), 5, 0);
test(S("acbsj"), 6, 0);
test(S("pbsjikaole"), 0, 0);
test(S("pcbahntsje"), 0, 1);
test(S("mprdjbeiak"), 0, 5);
test(S("fhepcrntko"), 0, 9);
test(S("eqmpaidtls"), 0, 10);
test(S("joidhalcmq"), 1, 0);
test(S("omigsphflj"), 1, 1);
test(S("kocgbphfji"), 1, 4);
test(S("onmjekafbi"), 1, 8);
test(S("fbslrjiqkm"), 1, 9);
test(S("oqmrjahnkg"), 5, 0);
test(S("jeidpcmalh"), 5, 1);
test(S("schfalibje"), 5, 2);
test(S("crliponbqe"), 5, 4);
test(S("igdscopqtm"), 5, 5);
test(S("qngpdkimlc"), 9, 0);
test(S("thdjgafrlb"), 9, 1);
test(S("hcjitbfapl"), 10, 0);
test(S("mgojkldsqh"), 11, 0);
test(S("gfshlcmdjreqipbontak"), 0, 0);
test(S("nadkhpfemgclosibtjrq"), 0, 1);
test(S("nkodajteqplrbifhmcgs"), 0, 10);
test(S("ofdrqmkeblthacpgijsn"), 0, 19);
test(S("gbmetiprqdoasckjfhln"), 0, 20);
test(S("bdfjqgatlksriohemnpc"), 1, 0);
test(S("crnklpmegdqfiashtojb"), 1, 1);
test(S("ejqcnahdrkfsmptilgbo"), 1, 9);
test(S("jsbtafedocnirgpmkhql"), 1, 18);
test(S("prqgnlbaejsmkhdctoif"), 1, 19);
test(S("qnmodrtkebhpasifgcjl"), 10, 0);
test(S("pejafmnokrqhtisbcdgl"), 10, 1);
test(S("cpebqsfmnjdolhkratgi"), 10, 5);
test(S("odnqkgijrhabfmcestlp"), 10, 9);
test(S("lmofqdhpkibagnrcjste"), 10, 10);
test(S("lgjqketopbfahrmnsicd"), 19, 0);
test(S("ktsrmnqagdecfhijpobl"), 19, 1);
test(S("lsaijeqhtrbgcdmpfkno"), 20, 0);
test(S("dplqartnfgejichmoskb"), 21, 0);
}
#endif
}