get_string_en_US.pass.cpp revision e2f2a15066552758a508e8a7325e0ccad4a5389b
1f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com//===----------------------------------------------------------------------===// 2a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// 3a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// The LLVM Compiler Infrastructure 4a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// 5a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// This file is dual licensed under the MIT and the University of Illinois Open 6a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// Source Licenses. See LICENSE.TXT for details. 7a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// 8a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org//===----------------------------------------------------------------------===// 9a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 10a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// <locale> 11a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 12a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// class money_get<charT, InputIterator> 13a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 14a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// iter_type get(iter_type b, iter_type e, bool intl, ios_base& iob, 15a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// ios_base::iostate& err, string_type& v) const; 16a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 17a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#include <locale> 18a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#include <ios> 19a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#include <streambuf> 20a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#include <cassert> 21a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#include "iterators.h" 22a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 23a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgtypedef std::money_get<char, input_iterator<const char*> > Fn; 24a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 25a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgclass my_facet 26a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org : public Fn 27a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org{ 28a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgpublic: 29a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org explicit my_facet(std::size_t refs = 0) 30a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org : Fn(refs) {} 31a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org}; 327979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org 331c09276ce2ac5214e81ca554360b9f101187893blrn@chromium.orgtypedef std::money_get<wchar_t, input_iterator<const wchar_t*> > Fw; 34a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 35fb144a0716afe7ab8bf245f2391a9e53b3db3c89fschneider@chromium.orgclass my_facetw 36c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org : public Fw 377979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org{ 38a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgpublic: 39ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org explicit my_facetw(std::size_t refs = 0) 40ddda9e81d3175130f2029c0e1205d265a00c32edjkummerow@chromium.org : Fw(refs) {} 41a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org}; 42a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 43a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgint main() 44a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org{ 45a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios ios(0); 46a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string loc_name("en_US.UTF-8"); 47a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org ios.imbue(std::locale(ios.getloc(), 48a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org new std::moneypunct_byname<char, false>(loc_name))); 491510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org ios.imbue(std::locale(ios.getloc(), 50a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org new std::moneypunct_byname<char, true>(loc_name))); 51a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org ios.imbue(std::locale(ios.getloc(), 52a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org new std::moneypunct_byname<wchar_t, false>(loc_name))); 53a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org ios.imbue(std::locale(ios.getloc(), 54a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org new std::moneypunct_byname<wchar_t, true>(loc_name))); 55a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { 56a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org const my_facet f(1); 57dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org // char, national 58837a67edd9afdbfe1b59482b41693f59c48846ffulan@chromium.org { // zero 5933e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org std::string v = "0.00"; 60a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const char*> I; 61a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string ex; 62a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 63a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 64a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org false, ios, err, ex); 65a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 6631b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org assert(err == std::ios_base::eofbit); 67a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == "0"); 68a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 6994b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org { // negative one 70a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string v = "-0.01"; 71a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const char*> I; 72a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string ex; 73a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 74c3b37129d6387b2db313f9100256d2d5f60dd9a8jkummerow@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 75a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org false, ios, err, ex); 76a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 77876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org assert(err == std::ios_base::eofbit); 784f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org assert(ex == "-1"); 79a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 80a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // positive 81a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string v = "1,234,567.89"; 82a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const char*> I; 83a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string ex; 84a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 85a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 864a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org false, ios, err, ex); 87a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 88a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 89594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org assert(ex == "123456789"); 90a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 91a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // negative 921510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org std::string v = "-1,234,567.89"; 93a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const char*> I; 941456e708d277e725ca42a03463af16fe471c9210jkummerow@chromium.org std::string ex; 95c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 96c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 97c53e10d01c5495df3896b9d318910b58688c6929kmillikin@chromium.org false, ios, err, ex); 984f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org assert(iter.base() == v.data() + v.size()); 99e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org assert(err == std::ios_base::eofbit); 100c00ec2b94bc5505fa81f81daefd956f5a8776a09danno@chromium.org assert(ex == "-123456789"); 1014f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org } 1024f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org { // negative 1030a4e901cdfb5505a896d30aa8c2e04fce0fbe069vegorov@chromium.org std::string v = "-1234567.89"; 104a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const char*> I; 10583aa54905e559090bea7771b83f188762cfcf082ricow@chromium.org std::string ex; 106c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 1074e308cf00936c6e7bead43e5141a04e37b49b9b5jkummerow@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 10856454717593e7552d6846198b8e0f661fa36a3cayangguo@chromium.org false, ios, err, ex); 109a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 110a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 11146a2a51ad190697e0f62c3060ce02a9de5820a07yangguo@chromium.org assert(ex == "-123456789"); 1127b26015ac58e54e88f4214e248f772ad4f055477whesse@chromium.org } 113a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // zero, showbase 114d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org std::string v = "$0.00"; 115c53e10d01c5495df3896b9d318910b58688c6929kmillikin@chromium.org typedef input_iterator<const char*> I; 116c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org std::string ex; 117c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 118a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 11949edbdf52640c88918f8e6638ab4965819eb1dfekmillikin@chromium.org false, ios, err, ex); 120a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 121a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 122a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == "0"); 1234f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org } 1244f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org { // zero, showbase 1252bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org std::string v = "$0.00"; 126a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org showbase(ios); 127d2c22f0121ebc55ee26a9e742f0fd7c0b8397730kmillikin@chromium.org typedef input_iterator<const char*> I; 12871fc3467b5396c27d0b701d88e196e88c78d8864mstarzinger@chromium.org std::string ex; 129160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 1304f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 1314f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org false, ios, err, ex); 132e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org assert(iter.base() == v.data() + v.size()); 1330ad885c06ff6a0d68bc9ad75629f7ddfaa6860b9erikcorry assert(err == std::ios_base::eofbit); 1344f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org assert(ex == "0"); 1354f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org noshowbase(ios); 136a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 137c6c5718277d4047fad1e034396228ce15571b5a4sgjesse@chromium.org { // negative one, showbase 1384d3fe4e246b0312eba361689f288ddf8dd516960danno@chromium.org std::string v = "-$0.01"; 139c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org typedef input_iterator<const char*> I; 140378b34e3f8852e94739bb77a528278fe0e2bb532ager@chromium.org std::string ex; 141c36ce6e8979bbbd43539f0a0effc87ea20dd65cckmillikin@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 142c36ce6e8979bbbd43539f0a0effc87ea20dd65cckmillikin@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 143e4ee6de0de64744d55b63da83156827c989c7099verwaest@chromium.org false, ios, err, ex); 144a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 145a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 146a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == "-1"); 147355cfd19c23ac613f2738a40e356ea48297f7d5eyangguo@chromium.org } 148efdb9d70bddd496ceb6a281dadcc065efbce37a1yangguo@chromium.org { // negative one, showbase 149471f2f1d24adb4bad1edc3bf0ee35092486de187mstarzinger@chromium.org std::string v = "-$0.01"; 150a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org showbase(ios); 151a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const char*> I; 152a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string ex; 15383aa54905e559090bea7771b83f188762cfcf082ricow@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 154a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 1555f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org false, ios, err, ex); 156a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 157f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com assert(err == std::ios_base::eofbit); 158a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == "-1"); 159a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org noshowbase(ios); 160e4ee6de0de64744d55b63da83156827c989c7099verwaest@chromium.org } 161a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // positive, showbase 16232280cf2786219b2d9a668f7f00778fb59ac40b3mstarzinger@chromium.org std::string v = "$1,234,567.89"; 163a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const char*> I; 164a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string ex; 165a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 166a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 16783aa54905e559090bea7771b83f188762cfcf082ricow@chromium.org false, ios, err, ex); 16874f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org assert(iter.base() == v.data() + v.size()); 16974f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org assert(err == std::ios_base::eofbit); 170e4ee6de0de64744d55b63da83156827c989c7099verwaest@chromium.org assert(ex == "123456789"); 171a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 172a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // positive, showbase 173a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string v = "$1,234,567.89"; 174160a7b0747492f3f735353d9582521f3314bf4dfdanno@chromium.org showbase(ios); 1750a4e901cdfb5505a896d30aa8c2e04fce0fbe069vegorov@chromium.org typedef input_iterator<const char*> I; 176b08986cb66c3f6687247cb6da186c1e73057e399whesse@chromium.org std::string ex; 177471f2f1d24adb4bad1edc3bf0ee35092486de187mstarzinger@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 178a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 179d2be901879306d8ff27e78e37783028d581d46fcricow@chromium.org false, ios, err, ex); 180a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 181ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org assert(err == std::ios_base::eofbit); 182394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com assert(ex == "123456789"); 18394b0d6fcb08a2f01ba52c6edb712068f482366f1danno@chromium.org noshowbase(ios); 184a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 1854f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org { // negative, showbase 186a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string v = "-$1,234,567.89"; 187a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org showbase(ios); 188d2be901879306d8ff27e78e37783028d581d46fcricow@chromium.org typedef input_iterator<const char*> I; 189be6bd10d8264b7a05e0a04407eb98b253bc0f152kmillikin@chromium.org std::string ex; 190154ff99473e866f5eb00a44045e27866a7fdce29yangguo@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 191a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 19228faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org false, ios, err, ex); 193003650ee766f5e92756d470a37973fd371757485yangguo@chromium.org assert(iter.base() == v.data() + v.size()); 19428faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org assert(err == std::ios_base::eofbit); 19528faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org assert(ex == "-123456789"); 19628faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org noshowbase(ios); 197c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org } 198c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org { // negative, showbase 199d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org std::string v = "-USD 1,234,567.89"; 200a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org showbase(ios); 201c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org typedef input_iterator<const char*> I; 202c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org std::string ex; 203c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 20457ff881caeb2e15b46ac9e4dfc00e378f7c5f929ulan@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 205c3b37129d6387b2db313f9100256d2d5f60dd9a8jkummerow@chromium.org false, ios, err, ex); 20678d1ad443658709d6c27809001a0e71efd8b898fyangguo@chromium.org assert(iter.base() == v.data() + 1); 207a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::failbit); 208c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org assert(ex == ""); 209c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org noshowbase(ios); 210d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org } 211c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org { // negative, showbase 212a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string v = "-USD 1,234,567.89"; 21332cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org typedef input_iterator<const char*> I; 21432cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org std::string ex; 21532cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 21632cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 21732cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org false, ios, err, ex); 218dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org assert(iter.base() == v.data() + 1); 219a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::failbit); 220a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == ""); 22132cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org } 22232cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org } 22332cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org { 22432cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org const my_facet f(1); 22532cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org // char, international 22632cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org { // zero 22732cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org std::string v = "0.00"; 22832cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org typedef input_iterator<const char*> I; 22932cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org std::string ex; 23032cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 231a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 232a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org true, ios, err, ex); 23332cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org assert(iter.base() == v.data() + v.size()); 234a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 2358f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org assert(ex == "0"); 2368f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org } 2378f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org { // negative one 2388f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org std::string v = "-0.01"; 2398f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org typedef input_iterator<const char*> I; 240a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string ex; 241a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 2428f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 2438f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org true, ios, err, ex); 2448f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org assert(iter.base() == v.data() + v.size()); 2458f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org assert(err == std::ios_base::eofbit); 246a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == "-1"); 247a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 248a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // positive 249a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string v = "1,234,567.89"; 250812308e1488cd8261e4dbbda1d8022642d522b9bulan@chromium.org typedef input_iterator<const char*> I; 251812308e1488cd8261e4dbbda1d8022642d522b9bulan@chromium.org std::string ex; 252812308e1488cd8261e4dbbda1d8022642d522b9bulan@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 253812308e1488cd8261e4dbbda1d8022642d522b9bulan@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 254812308e1488cd8261e4dbbda1d8022642d522b9bulan@chromium.org true, ios, err, ex); 255812308e1488cd8261e4dbbda1d8022642d522b9bulan@chromium.org assert(iter.base() == v.data() + v.size()); 256812308e1488cd8261e4dbbda1d8022642d522b9bulan@chromium.org assert(err == std::ios_base::eofbit); 257812308e1488cd8261e4dbbda1d8022642d522b9bulan@chromium.org assert(ex == "123456789"); 258ddd545c4c343dcf4331b9d80d2a0bdfa373a4a0fricow@chromium.org } 259ddd545c4c343dcf4331b9d80d2a0bdfa373a4a0fricow@chromium.org { // negative 260ddd545c4c343dcf4331b9d80d2a0bdfa373a4a0fricow@chromium.org std::string v = "-1,234,567.89"; 261a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const char*> I; 262a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string ex; 263a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 264a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 265a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org true, ios, err, ex); 266b99c75496e05b4cd58815ada1e39e6029130d11crossberg@chromium.org assert(iter.base() == v.data() + v.size()); 2678f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org assert(err == std::ios_base::eofbit); 268ddd545c4c343dcf4331b9d80d2a0bdfa373a4a0fricow@chromium.org assert(ex == "-123456789"); 269ddd545c4c343dcf4331b9d80d2a0bdfa373a4a0fricow@chromium.org } 270ddd545c4c343dcf4331b9d80d2a0bdfa373a4a0fricow@chromium.org { // negative 2718f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org std::string v = "-1234567.89"; 2728f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org typedef input_iterator<const char*> I; 273a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string ex; 2741fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 2751fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 2761fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org true, ios, err, ex); 2771fd77d58ca66b2711f09cdea32c0c2d1a01b3ae5danno@chromium.org assert(iter.base() == v.data() + v.size()); 2788f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org assert(err == std::ios_base::eofbit); 279c3b37129d6387b2db313f9100256d2d5f60dd9a8jkummerow@chromium.org assert(ex == "-123456789"); 2808f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org } 281c3b37129d6387b2db313f9100256d2d5f60dd9a8jkummerow@chromium.org { // zero, showbase 2825f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org std::string v = "USD 0.00"; 283a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const char*> I; 284a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string ex; 285a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 286a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 287a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org true, ios, err, ex); 2888f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org assert(iter.base() == v.data() + v.size()); 2898f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org assert(err == std::ios_base::eofbit); 290471f2f1d24adb4bad1edc3bf0ee35092486de187mstarzinger@chromium.org assert(ex == "0"); 291471f2f1d24adb4bad1edc3bf0ee35092486de187mstarzinger@chromium.org } 292a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // zero, showbase 2938f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org std::string v = "USD 0.00"; 2948f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org showbase(ios); 2958f806e8b8f108ca2c8899c5d31861ef1273dcd4akarlklose@chromium.org typedef input_iterator<const char*> I; 296fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org std::string ex; 297fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 298fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 299a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org true, ios, err, ex); 300a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 301a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 302a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == "0"); 303a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org noshowbase(ios); 304a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 305a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // negative one, showbase 306a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string v = "-USD 0.01"; 307a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const char*> I; 30832cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org std::string ex; 309e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 310e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 311e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org true, ios, err, ex); 312e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org assert(iter.base() == v.data() + v.size()); 313e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org assert(err == std::ios_base::eofbit); 314e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org assert(ex == "-1"); 315e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org } 316e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org { // negative one, showbase 317e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org std::string v = "-USD 0.01"; 318e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org showbase(ios); 319e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org typedef input_iterator<const char*> I; 320e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org std::string ex; 321e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 322e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 323e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org true, ios, err, ex); 324e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org assert(iter.base() == v.data() + v.size()); 325e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org assert(err == std::ios_base::eofbit); 326e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org assert(ex == "-1"); 327e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org noshowbase(ios); 328e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org } 329e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org { // positive, showbase 330e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org std::string v = "USD 1,234,567.89"; 331e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org typedef input_iterator<const char*> I; 332e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org std::string ex; 333e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 334e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 335e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org true, ios, err, ex); 336e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org assert(iter.base() == v.data() + v.size()); 337e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org assert(err == std::ios_base::eofbit); 338e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org assert(ex == "123456789"); 339e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org } 340e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org { // positive, showbase 341e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org std::string v = "USD 1,234,567.89"; 342e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org showbase(ios); 343e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org typedef input_iterator<const char*> I; 344e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org std::string ex; 345e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 346e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 347e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org true, ios, err, ex); 348e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org assert(iter.base() == v.data() + v.size()); 349e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org assert(err == std::ios_base::eofbit); 35032cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org assert(ex == "123456789"); 351a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org noshowbase(ios); 352d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org } 353a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // negative, showbase 354a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string v = "-USD 1,234,567.89"; 355a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org showbase(ios); 356a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const char*> I; 357a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string ex; 358a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 359a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 360a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org true, ios, err, ex); 361a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 362a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 363a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == "-123456789"); 364a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org noshowbase(ios); 365a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 366a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // negative, showbase 367a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string v = "-$1,234,567.89"; 368a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org showbase(ios); 3692bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org typedef input_iterator<const char*> I; 370a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string ex; 371a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 372a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 373a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org true, ios, err, ex); 374a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + 1); 375a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::failbit); 376a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == ""); 3772bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org noshowbase(ios); 378a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 379a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // negative, showbase 380a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string v = "-$1,234,567.89"; 3812bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org typedef input_iterator<const char*> I; 382a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::string ex; 383a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 384a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 3852bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org true, ios, err, ex); 386a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + 1); 387a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::failbit); 388a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == ""); 3892bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org } 390a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 391a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { 392a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org const my_facetw f(1); 3932bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org // wchar_t, national 394a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // zero 395a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::wstring v = L"0.00"; 396a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const wchar_t*> I; 3972bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org std::wstring ex; 398a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 399a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 400a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org false, ios, err, ex); 401c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org assert(iter.base() == v.data() + v.size()); 402c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org assert(err == std::ios_base::eofbit); 403c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org assert(ex == L"0"); 404c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org } 405c73d55b355913690124f3ee70c344035431cdd3ayangguo@chromium.org { // negative one 4062bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org std::wstring v = L"-0.01"; 407a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const wchar_t*> I; 408a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::wstring ex; 409a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 4102bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 411a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org false, ios, err, ex); 412a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 413a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 4142bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org assert(ex == L"-1"); 415a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 416a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // positive 417a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::wstring v = L"1,234,567.89"; 4182bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org typedef input_iterator<const wchar_t*> I; 419a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::wstring ex; 420a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 421a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 422c22f2d813ad21e25e8df5d4a371fd63f582e4262danno@chromium.org false, ios, err, ex); 423c22f2d813ad21e25e8df5d4a371fd63f582e4262danno@chromium.org assert(iter.base() == v.data() + v.size()); 424935781b3604caa053bf75ce6b1079d79a225e63fdanno@chromium.org assert(err == std::ios_base::eofbit); 425935781b3604caa053bf75ce6b1079d79a225e63fdanno@chromium.org assert(ex == L"123456789"); 426d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org } 427d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org { // negative 428d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org std::wstring v = L"-1,234,567.89"; 429d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org typedef input_iterator<const wchar_t*> I; 430d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org std::wstring ex; 431d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 432d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 433d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org false, ios, err, ex); 434d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org assert(iter.base() == v.data() + v.size()); 435d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org assert(err == std::ios_base::eofbit); 436d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org assert(ex == L"-123456789"); 437d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org } 438d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org { // negative 439d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org std::wstring v = L"-1234567.89"; 440d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org typedef input_iterator<const wchar_t*> I; 441d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org std::wstring ex; 442d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 443d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 4442bda543d75374afd8d7e98f56ca99a57ae1b7bd1svenpanne@chromium.org false, ios, err, ex); 445a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 446a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 447a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == L"-123456789"); 448a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 449a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // zero, showbase 450d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org std::wstring v = L"$0.00"; 451a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const wchar_t*> I; 452a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::wstring ex; 453a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 454a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 455a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org false, ios, err, ex); 456a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 457a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 458a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == L"0"); 459a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 460d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org { // zero, showbase 461a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::wstring v = L"$0.00"; 462a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org showbase(ios); 463a9aa5fa8ae2a2b43a94e6462ded2cd51445e9ee3ager@chromium.org typedef input_iterator<const wchar_t*> I; 464d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org std::wstring ex; 465a9aa5fa8ae2a2b43a94e6462ded2cd51445e9ee3ager@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 466a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 467a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org false, ios, err, ex); 468a9aa5fa8ae2a2b43a94e6462ded2cd51445e9ee3ager@chromium.org assert(iter.base() == v.data() + v.size()); 469a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 470a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == L"0"); 471a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org noshowbase(ios); 4723847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com } 4733847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com { // negative one, showbase 4743847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com std::wstring v = L"-$0.01"; 4753847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com typedef input_iterator<const wchar_t*> I; 4763847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com std::wstring ex; 4773847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com std::ios_base::iostate err = std::ios_base::goodbit; 478ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 4793847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com false, ios, err, ex); 4803847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com assert(iter.base() == v.data() + v.size()); 4813847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com assert(err == std::ios_base::eofbit); 4823847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com assert(ex == L"-1"); 4833847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com } 4843847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com { // negative one, showbase 4853847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com std::wstring v = L"-$0.01"; 4863847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com showbase(ios); 4873847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com typedef input_iterator<const wchar_t*> I; 4883847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com std::wstring ex; 4893847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com std::ios_base::iostate err = std::ios_base::goodbit; 4903847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com I iter = f.get(I(v.data()), I(v.data() + v.size()), 4913847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com false, ios, err, ex); 4923847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com assert(iter.base() == v.data() + v.size()); 4933847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com assert(err == std::ios_base::eofbit); 4943847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com assert(ex == L"-1"); 4953847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com noshowbase(ios); 4963847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com } 4973847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com { // positive, showbase 4983847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com std::wstring v = L"$1,234,567.89"; 4993847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com typedef input_iterator<const wchar_t*> I; 5003847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com std::wstring ex; 50132cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 5023847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com I iter = f.get(I(v.data()), I(v.data() + v.size()), 5033847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com false, ios, err, ex); 5043847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com assert(iter.base() == v.data() + v.size()); 5053847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com assert(err == std::ios_base::eofbit); 5063847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com assert(ex == L"123456789"); 5073847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com } 5083847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com { // positive, showbase 5093847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com std::wstring v = L"$1,234,567.89"; 5103847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com showbase(ios); 5113847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com typedef input_iterator<const wchar_t*> I; 5123847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com std::wstring ex; 5133847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com std::ios_base::iostate err = std::ios_base::goodbit; 5143847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com I iter = f.get(I(v.data()), I(v.data() + v.size()), 5153847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com false, ios, err, ex); 5163847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com assert(iter.base() == v.data() + v.size()); 5173847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com assert(err == std::ios_base::eofbit); 5183847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com assert(ex == L"123456789"); 5193847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com noshowbase(ios); 5203847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com } 5213847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com { // negative, showbase 5223847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com std::wstring v = L"-$1,234,567.89"; 5233847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com showbase(ios); 5243847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com typedef input_iterator<const wchar_t*> I; 5253847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com std::wstring ex; 5263847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com std::ios_base::iostate err = std::ios_base::goodbit; 5273847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com I iter = f.get(I(v.data()), I(v.data() + v.size()), 52805ed9ddc6ff3a1ab3983c50d378cddfa257869b6jkummerow@chromium.org false, ios, err, ex); 52905ed9ddc6ff3a1ab3983c50d378cddfa257869b6jkummerow@chromium.org assert(iter.base() == v.data() + v.size()); 53028faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org assert(err == std::ios_base::eofbit); 53105ed9ddc6ff3a1ab3983c50d378cddfa257869b6jkummerow@chromium.org assert(ex == L"-123456789"); 53205ed9ddc6ff3a1ab3983c50d378cddfa257869b6jkummerow@chromium.org noshowbase(ios); 53305ed9ddc6ff3a1ab3983c50d378cddfa257869b6jkummerow@chromium.org } 53428faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org { // negative, showbase 53528faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org std::wstring v = L"-USD 1,234,567.89"; 53605ed9ddc6ff3a1ab3983c50d378cddfa257869b6jkummerow@chromium.org showbase(ios); 53705ed9ddc6ff3a1ab3983c50d378cddfa257869b6jkummerow@chromium.org typedef input_iterator<const wchar_t*> I; 53828faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org std::wstring ex; 53928faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 54028faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 54128faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org false, ios, err, ex); 54205ed9ddc6ff3a1ab3983c50d378cddfa257869b6jkummerow@chromium.org assert(iter.base() == v.data() + 1); 54305ed9ddc6ff3a1ab3983c50d378cddfa257869b6jkummerow@chromium.org assert(err == std::ios_base::failbit); 5447c3372bc426136cb79479c1b59d1770f5528882ahpayer@chromium.org assert(ex == L""); 54532cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org noshowbase(ios); 546876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org } 547876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org { // negative, showbase 548876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org std::wstring v = L"-USD 1,234,567.89"; 549876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org typedef input_iterator<const wchar_t*> I; 550876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org std::wstring ex; 551876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 552876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 553876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org false, ios, err, ex); 554876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org assert(iter.base() == v.data() + 1); 555876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org assert(err == std::ios_base::failbit); 556876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org assert(ex == L""); 557876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org } 558876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org } 559876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org { 560876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org const my_facetw f(1); 561876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org // wchar_t, international 562876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org { // zero 563876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org std::wstring v = L"0.00"; 564876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org typedef input_iterator<const wchar_t*> I; 565876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org std::wstring ex; 566876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 567876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 568876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org true, ios, err, ex); 569876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org assert(iter.base() == v.data() + v.size()); 570876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org assert(err == std::ios_base::eofbit); 571876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org assert(ex == L"0"); 572876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org } 573876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org { // negative one 574876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org std::wstring v = L"-0.01"; 575876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org typedef input_iterator<const wchar_t*> I; 576876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org std::wstring ex; 577876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 578876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 579876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org true, ios, err, ex); 580876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org assert(iter.base() == v.data() + v.size()); 581876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org assert(err == std::ios_base::eofbit); 582876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org assert(ex == L"-1"); 583876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org } 584876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org { // positive 585876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org std::wstring v = L"1,234,567.89"; 586876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org typedef input_iterator<const wchar_t*> I; 587876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org std::wstring ex; 588876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 589876cca833d7212e476250d102cad185cdcfa9dfesvenpanne@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 59005ed9ddc6ff3a1ab3983c50d378cddfa257869b6jkummerow@chromium.org true, ios, err, ex); 59105ed9ddc6ff3a1ab3983c50d378cddfa257869b6jkummerow@chromium.org assert(iter.base() == v.data() + v.size()); 59205ed9ddc6ff3a1ab3983c50d378cddfa257869b6jkummerow@chromium.org assert(err == std::ios_base::eofbit); 59332cb9b2c195baa85d4c04f4c7b22b9aa04e97d3fverwaest@chromium.org assert(ex == L"123456789"); 594a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 595a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // negative 596a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::wstring v = L"-1,234,567.89"; 597a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const wchar_t*> I; 598a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::wstring ex; 5991510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 6007b26015ac58e54e88f4214e248f772ad4f055477whesse@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 6017b26015ac58e54e88f4214e248f772ad4f055477whesse@chromium.org true, ios, err, ex); 6027b26015ac58e54e88f4214e248f772ad4f055477whesse@chromium.org assert(iter.base() == v.data() + v.size()); 6037b26015ac58e54e88f4214e248f772ad4f055477whesse@chromium.org assert(err == std::ios_base::eofbit); 604a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == L"-123456789"); 60528faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org } 606169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org { // negative 60728faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org std::wstring v = L"-1234567.89"; 60828faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org typedef input_iterator<const wchar_t*> I; 609a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::wstring ex; 610a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 611a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 612b99c75496e05b4cd58815ada1e39e6029130d11crossberg@chromium.org true, ios, err, ex); 613a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 614a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 615837a67edd9afdbfe1b59482b41693f59c48846ffulan@chromium.org assert(ex == L"-123456789"); 616fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org } 617fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org { // zero, showbase 6184e308cf00936c6e7bead43e5141a04e37b49b9b5jkummerow@chromium.org std::wstring v = L"USD 0.00"; 619ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org typedef input_iterator<const wchar_t*> I; 62046839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org std::wstring ex; 62146839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 62246839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 62346839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org true, ios, err, ex); 62446839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org assert(iter.base() == v.data() + v.size()); 62546839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org assert(err == std::ios_base::eofbit); 62646839fbbdee40a3d2d924e8b5b13c4139b0b24f2yangguo@chromium.org assert(ex == L"0"); 627e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org } 6284e308cf00936c6e7bead43e5141a04e37b49b9b5jkummerow@chromium.org { // zero, showbase 6294e308cf00936c6e7bead43e5141a04e37b49b9b5jkummerow@chromium.org std::wstring v = L"USD 0.00"; 630d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org showbase(ios); 631d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org typedef input_iterator<const wchar_t*> I; 632d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org std::wstring ex; 633d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 634d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 635d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org true, ios, err, ex); 636d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org assert(iter.base() == v.data() + v.size()); 637a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 638a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == L"0"); 639a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org noshowbase(ios); 640a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 641a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // negative one, showbase 642a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::wstring v = L"-USD 0.01"; 64328faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org typedef input_iterator<const wchar_t*> I; 64428faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org std::wstring ex; 64528faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 64628faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 64728faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org true, ios, err, ex); 64828faa982749c4aa9c090939453dea14bb118f613jkummerow@chromium.org assert(iter.base() == v.data() + v.size()); 64905ed9ddc6ff3a1ab3983c50d378cddfa257869b6jkummerow@chromium.org assert(err == std::ios_base::eofbit); 65005ed9ddc6ff3a1ab3983c50d378cddfa257869b6jkummerow@chromium.org assert(ex == L"-1"); 651a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 652a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // negative one, showbase 653a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::wstring v = L"-USD 0.01"; 654a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org showbase(ios); 655a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const wchar_t*> I; 656a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::wstring ex; 657dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 658dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 659dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org true, ios, err, ex); 660dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org assert(iter.base() == v.data() + v.size()); 661a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 662dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org assert(ex == L"-1"); 663dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org noshowbase(ios); 664dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org } 665dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org { // positive, showbase 666dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org std::wstring v = L"USD 1,234,567.89"; 667dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org typedef input_iterator<const wchar_t*> I; 668dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org std::wstring ex; 669dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 670dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 671dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org true, ios, err, ex); 672dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org assert(iter.base() == v.data() + v.size()); 673dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org assert(err == std::ios_base::eofbit); 674dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org assert(ex == L"123456789"); 675dcebac0f4c6c0da579b7cc91a0cbba8f3c820c8dricow@chromium.org } 676a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // positive, showbase 677d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org std::wstring v = L"USD 1,234,567.89"; 678d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org showbase(ios); 679d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org typedef input_iterator<const wchar_t*> I; 680d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org std::wstring ex; 681d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 682d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 683d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org true, ios, err, ex); 684a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 685a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(err == std::ios_base::eofbit); 686a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == L"123456789"); 687a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org noshowbase(ios); 688fa458e413c3e5b8d479e49258d060b7bb4567c57danno@chromium.org } 689a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // negative, showbase 69009d7ab5aba54ebac170eac755664c45eefb0be7dulan@chromium.org std::wstring v = L"-USD 1,234,567.89"; 69109d7ab5aba54ebac170eac755664c45eefb0be7dulan@chromium.org showbase(ios); 69209d7ab5aba54ebac170eac755664c45eefb0be7dulan@chromium.org typedef input_iterator<const wchar_t*> I; 693a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::wstring ex; 694a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 695a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 6963847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com true, ios, err, ex); 697a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + v.size()); 6984d3fe4e246b0312eba361689f288ddf8dd516960danno@chromium.org assert(err == std::ios_base::eofbit); 699fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assert(ex == L"-123456789"); 700a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org noshowbase(ios); 701a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 702a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { // negative, showbase 7031510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org std::wstring v = L"-$1,234,567.89"; 704a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org showbase(ios); 705a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef input_iterator<const wchar_t*> I; 706fb37721ea34922d8758d5cb26ae465aaf241e6b6yangguo@chromium.org std::wstring ex; 707fb37721ea34922d8758d5cb26ae465aaf241e6b6yangguo@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 708fb37721ea34922d8758d5cb26ae465aaf241e6b6yangguo@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 709fb37721ea34922d8758d5cb26ae465aaf241e6b6yangguo@chromium.org true, ios, err, ex); 710a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(iter.base() == v.data() + 1); 711fb37721ea34922d8758d5cb26ae465aaf241e6b6yangguo@chromium.org assert(err == std::ios_base::failbit); 712a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org assert(ex == L""); 713d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org noshowbase(ios); 714d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org } 715d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org { // negative, showbase 716d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org std::wstring v = L"-$1,234,567.89"; 717d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org typedef input_iterator<const wchar_t*> I; 718d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org std::wstring ex; 719d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org std::ios_base::iostate err = std::ios_base::goodbit; 720d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org I iter = f.get(I(v.data()), I(v.data() + v.size()), 721d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org true, ios, err, ex); 722d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org assert(iter.base() == v.data() + 1); 723d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org assert(err == std::ios_base::failbit); 724fb144a0716afe7ab8bf245f2391a9e53b3db3c89fschneider@chromium.org assert(ex == L""); 725a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 726ddd545c4c343dcf4331b9d80d2a0bdfa373a4a0fricow@chromium.org } 727ddd545c4c343dcf4331b9d80d2a0bdfa373a4a0fricow@chromium.org} 728ddd545c4c343dcf4331b9d80d2a0bdfa373a4a0fricow@chromium.org