diff options
| author | nagachika <nagachika@ruby-lang.org> | 2023-06-24 16:59:30 +0900 |
|---|---|---|
| committer | nagachika <nagachika@ruby-lang.org> | 2023-06-24 16:59:30 +0900 |
| commit | 9fca561980c6d024229d72600180b20f3f77536f (patch) | |
| tree | ce07a2046854dd93d669f91243569c38a5671dbd /spec/ruby/core/float | |
| parent | f89101fa3610a7b977801d60b85bcc1ea2f6dee4 (diff) | |
merge revision(s) cd5e6cc0ea48353c88d921b885b552dc76da255c,bbf54ec334fe2edd7669a944d88d17efde49a412: [Backport #19307]
Update to ruby/mspec@fef9b81
---
spec/mspec/tool/tag_from_output.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Update to ruby/spec@9d69b95
---
spec/ruby/core/array/keep_if_spec.rb | 1 +
spec/ruby/core/array/pack/c_spec.rb | 14 +-
spec/ruby/core/array/pack/shared/basic.rb | 40 ++++
spec/ruby/core/array/pack/shared/float.rb | 66 ++++++-
spec/ruby/core/array/pack/shared/integer.rb | 96 +++++++--
spec/ruby/core/array/pack/shared/numeric_basic.rb | 10 +-
spec/ruby/core/array/pack/shared/unicode.rb | 14 +-
spec/ruby/core/array/pack/w_spec.rb | 14 +-
spec/ruby/core/array/shared/unshift.rb | 18 ++
spec/ruby/core/array/values_at_spec.rb | 1 +
spec/ruby/core/array/zip_spec.rb | 6 +
spec/ruby/core/class/subclasses_spec.rb | 22 +++
spec/ruby/core/dir/home_spec.rb | 44 +++--
spec/ruby/core/dir/mkdir_spec.rb | 18 +-
spec/ruby/core/enumerable/zip_spec.rb | 5 +
spec/ruby/core/float/comparison_spec.rb | 35 ++--
spec/ruby/core/float/divmod_spec.rb | 2 +-
spec/ruby/core/float/gt_spec.rb | 21 ++
spec/ruby/core/float/gte_spec.rb | 21 ++
spec/ruby/core/float/lt_spec.rb | 21 ++
spec/ruby/core/float/lte_spec.rb | 21 ++
spec/ruby/core/float/shared/equal.rb | 21 ++
spec/ruby/core/io/gets_spec.rb | 4 +
spec/ruby/core/io/lineno_spec.rb | 9 +-
spec/ruby/core/io/new_spec.rb | 2 +
spec/ruby/core/io/readline_spec.rb | 4 +
spec/ruby/core/io/readlines_spec.rb | 4 +
spec/ruby/core/io/shared/each.rb | 4 +
spec/ruby/core/io/shared/new.rb | 2 +
spec/ruby/core/io/shared/pos.rb | 8 +-
spec/ruby/core/io/shared/readlines.rb | 4 +
spec/ruby/core/io/sysseek_spec.rb | 2 +-
spec/ruby/core/kernel/shared/load.rb | 31 ++-
spec/ruby/core/kernel/singleton_class_spec.rb | 2 +
spec/ruby/core/marshal/dump_spec.rb | 45 ++++-
spec/ruby/core/marshal/fixtures/classes.rb | 4 +
spec/ruby/core/matchdata/values_at_spec.rb | 73 ++++++-
spec/ruby/core/module/fixtures/classes.rb | 1 +
spec/ruby/core/module/include_spec.rb | 4 +-
spec/ruby/core/module/prepend_spec.rb | 12 ++
.../ruby/core/objectspace/define_finalizer_spec.rb | 22 +++
spec/ruby/core/process/constants_spec.rb | 1 +
spec/ruby/core/process/detach_spec.rb | 29 +++
spec/ruby/core/process/spawn_spec.rb | 10 +
spec/ruby/core/process/times_spec.rb | 2 +-
spec/ruby/core/queue/initialize_spec.rb | 13 +-
spec/ruby/core/refinement/import_methods_spec.rb | 34 ++++
spec/ruby/core/refinement/include_spec.rb | 27 +++
spec/ruby/core/refinement/prepend_spec.rb | 27 +++
spec/ruby/core/regexp/initialize_spec.rb | 2 +-
spec/ruby/core/signal/trap_spec.rb | 12 ++
spec/ruby/core/string/byteslice_spec.rb | 6 +
spec/ruby/core/string/capitalize_spec.rb | 4 +
spec/ruby/core/string/chars_spec.rb | 7 +-
spec/ruby/core/string/chomp_spec.rb | 4 +
spec/ruby/core/string/chop_spec.rb | 4 +
spec/ruby/core/string/clone_spec.rb | 4 +
spec/ruby/core/string/delete_prefix_spec.rb | 4 +
spec/ruby/core/string/delete_spec.rb | 4 +
spec/ruby/core/string/delete_suffix_spec.rb | 4 +
spec/ruby/core/string/downcase_spec.rb | 4 +
spec/ruby/core/string/dump_spec.rb | 10 +-
spec/ruby/core/string/dup_spec.rb | 4 +
spec/ruby/core/string/lines_spec.rb | 1 -
spec/ruby/core/string/reverse_spec.rb | 4 +
spec/ruby/core/string/scan_spec.rb | 6 +
spec/ruby/core/string/scrub_spec.rb | 10 +
spec/ruby/core/string/shared/each_line.rb | 6 +
spec/ruby/core/string/shared/partition.rb | 15 ++
spec/ruby/core/string/shared/slice.rb | 13 +-
spec/ruby/core/string/shared/strip.rb | 4 +
spec/ruby/core/string/shared/succ.rb | 4 +
spec/ruby/core/string/split_spec.rb | 17 +-
spec/ruby/core/string/squeeze_spec.rb | 5 +
spec/ruby/core/string/swapcase_spec.rb | 4 +
spec/ruby/core/string/undump_spec.rb | 2 +-
spec/ruby/core/string/unpack/b_spec.rb | 28 ++-
spec/ruby/core/string/unpack/c_spec.rb | 14 +-
spec/ruby/core/string/unpack/h_spec.rb | 28 ++-
spec/ruby/core/string/unpack/shared/basic.rb | 28 ---
spec/ruby/core/string/unpack/shared/float.rb | 60 +++++-
spec/ruby/core/string/unpack/shared/integer.rb | 88 +++++++--
spec/ruby/core/string/unpack/shared/unicode.rb | 14 +-
spec/ruby/core/string/unpack/w_spec.rb | 14 +-
spec/ruby/core/string/unpack1_spec.rb | 12 +-
spec/ruby/core/string/unpack_spec.rb | 34 ++++
spec/ruby/core/string/upcase_spec.rb | 4 +
spec/ruby/core/string/valid_encoding/utf_8_spec.rb | 214 +++++++++++++++++++++
spec/ruby/core/struct/values_at_spec.rb | 55 +++++-
spec/ruby/core/symbol/shared/id2name.rb | 7 +
spec/ruby/core/time/at_spec.rb | 16 ++
spec/ruby/core/time/localtime_spec.rb | 16 +-
spec/ruby/core/time/new_spec.rb | 94 +++++++--
spec/ruby/core/time/shared/gmtime.rb | 4 +-
spec/ruby/core/time/shared/time_params.rb | 11 +-
spec/ruby/core/time/strftime_spec.rb | 40 +++-
spec/ruby/core/time/utc_spec.rb | 41 +++-
spec/ruby/core/time/zone_spec.rb | 20 +-
spec/ruby/core/tracepoint/inspect_spec.rb | 9 +
spec/ruby/fixtures/code/load_wrap_fixture.rb | 12 ++
spec/ruby/fixtures/code/wrap_fixture.rb | 9 -
spec/ruby/language/case_spec.rb | 4 +-
.../ruby/language/regexp/character_classes_spec.rb | 5 +
spec/ruby/library/coverage/running_spec.rb | 20 ++
spec/ruby/library/date/civil_spec.rb | 7 +-
spec/ruby/library/objectspace/fixtures/trace.rb | 5 +
spec/ruby/library/objectspace/trace_spec.rb | 15 ++
spec/ruby/library/openssl/x509/name/verify_spec.rb | 4 +-
spec/ruby/library/stringio/initialize_spec.rb | 85 ++++++++
spec/ruby/library/stringio/new_spec.rb | 8 +
spec/ruby/library/stringio/shared/write.rb | 22 +++
spec/ruby/optional/capi/ext/io_spec.c | 43 +++++
spec/ruby/optional/capi/io_spec.rb | 15 ++
spec/ruby/shared/rational/Rational.rb | 48 ++---
114 files changed, 1963 insertions(+), 245 deletions(-)
create mode 100644 spec/ruby/core/marshal/fixtures/classes.rb
create mode 100644 spec/ruby/core/refinement/import_methods_spec.rb
create mode 100644 spec/ruby/core/refinement/include_spec.rb
create mode 100644 spec/ruby/core/refinement/prepend_spec.rb
create mode 100644 spec/ruby/core/string/unpack_spec.rb
create mode 100644 spec/ruby/core/string/valid_encoding/utf_8_spec.rb
create mode 100644 spec/ruby/fixtures/code/load_wrap_fixture.rb
delete mode 100644 spec/ruby/fixtures/code/wrap_fixture.rb
create mode 100644 spec/ruby/library/coverage/running_spec.rb
create mode 100644 spec/ruby/library/objectspace/fixtures/trace.rb
create mode 100644 spec/ruby/library/objectspace/trace_spec.rb
create mode 100644 spec/ruby/library/stringio/new_spec.rb
Diffstat (limited to 'spec/ruby/core/float')
| -rw-r--r-- | spec/ruby/core/float/comparison_spec.rb | 35 | ||||
| -rw-r--r-- | spec/ruby/core/float/divmod_spec.rb | 2 | ||||
| -rw-r--r-- | spec/ruby/core/float/gt_spec.rb | 21 | ||||
| -rw-r--r-- | spec/ruby/core/float/gte_spec.rb | 21 | ||||
| -rw-r--r-- | spec/ruby/core/float/lt_spec.rb | 21 | ||||
| -rw-r--r-- | spec/ruby/core/float/lte_spec.rb | 21 | ||||
| -rw-r--r-- | spec/ruby/core/float/shared/equal.rb | 21 |
7 files changed, 126 insertions, 16 deletions
diff --git a/spec/ruby/core/float/comparison_spec.rb b/spec/ruby/core/float/comparison_spec.rb index 53e7ec332a..1373b3a1fb 100644 --- a/spec/ruby/core/float/comparison_spec.rb +++ b/spec/ruby/core/float/comparison_spec.rb @@ -7,9 +7,25 @@ describe "Float#<=>" do ((bignum_value*1.1) <=> bignum_value).should == 1 end - it "returns nil when either argument is NaN" do - (nan_value <=> 71.2).should be_nil - (1771.176 <=> nan_value).should be_nil + it "returns nil if one side is NaN" do + [1.0, 42, bignum_value].each { |n| + (nan_value <=> n).should == nil + (n <=> nan_value).should == nil + } + end + + it "handles positive infinity" do + [1.0, 42, bignum_value].each { |n| + (infinity_value <=> n).should == 1 + (n <=> infinity_value).should == -1 + } + end + + it "handles negative infinity" do + [1.0, 42, bignum_value].each { |n| + (-infinity_value <=> n).should == -1 + (n <=> -infinity_value).should == 1 + } end it "returns nil when the given argument is not a Float" do @@ -49,21 +65,10 @@ describe "Float#<=>" do }.should raise_error(TypeError, "coerce must return [x, y]") end - # The 4 tests below are taken from matz's revision 23730 for Ruby trunk - # - it "returns 1 when self is Infinity and other is an Integer" do + it "returns the correct result when one side is infinite" do (infinity_value <=> Float::MAX.to_i*2).should == 1 - end - - it "returns -1 when self is negative and other is Infinity" do (-Float::MAX.to_i*2 <=> infinity_value).should == -1 - end - - it "returns -1 when self is -Infinity and other is negative" do (-infinity_value <=> -Float::MAX.to_i*2).should == -1 - end - - it "returns 1 when self is negative and other is -Infinity" do (-Float::MAX.to_i*2 <=> -infinity_value).should == 1 end diff --git a/spec/ruby/core/float/divmod_spec.rb b/spec/ruby/core/float/divmod_spec.rb index 523217ac1f..dad45a9b89 100644 --- a/spec/ruby/core/float/divmod_spec.rb +++ b/spec/ruby/core/float/divmod_spec.rb @@ -23,7 +23,7 @@ describe "Float#divmod" do # Behaviour established as correct in r23953 it "raises a FloatDomainError if other is NaN" do - -> { 1.divmod(nan_value) }.should raise_error(FloatDomainError) + -> { 1.0.divmod(nan_value) }.should raise_error(FloatDomainError) end # Behaviour established as correct in r23953 diff --git a/spec/ruby/core/float/gt_spec.rb b/spec/ruby/core/float/gt_spec.rb index 0d73f1c3df..33078e07ce 100644 --- a/spec/ruby/core/float/gt_spec.rb +++ b/spec/ruby/core/float/gt_spec.rb @@ -14,4 +14,25 @@ describe "Float#>" do -> { 5.0 > "4" }.should raise_error(ArgumentError) -> { 5.0 > mock('x') }.should raise_error(ArgumentError) end + + it "returns false if one side is NaN" do + [1.0, 42, bignum_value].each { |n| + (nan_value > n).should == false + (n > nan_value).should == false + } + end + + it "handles positive infinity" do + [1.0, 42, bignum_value].each { |n| + (infinity_value > n).should == true + (n > infinity_value).should == false + } + end + + it "handles negative infinity" do + [1.0, 42, bignum_value].each { |n| + (-infinity_value > n).should == false + (n > -infinity_value).should == true + } + end end diff --git a/spec/ruby/core/float/gte_spec.rb b/spec/ruby/core/float/gte_spec.rb index 98ec60b70b..44c0a81b43 100644 --- a/spec/ruby/core/float/gte_spec.rb +++ b/spec/ruby/core/float/gte_spec.rb @@ -14,4 +14,25 @@ describe "Float#>=" do -> { 5.0 >= "4" }.should raise_error(ArgumentError) -> { 5.0 >= mock('x') }.should raise_error(ArgumentError) end + + it "returns false if one side is NaN" do + [1.0, 42, bignum_value].each { |n| + (nan_value >= n).should == false + (n >= nan_value).should == false + } + end + + it "handles positive infinity" do + [1.0, 42, bignum_value].each { |n| + (infinity_value >= n).should == true + (n >= infinity_value).should == false + } + end + + it "handles negative infinity" do + [1.0, 42, bignum_value].each { |n| + (-infinity_value >= n).should == false + (n >= -infinity_value).should == true + } + end end diff --git a/spec/ruby/core/float/lt_spec.rb b/spec/ruby/core/float/lt_spec.rb index c01b6e0e02..94dcfc42f8 100644 --- a/spec/ruby/core/float/lt_spec.rb +++ b/spec/ruby/core/float/lt_spec.rb @@ -14,4 +14,25 @@ describe "Float#<" do -> { 5.0 < "4" }.should raise_error(ArgumentError) -> { 5.0 < mock('x') }.should raise_error(ArgumentError) end + + it "returns false if one side is NaN" do + [1.0, 42, bignum_value].each { |n| + (nan_value < n).should == false + (n < nan_value).should == false + } + end + + it "handles positive infinity" do + [1.0, 42, bignum_value].each { |n| + (infinity_value < n).should == false + (n < infinity_value).should == true + } + end + + it "handles negative infinity" do + [1.0, 42, bignum_value].each { |n| + (-infinity_value < n).should == true + (n < -infinity_value).should == false + } + end end diff --git a/spec/ruby/core/float/lte_spec.rb b/spec/ruby/core/float/lte_spec.rb index 66f2ddc2c7..7b5a86ee76 100644 --- a/spec/ruby/core/float/lte_spec.rb +++ b/spec/ruby/core/float/lte_spec.rb @@ -15,4 +15,25 @@ describe "Float#<=" do -> { 5.0 <= "4" }.should raise_error(ArgumentError) -> { 5.0 <= mock('x') }.should raise_error(ArgumentError) end + + it "returns false if one side is NaN" do + [1.0, 42, bignum_value].each { |n| + (nan_value <= n).should == false + (n <= nan_value).should == false + } + end + + it "handles positive infinity" do + [1.0, 42, bignum_value].each { |n| + (infinity_value <= n).should == false + (n <= infinity_value).should == true + } + end + + it "handles negative infinity" do + [1.0, 42, bignum_value].each { |n| + (-infinity_value <= n).should == true + (n <= -infinity_value).should == false + } + end end diff --git a/spec/ruby/core/float/shared/equal.rb b/spec/ruby/core/float/shared/equal.rb index 668aa069b5..4d524e1cf2 100644 --- a/spec/ruby/core/float/shared/equal.rb +++ b/spec/ruby/core/float/shared/equal.rb @@ -14,4 +14,25 @@ describe :float_equal, shared: true do 1.0.send(@method, x).should == false 2.0.send(@method, x).should == true end + + it "returns false if one side is NaN" do + [1.0, 42, bignum_value].each { |n| + (nan_value.send(@method, n)).should == false + (n.send(@method, nan_value)).should == false + } + end + + it "handles positive infinity" do + [1.0, 42, bignum_value].each { |n| + (infinity_value.send(@method, n)).should == false + (n.send(@method, infinity_value)).should == false + } + end + + it "handles negative infinity" do + [1.0, 42, bignum_value].each { |n| + ((-infinity_value).send(@method, n)).should == false + (n.send(@method, -infinity_value)).should == false + } + end end |
