diff options
| author | Howard Hinnant <hhinnant@apple.com> | 2013-04-13 18:19:25 +0000 |
|---|---|---|
| committer | Howard Hinnant <hhinnant@apple.com> | 2013-04-13 18:19:25 +0000 |
| commit | 40487ca25e8270d82af0521019e16234d19860bf (patch) | |
| tree | 55d88294be39ca9e932f5ed954a851ea89e71453 /libcxx/test | |
| parent | adc1727c39828bb19a29d63ccd1a32c7b8a29753 (diff) | |
| download | bcm5719-llvm-40487ca25e8270d82af0521019e16234d19860bf.tar.gz bcm5719-llvm-40487ca25e8270d82af0521019e16234d19860bf.zip | |
Set failbit when strtold sets errno to ERANGE when parsing floating point values.
llvm-svn: 179461
Diffstat (limited to 'libcxx/test')
| -rw-r--r-- | libcxx/test/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/libcxx/test/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp b/libcxx/test/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp index 673f8dcce06..078ef018212 100644 --- a/libcxx/test/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp +++ b/libcxx/test/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp @@ -168,4 +168,52 @@ int main() assert(err == ios.goodbit); assert(std::isnan(v)); } + { + const char str[] = "1.189731495357231765021264e+49321"; + std::ios_base::iostate err = ios.goodbit; + v = 0; + input_iterator<const char*> iter = + f.get(input_iterator<const char*>(str), + input_iterator<const char*>(str+sizeof(str)), + ios, err, v); + assert(iter.base() == str+sizeof(str)-1); + assert(err == ios.failbit); + assert(v == INFINITY); + } + { + const char str[] = "1.189731495357231765021264e+49329"; + std::ios_base::iostate err = ios.goodbit; + v = 0; + input_iterator<const char*> iter = + f.get(input_iterator<const char*>(str), + input_iterator<const char*>(str+sizeof(str)), + ios, err, v); + assert(iter.base() == str+sizeof(str)-1); + assert(err == ios.failbit); + assert(v == INFINITY); + } + { + const char str[] = "11.189731495357231765021264e+4932"; + std::ios_base::iostate err = ios.goodbit; + v = 0; + input_iterator<const char*> iter = + f.get(input_iterator<const char*>(str), + input_iterator<const char*>(str+sizeof(str)), + ios, err, v); + assert(iter.base() == str+sizeof(str)-1); + assert(err == ios.failbit); + assert(v == INFINITY); + } + { + const char str[] = "91.189731495357231765021264e+4932"; + std::ios_base::iostate err = ios.goodbit; + v = 0; + input_iterator<const char*> iter = + f.get(input_iterator<const char*>(str), + input_iterator<const char*>(str+sizeof(str)), + ios, err, v); + assert(iter.base() == str+sizeof(str)-1); + assert(err == ios.failbit); + assert(v == INFINITY); + } } |

