Sha256: c8905d81628356daca5cf71ee0e11552fa47729f07951bd5d76586c24ea30768
Contents?: true
Size: 1.97 KB
Versions: 1
Compression:
Stored size: 1.97 KB
Contents
# encoding: utf-8 describe AbstractMapper::Rules do let(:rules) { described_class.new } let(:foo) { AbstractMapper::Test::Foo = Class.new(AbstractMapper::SoleRule) } let(:bar) { AbstractMapper::Test::Bar = Class.new(AbstractMapper::PairRule) } describe ".new" do subject { rules } it { is_expected.to be_frozen } end # describe .new describe "#registry" do subject { rules.registry } context "by default" do let(:rules) { described_class.new } it { is_expected.to eql [] } it { is_expected.to be_frozen } end # context context "initialized" do let(:rules) { described_class.new registry } let(:registry) { [foo, bar] } it { is_expected.to eql registry } it { is_expected.to be_frozen } it "doesn't freezes the source" do expect { subject }.not_to change { registry.frozen? } end end # context end # describe #registry describe "#<<" do subject { rules << bar } let(:rules) { described_class.new [foo] } it "updates the registry" do expect(subject).to be_kind_of described_class expect(subject.registry).to eql [foo, bar] end end # describe #<< describe "#[]" do before do foo.send(:define_method, :optimize?) { true } foo.send(:define_method, :optimize) { node + 1 } bar.send(:define_method, :optimize?) { left == right } bar.send(:define_method, :optimize) { left + right } end context "when no rule is set" do let(:nodes) { [1, 1, 2, 5] } subject { rules[nodes] } it { is_expected.to eql nodes } end # context context "when rules are set" do let(:rules) { described_class.new [foo, bar, foo] } let(:nodes) { [1, 1, 2] } subject { rules[nodes] } it { is_expected.to eql [5, 4] } # [1, 1, 2] -foo-> [2, 2, 3] -bar-> [4, 3] -foo-> [5, 4] end # context end # describe #[] end # describe AbstractMapper::Rules
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
abstract_mapper-0.0.2 | spec/unit/abstract_mapper/rules_spec.rb |