summaryrefslogtreecommitdiffstats
path: root/libcxx/test
diff options
context:
space:
mode:
authorHoward Hinnant <hhinnant@apple.com>2013-04-13 18:19:25 +0000
committerHoward Hinnant <hhinnant@apple.com>2013-04-13 18:19:25 +0000
commit40487ca25e8270d82af0521019e16234d19860bf (patch)
tree55d88294be39ca9e932f5ed954a851ea89e71453 /libcxx/test
parentadc1727c39828bb19a29d63ccd1a32c7b8a29753 (diff)
downloadbcm5719-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.cpp48
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);
+ }
}
OpenPOWER on IntegriCloud