summaryrefslogtreecommitdiff
path: root/spec/ruby/core/data
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/data')
-rw-r--r--spec/ruby/core/data/inspect_spec.rb59
-rw-r--r--spec/ruby/core/data/to_s_spec.rb58
2 files changed, 58 insertions, 59 deletions
diff --git a/spec/ruby/core/data/inspect_spec.rb b/spec/ruby/core/data/inspect_spec.rb
index 6c97a719e3..e5b9689ca5 100644
--- a/spec/ruby/core/data/inspect_spec.rb
+++ b/spec/ruby/core/data/inspect_spec.rb
@@ -2,62 +2,7 @@ require_relative '../../spec_helper'
require_relative 'fixtures/classes'
describe "Data#inspect" do
- it "returns a string representation showing members and values" do
- a = DataSpecs::Measure.new(42, "km")
- a.inspect.should == '#<data DataSpecs::Measure amount=42, unit="km">'
- end
-
- it "returns a string representation without the class name for anonymous structs" do
- Data.define(:a).new("").inspect.should == '#<data a="">'
- end
-
- it "returns a string representation without the class name for structs nested in anonymous classes" do
- c = Class.new
- c.class_eval <<~DOC
- Foo = Data.define(:a)
- DOC
-
- c::Foo.new("").inspect.should == '#<data a="">'
- end
-
- it "returns a string representation without the class name for structs nested in anonymous modules" do
- m = Module.new
- m.class_eval <<~DOC
- Foo = Data.define(:a)
- DOC
-
- m::Foo.new("").inspect.should == '#<data a="">'
- end
-
- it "does not call #name method" do
- struct = DataSpecs::MeasureWithOverriddenName.new(42, "km")
- struct.inspect.should == '#<data DataSpecs::MeasureWithOverriddenName amount=42, unit="km">'
- end
-
- it "does not call #name method when struct is anonymous" do
- klass = Class.new(DataSpecs::Measure) do
- def self.name
- "A"
- end
- end
- struct = klass.new(42, "km")
- struct.inspect.should == '#<data amount=42, unit="km">'
- end
-
- context "recursive structure" do
- it "returns string representation with recursive attribute replaced with ..." do
- a = DataSpecs::Measure.allocate
- a.send(:initialize, amount: 42, unit: a)
-
- a.inspect.should == "#<data DataSpecs::Measure amount=42, unit=#<data DataSpecs::Measure:...>>"
- end
-
- it "returns string representation with recursive attribute replaced with ... when an anonymous class" do
- klass = Class.new(DataSpecs::Measure)
- a = klass.allocate
- a.send(:initialize, amount: 42, unit: a)
-
- a.inspect.should =~ /#<data amount=42, unit=#<data #<Class:0x.+?>:\.\.\.>>/
- end
+ it "is an alias of Data#to_s" do
+ DataSpecs::Measure.instance_method(:inspect).should == DataSpecs::Measure.instance_method(:to_s)
end
end
diff --git a/spec/ruby/core/data/to_s_spec.rb b/spec/ruby/core/data/to_s_spec.rb
index a552e4659b..e436c21109 100644
--- a/spec/ruby/core/data/to_s_spec.rb
+++ b/spec/ruby/core/data/to_s_spec.rb
@@ -2,8 +2,62 @@ require_relative '../../spec_helper'
require_relative 'fixtures/classes'
describe "Data#to_s" do
- it "is an alias of Data#inspect" do
+ it "returns a string representation showing members and values" do
a = DataSpecs::Measure.new(42, "km")
- a.method(:to_s).should == a.method(:inspect)
+ a.to_s.should == '#<data DataSpecs::Measure amount=42, unit="km">'
+ end
+
+ it "returns a string representation without the class name for anonymous structs" do
+ Data.define(:a).new("").to_s.should == '#<data a="">'
+ end
+
+ it "returns a string representation without the class name for structs nested in anonymous classes" do
+ c = Class.new
+ c.class_eval <<~DOC
+ Foo = Data.define(:a)
+ DOC
+
+ c::Foo.new("").to_s.should == '#<data a="">'
+ end
+
+ it "returns a string representation without the class name for structs nested in anonymous modules" do
+ m = Module.new
+ m.class_eval <<~DOC
+ Foo = Data.define(:a)
+ DOC
+
+ m::Foo.new("").to_s.should == '#<data a="">'
+ end
+
+ it "does not call #name method" do
+ struct = DataSpecs::MeasureWithOverriddenName.new(42, "km")
+ struct.to_s.should == '#<data DataSpecs::MeasureWithOverriddenName amount=42, unit="km">'
+ end
+
+ it "does not call #name method when struct is anonymous" do
+ klass = Class.new(DataSpecs::Measure) do
+ def self.name
+ "A"
+ end
+ end
+ struct = klass.new(42, "km")
+ struct.to_s.should == '#<data amount=42, unit="km">'
+ end
+
+ context "recursive structure" do
+ it "returns string representation with recursive attribute replaced with ..." do
+ a = DataSpecs::Measure.allocate
+ a.send(:initialize, amount: 42, unit: a)
+
+ a.to_s.should == "#<data DataSpecs::Measure amount=42, unit=#<data DataSpecs::Measure:...>>"
+ end
+
+ it "returns string representation with recursive attribute replaced with ... when an anonymous class" do
+ klass = Class.new(DataSpecs::Measure)
+ a = klass.allocate
+ a.send(:initialize, amount: 42, unit: a)
+
+ a.to_s.should =~ /#<data amount=42, unit=#<data #<Class:0x.+?>:\.\.\.>>/
+ end
end
end