diff options
| -rw-r--r-- | spec/evendoors_spec.rb | 132 | 
1 files changed, 132 insertions, 0 deletions
| diff --git a/spec/evendoors_spec.rb b/spec/evendoors_spec.rb index e326107..d385e57 100644 --- a/spec/evendoors_spec.rb +++ b/spec/evendoors_spec.rb @@ -57,4 +57,136 @@ describe EvenDoors do          #      end      # +    describe EvenDoors::Particle do +        # +        it "payload manipulation" do +            p = EvenDoors::Particle.new +            # +            p['key']=666 +            p['key'].should eql 666 +            p.data('key').should eql 666 +            p.get_data('key').should eql 666 +            # +            p.set_data 'key', 69 +            p['key'].should eql 69 +            p.data('key').should eql 69 +            p.get_data('key').should eql 69 +        end +        # +        it "payload clone" do +            p = EvenDoors::Particle.new +            p['k00'] = { 'k0'=>0,'k1'=>1} +            p['k11'] = [1,2,3] +            o = EvenDoors::Particle.new +            o.clone_data p +            p['k00']=nil +            p['k00'].should be_nil +            o['k00']['k0'].should eql 0 +            o['k00']['k1'].should eql 1 +            p['k11']=nil +            p['k11'].should be_nil +            o['k11'][0].should eql 1 +            o['k11'][1].should eql 2 +            o['k11'][2].should eql 3 +        end +        # +        it "particle merge" do +            p = EvenDoors::Particle.new +            q = EvenDoors::Particle.new +            o = EvenDoors::Particle.new +            p.merge! q +            p.merge! o +            p.merged(0).should be q +            p.merged(1).should be o +            p.merged(2).should be_nil +            p.merged_shift.should be q +            p.merged(0).should be o +            p.merged(1).should be_nil +            p.merged_shift.should be o +            p.merged(0).should be_nil +        end +        # +        it "routing: add_dsts, next_dst and dst_routed!" do +            p = EvenDoors::Particle.new +            d0 = EvenDoors::Door.new 'door0' +            d1 = EvenDoors::Door.new 'door1' +            p.dst.should be_nil +            p.next_dst.should be_nil +            p.add_dsts 'some?where,///room0///room1/door?action,room/door,door' +            p.next_dst.should eql 'some?where' +            p.dst_routed! d0 +            p.dst.should be d0 +            p.next_dst.should eql 'room0/room1/door?action' +            p.dst_routed! d1 +            p.dst.should be d1 +            p.next_dst.should eql 'room/door' +            p.dst_routed! nil +            p.dst.should be_nil +            p.next_dst.should eql 'door' +        end +        # +        it "routing: set_dst! and split_dst!" do +            p = EvenDoors::Particle.new +            d0 = EvenDoors::Door.new 'door0' +            # +            p.set_dst! 'action', 'room0/room1/door' +            p.split_dst! +            p.room.should eql 'room0/room1' +            p.door.should eql 'door' +            p.action.should eql 'action' +            # +            p.set_dst! 'action', '//room////door' +            p.split_dst! +            p.room.should eql 'room' +            p.door.should eql 'door' +            p.action.should eql 'action' +            # +            p.set_dst! 'action', 'room/door' +            p.split_dst! +            p.room.should eql 'room' +            p.door.should eql 'door' +            p.action.should eql 'action' +            # +            p.clear_dsts! +            p.add_dsts 'door?action,?action' +            p.split_dst! +            p.room.should eql nil +            p.door.should eql 'door' +            p.action.should eql 'action' +            # +            p.dst_routed! d0 +            # +            p.dst.should be d0 +            p.split_dst! +            p.room.should eql nil +            p.door.should eql nil +            p.action.should eql 'action' +            # +        end +        # +        it "routing: error!" do +            p = EvenDoors::Particle.new +            d = EvenDoors::Door.new 'door' +            p.src = d +            p.add_dsts 'door?action,?action' +            p.next_dst.should eql 'door?action' +            p.error! 'err_msg' +            p[EvenDoors::ERROR_FIELD].should eql 'err_msg' +            p.action.should eq EvenDoors::ACT_ERROR +            p.dst.should be d +        end +        # +        it "link fileds and link value" do +            p = EvenDoors::Particle.new +            p['k0'] = 'v0' +            p['k1'] = 'v1' +            p['k2'] = 'v2' +            p.set_link_fields 'k0,k2' +            p.link_value.should eql 'v0v2' +            p.set_link_fields 'k1,k0' +            p.link_value.should eql 'v1v0' +        end +        # +    end +    #  end | 
