summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDmitriy Ivanov <dimitry@google.com>2014-09-04 12:47:07 -0700
committerDmitriy Ivanov <dimitry@google.com>2014-10-01 16:03:40 -0700
commit61c4147fa8c8abb33ae6fecb85dd1ae1b60e1ed6 (patch)
treee1a9c4a9232ccb00c9c4b3f2210e683e177838f8 /tests
parentae69a9584baf8dd6a28065538ca09d1924ebd9e4 (diff)
downloadbionic-61c4147fa8c8abb33ae6fecb85dd1ae1b60e1ed6.zip
bionic-61c4147fa8c8abb33ae6fecb85dd1ae1b60e1ed6.tar.gz
bionic-61c4147fa8c8abb33ae6fecb85dd1ae1b60e1ed6.tar.bz2
Reset enviroment for math_tests
Bug: 17390824 (cherry picked from commit 7b956ede3f0f40bd8a085a8ad3729bb3e0e030f2) Change-Id: I5d804ceb5e69533584161bfed6787529cd8296fb
Diffstat (limited to 'tests')
-rw-r--r--tests/math_test.cpp37
-rw-r--r--tests/string_test.cpp18
2 files changed, 46 insertions, 9 deletions
diff --git a/tests/math_test.cpp b/tests/math_test.cpp
index b4f5b14..ad4654e 100644
--- a/tests/math_test.cpp
+++ b/tests/math_test.cpp
@@ -53,6 +53,8 @@ template<typename T> inline int test_capture_isinf(const T in) {
#include <limits.h>
#include <stdint.h>
+#include <private/ScopeGuard.h>
+
float float_subnormal() {
union {
float f;
@@ -760,6 +762,10 @@ TEST(math, erfcl) {
}
TEST(math, lrint) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
+
fesetround(FE_UPWARD); // lrint/lrintf/lrintl obey the rounding mode.
ASSERT_EQ(1235, lrint(1234.01));
ASSERT_EQ(1235, lrintf(1234.01f));
@@ -780,6 +786,10 @@ TEST(math, lrint) {
}
TEST(math, rint) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
+
fesetround(FE_UPWARD); // rint/rintf/rintl obey the rounding mode.
feclearexcept(FE_ALL_EXCEPT); // rint/rintf/rintl do set the FE_INEXACT flag.
ASSERT_EQ(1234.0, rint(1234.0));
@@ -806,6 +816,9 @@ TEST(math, rint) {
}
TEST(math, nearbyint) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_UPWARD); // nearbyint/nearbyintf/nearbyintl obey the rounding mode.
feclearexcept(FE_ALL_EXCEPT); // nearbyint/nearbyintf/nearbyintl don't set the FE_INEXACT flag.
ASSERT_EQ(1234.0, nearbyint(1234.0));
@@ -832,6 +845,9 @@ TEST(math, nearbyint) {
}
TEST(math, lround) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_UPWARD); // lround ignores the rounding mode.
ASSERT_EQ(1234, lround(1234.01));
ASSERT_EQ(1234, lroundf(1234.01f));
@@ -839,6 +855,9 @@ TEST(math, lround) {
}
TEST(math, llround) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_UPWARD); // llround ignores the rounding mode.
ASSERT_EQ(1234L, llround(1234.01));
ASSERT_EQ(1234L, llroundf(1234.01f));
@@ -933,6 +952,9 @@ TEST(math, fdiml) {
}
TEST(math, round) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_TOWARDZERO); // round ignores the rounding mode and always rounds away from zero.
ASSERT_DOUBLE_EQ(1.0, round(0.5));
ASSERT_DOUBLE_EQ(-1.0, round(-0.5));
@@ -943,6 +965,9 @@ TEST(math, round) {
}
TEST(math, roundf) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_TOWARDZERO); // roundf ignores the rounding mode and always rounds away from zero.
ASSERT_FLOAT_EQ(1.0f, roundf(0.5f));
ASSERT_FLOAT_EQ(-1.0f, roundf(-0.5f));
@@ -953,6 +978,9 @@ TEST(math, roundf) {
}
TEST(math, roundl) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_TOWARDZERO); // roundl ignores the rounding mode and always rounds away from zero.
ASSERT_DOUBLE_EQ(1.0L, roundl(0.5L));
ASSERT_DOUBLE_EQ(-1.0L, roundl(-0.5L));
@@ -963,6 +991,9 @@ TEST(math, roundl) {
}
TEST(math, trunc) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_UPWARD); // trunc ignores the rounding mode and always rounds toward zero.
ASSERT_DOUBLE_EQ(1.0, trunc(1.5));
ASSERT_DOUBLE_EQ(-1.0, trunc(-1.5));
@@ -973,6 +1004,9 @@ TEST(math, trunc) {
}
TEST(math, truncf) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_UPWARD); // truncf ignores the rounding mode and always rounds toward zero.
ASSERT_FLOAT_EQ(1.0f, truncf(1.5f));
ASSERT_FLOAT_EQ(-1.0f, truncf(-1.5f));
@@ -983,6 +1017,9 @@ TEST(math, truncf) {
}
TEST(math, truncl) {
+ auto guard = create_scope_guard([]() {
+ fesetenv(FE_DFL_ENV);
+ });
fesetround(FE_UPWARD); // truncl ignores the rounding mode and always rounds toward zero.
ASSERT_DOUBLE_EQ(1.0L, truncl(1.5L));
ASSERT_DOUBLE_EQ(-1.0L, truncl(-1.5L));
diff --git a/tests/string_test.cpp b/tests/string_test.cpp
index 73c94c6..f1ac9dd 100644
--- a/tests/string_test.cpp
+++ b/tests/string_test.cpp
@@ -173,7 +173,7 @@ struct StringTestState {
const size_t MAX_LEN;
Character *ptr, *ptr1, *ptr2;
size_t n;
- int len[ITER + 1];
+ size_t len[ITER + 1];
private:
Character *glob_ptr, *glob_ptr1, *glob_ptr2;
@@ -186,7 +186,7 @@ struct StringTestState {
n = 0;
len[n++] = 0;
for (size_t i = 1; i < ITER; ++i) {
- int l = (int) exp(log((double) MAX_LEN) * i / ITER);
+ size_t l = static_cast<size_t>(exp(log(static_cast<double>(MAX_LEN)) * i / ITER));
if (l != len[n - 1]) {
len[n++] = l;
}
@@ -392,7 +392,7 @@ TEST(string, strchr) {
}
state.ptr1[state.len[i] - 1] = '\0';
- int pos = random() % state.MAX_LEN;
+ size_t pos = random() % state.MAX_LEN;
char* expected;
if (pos >= state.len[i] - 1) {
if (seek_char == 0) {
@@ -421,7 +421,7 @@ TEST(string, strcmp) {
state.ptr1[state.len[i] - 1] = '\0';
state.ptr2[state.len[i] - 1] = '\0';
- int pos = 1 + (random() % (state.MAX_LEN - 1));
+ size_t pos = 1 + (random() % (state.MAX_LEN - 1));
int actual;
int expected;
if (pos >= state.len[i] - 1) {
@@ -510,7 +510,7 @@ TEST(string, strlcat) {
state.ptr2[state.MAX_LEN - 1] = '\0';
memcpy(state.ptr, state.ptr2, state.MAX_LEN + state.len[i]);
- int pos = random() % state.MAX_LEN;
+ size_t pos = random() % state.MAX_LEN;
memset(state.ptr1, '\3', pos);
state.ptr1[pos] = '\0';
if (pos < state.len[i]) {
@@ -604,7 +604,7 @@ TEST(string, strncmp) {
state.ptr1[state.len[i] - 1] = '\0';
state.ptr2[state.len[i] - 1] = '\0';
- int pos = 1 + (random() % (state.MAX_LEN - 1));
+ size_t pos = 1 + (random() % (state.MAX_LEN - 1));
int actual;
int expected;
if (pos >= state.len[i] - 1) {
@@ -722,7 +722,7 @@ TEST(string, strrchr) {
}
state.ptr1[state.len[i] - 1] = '\0';
- int pos = random() % state.MAX_LEN;
+ size_t pos = random() % state.MAX_LEN;
char* expected;
if (pos >= state.len[i] - 1) {
if (seek_char == 0) {
@@ -749,7 +749,7 @@ TEST(string, memchr) {
memset(state.ptr1, ~seek_char, state.len[i]);
- int pos = random() % state.MAX_LEN;
+ size_t pos = random() % state.MAX_LEN;
char* expected;
if (pos >= state.len[i]) {
expected = NULL;
@@ -780,7 +780,7 @@ TEST(string, memrchr) {
memset(state.ptr1, ~seek_char, state.len[i]);
- int pos = random() % state.MAX_LEN;
+ size_t pos = random() % state.MAX_LEN;
char* expected;
if (pos >= state.len[i]) {
expected = NULL;