diff options
author | Howard Hinnant <hhinnant@apple.com> | 2010-05-16 12:42:38 +0000 |
---|---|---|
committer | Howard Hinnant <hhinnant@apple.com> | 2010-05-16 12:42:38 +0000 |
commit | 70d0fe5faec916b5d27c1a83d3849ac2ac3a8e0a (patch) | |
tree | fb2dfca3f9908866adfeb76478d23c7c55f791f4 /libcxx/test/strings/basic.string/string.ops/string_substr | |
parent | 5c6ec8c797bb660521b098162959bd6f92ba78da (diff) | |
download | bcm5719-llvm-70d0fe5faec916b5d27c1a83d3849ac2ac3a8e0a.tar.gz bcm5719-llvm-70d0fe5faec916b5d27c1a83d3849ac2ac3a8e0a.zip |
Replaced :: with _ in several path names
llvm-svn: 103906
Diffstat (limited to 'libcxx/test/strings/basic.string/string.ops/string_substr')
-rw-r--r-- | libcxx/test/strings/basic.string/string.ops/string_substr/substr.pass.cpp | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/libcxx/test/strings/basic.string/string.ops/string_substr/substr.pass.cpp b/libcxx/test/strings/basic.string/string.ops/string_substr/substr.pass.cpp new file mode 100644 index 00000000000..7ca4b991fe6 --- /dev/null +++ b/libcxx/test/strings/basic.string/string.ops/string_substr/substr.pass.cpp @@ -0,0 +1,100 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <string> + +// basic_string substr(size_type pos = 0, size_type n = npos) const; + +#include <string> +#include <stdexcept> +#include <algorithm> +#include <cassert> + +template <class S> +void +test(const S& s, typename S::size_type pos, typename S::size_type n) +{ + try + { + S str = s.substr(pos, n); + assert(str.__invariants()); + assert(pos <= s.size()); + typename S::size_type rlen = std::min(n, s.size() - pos); + assert(str.size() == rlen); + assert(S::traits_type::compare(s.data()+pos, str.data(), rlen) == 0); + } + catch (std::out_of_range&) + { + assert(pos > s.size()); + } +} + +typedef std::string S; + +int main() +{ + 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); +} |