diff --git a/library/random/formatter/alphanumeric_spec.rb b/library/random/formatter/alphanumeric_spec.rb index 8e3141302..bb50c6bb0 100644 --- a/library/random/formatter/alphanumeric_spec.rb +++ b/library/random/formatter/alphanumeric_spec.rb @@ -1,4 +1,5 @@ require_relative '../../../spec_helper' +require_relative 'shared/interface' ruby_version_is "3.1" do require 'random/formatter' @@ -58,4 +59,6 @@ def @object.bytes(n) @object.alphanumeric(1, chars: [to_s, to_s]).should == "[mock to_s]" end end + + it_behaves_like :random_formatter_interface, :alphanumeric end diff --git a/library/random/formatter/shared/interface.rb b/library/random/formatter/shared/interface.rb new file mode 100644 index 000000000..6b4738f6a --- /dev/null +++ b/library/random/formatter/shared/interface.rb @@ -0,0 +1,33 @@ +require_relative '../../../../spec_helper' + +describe :random_formatter_interface, shared: true do + it "calls the method #bytes for 4 blocks of 4 bytes" do + bytes = mock('bytes') + bytes.extend(Random::Formatter) + bytes.should_receive(:bytes).with(4).exactly(4).and_return("\x00".b * 4) + bytes.send(@method) + end + + it "has the same output if the random byte streams are the same" do + bytes = Object.new + bytes.extend(Random::Formatter) + def bytes.bytes(n) + "\x00".b * n + end + bytes.send(@method).should == bytes.send(@method) + end + + it "has different output if the random byte streams are not the same" do + lhs = Object.new + lhs.extend(Random::Formatter) + def lhs.bytes(n) + "\x00".b * n + end + rhs = Object.new + rhs.extend(Random::Formatter) + def rhs.bytes(n) + "\x01".b * n + end + lhs.send(@method).should != rhs.send(@method) + end +end