summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-01-26 18:37:53 +0900
committerKOBAYASHI Shuji <[email protected]>2019-01-26 18:37:53 +0900
commit1cd57006f37c9f86b85491ceacf6ab285bb85475 (patch)
tree976d885cffeddf97228b0b0338d3eef2b80b0af3
parentaee67eaf62235196a2d81712bee801e4134108a5 (diff)
downloadmruby-1cd57006f37c9f86b85491ceacf6ab285bb85475.tar.gz
mruby-1cd57006f37c9f86b85491ceacf6ab285bb85475.zip
Refine error message for time interval
Time interval value can be zero, and float (in `Kernel#sleep`)
-rw-r--r--mrbgems/mruby-sleep/src/mrb_sleep.c6
-rw-r--r--mrbgems/mruby-sleep/test/sleep_test.rb16
2 files changed, 18 insertions, 4 deletions
diff --git a/mrbgems/mruby-sleep/src/mrb_sleep.c b/mrbgems/mruby-sleep/src/mrb_sleep.c
index 0428f29eb..3f8ef90cf 100644
--- a/mrbgems/mruby-sleep/src/mrb_sleep.c
+++ b/mrbgems/mruby-sleep/src/mrb_sleep.c
@@ -51,7 +51,7 @@ mrb_f_sleep(mrb_state *mrb, mrb_value self)
usleep(sec * 1000000);
}
else {
- mrb_raise(mrb, E_ARGUMENT_ERROR, "time interval must be positive integer");
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "time interval must not be negative");
}
#else
mrb_int sec;
@@ -60,7 +60,7 @@ mrb_f_sleep(mrb_state *mrb, mrb_value self)
if (sec >= 0) {
sleep(sec);
} else {
- mrb_raise(mrb, E_ARGUMENT_ERROR, "time interval must be positive integer");
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "time interval must not be negative");
}
#endif
end = time(0) - beg;
@@ -94,7 +94,7 @@ mrb_f_usleep(mrb_state *mrb, mrb_value self)
if (usec >= 0) {
usleep(usec);
} else {
- mrb_raise(mrb, E_ARGUMENT_ERROR, "time interval must be positive integer");
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "time interval must not be negative integer");
}
#ifdef _WIN32
diff --git a/mrbgems/mruby-sleep/test/sleep_test.rb b/mrbgems/mruby-sleep/test/sleep_test.rb
index 06a6d73fa..f05b7a30b 100644
--- a/mrbgems/mruby-sleep/test/sleep_test.rb
+++ b/mrbgems/mruby-sleep/test/sleep_test.rb
@@ -1,13 +1,27 @@
assert("sleep works") do
assert_nothing_raised { sleep(1) }
+ assert_nothing_raised { sleep(0) }
end
-assert("sleep would not accept negative value") do
+assert("sleep would accept non-negative float value") do
+ skip unless Object.const_defined?(:Float)
+ assert_nothing_raised { sleep(0.01) }
+ assert_nothing_raised { sleep(0.0) }
+ assert_nothing_raised { sleep(-0.0) }
+end
+
+assert("sleep would not accept negative integer value") do
assert_raise(ArgumentError) { sleep(-1) }
end
+assert("sleep would not accept negative float value") do
+ skip unless Object.const_defined?(:Float)
+ assert_raise(ArgumentError) { sleep(-0.1) }
+end
+
assert("usleep works") do
assert_nothing_raised { usleep(100) }
+ assert_nothing_raised { usleep(0) }
end
assert("usleep would not accept negative value") do