From 26cd4548a2022461c0951e77c31319fc3f26fe7c Mon Sep 17 00:00:00 2001 From: TheGrizzlyDev Date: Sun, 30 Jan 2022 17:16:58 +0000 Subject: [PATCH] Add spec for String#size --- spec/core/string/shared/length.rb | 40 +++++++++++++++++++++++++++++++ spec/core/string/size_spec.rb | 7 ++++++ 2 files changed, 47 insertions(+) create mode 100644 spec/core/string/shared/length.rb create mode 100644 spec/core/string/size_spec.rb diff --git a/spec/core/string/shared/length.rb b/spec/core/string/shared/length.rb new file mode 100644 index 000000000..c73d1c9c1 --- /dev/null +++ b/spec/core/string/shared/length.rb @@ -0,0 +1,40 @@ +# encoding: utf-8 + +describe :string_length, shared: true do + it "returns the length of self" do + "".send(@method).should == 0 + "\x00".send(@method).should == 1 + "one".send(@method).should == 3 + "two".send(@method).should == 3 + "three".send(@method).should == 5 + "four".send(@method).should == 4 + end + + # NATFIXME + xit "returns the length of a string in different encodings" do + utf8_str = 'こにちわ' * 100 + utf8_str.size.should == 400 + utf8_str.encode(Encoding::UTF_32BE).size.should == 400 + utf8_str.encode(Encoding::SHIFT_JIS).size.should == 400 + end + + it "returns the length of the new self after encoding is changed" do + str = 'こにちわ' + str.send(@method) + + str.force_encoding('BINARY').send(@method).should == 12 + end + + it "returns the correct length after force_encoding(BINARY)" do + utf8 = "あ" + ascii = "a" + concat = utf8 + ascii + + concat.encoding.should == Encoding::UTF_8 + concat.bytesize.should == 4 + + concat.size.should == 2 + concat.force_encoding(Encoding::ASCII_8BIT) + concat.size.should == 4 + end +end diff --git a/spec/core/string/size_spec.rb b/spec/core/string/size_spec.rb new file mode 100644 index 000000000..9e1f40c5a --- /dev/null +++ b/spec/core/string/size_spec.rb @@ -0,0 +1,7 @@ +require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require_relative 'shared/length' + +describe "String#size" do + it_behaves_like :string_length, :size +end