diff options
| author | Jérémy Zurcher <jeremy@asynk.ch> | 2012-05-08 23:26:12 +0200 | 
|---|---|---|
| committer | Jérémy Zurcher <jeremy@asynk.ch> | 2012-05-08 23:26:12 +0200 | 
| commit | e8ab416ea1a935b178a3ee361d499066f64f8a5b (patch) | |
| tree | f64f5ce4cb13222933f2ff85749320493771f2d1 | |
| parent | 2dad5aaa3275552f3c7767707b197475d9f8abfd (diff) | |
| download | edoors-ruby-e8ab416ea1a935b178a3ee361d499066f64f8a5b.zip edoors-ruby-e8ab416ea1a935b178a3ee361d499066f64f8a5b.tar.gz  | |
Spec: complete Board coverage
| -rw-r--r-- | spec/evendoors_spec.rb | 67 | 
1 files changed, 67 insertions, 0 deletions
diff --git a/spec/evendoors_spec.rb b/spec/evendoors_spec.rb index 48a6a1a..259c3bc 100644 --- a/spec/evendoors_spec.rb +++ b/spec/evendoors_spec.rb @@ -328,4 +328,71 @@ describe EvenDoors do          #      end      # +    describe EvenDoors::Board do +        # +        it "require_p release_p should work" do +            board = EvenDoors::Board.new 'hell' +            p0 = board.require_p EvenDoors::Particle +            p0.src.should be board +            p1 = board.require_p EvenDoors::Particle +            p1.src.should be board +            (p0===p1).should be_false +            board.release_p p0 +            p2 = board.require_p EvenDoors::Particle +            p2.src.should be board +            (p0===p2).should be_true +        end +        # +        it "should" do +            p0 = EvenDoors::Particle.new +            p0['k0'] = 'v0' +            p0['k1'] = 'neither' +            p0['k2'] = 'v2' +            p0.set_link_fields 'k0,k2' +            p0.link_value.should eql 'v0v2' +            p1 = EvenDoors::Particle.new +            p1['k0'] = 'v0' +            p1['k1'] = 'nore' +            p1['k2'] = 'v2' +            p1.set_link_fields 'k0,k2' +            p1.link_value.should eql 'v0v2' +            P0 = p0 +            P1 = p1 +            class Board0 < EvenDoors::Board +                attr_reader :ok, :follow +                def receive_p p +                    @ok = false +                    case p.action +                    when EvenDoors::ACT_FOLLOW +                        @follow = true +                        @ok = (p===P0 and p.merged(0)===P1) +                    else +                        @follow = false +                        @ok = (p===P1 and p.merged(0)===P0) +                    end +                end +            end +            b0 = Board0.new 'door0' +            b0.process_p p0 +            p0.merged(0).should be_nil +            b0.process_p p1 +            b0.ok.should be_true +            b0.follow.should be_false +            # +            p1.merged_shift +            # +            b0.process_p p0 +            p0.merged(0).should be_nil +            # need to set it to p0 too, so casein Board0 is ok +            p0.set_dst! EvenDoors::ACT_FOLLOW +            p0.split_dst! +            p1.set_dst! EvenDoors::ACT_FOLLOW +            p1.split_dst! +            b0.process_p p1 +            b0.ok.should be_true +            b0.follow.should be_true +        end +        # +    end +    #  end  | 
