diff options
| author | Jérémy Zurcher <jeremy@asynk.ch> | 2012-06-27 11:49:10 +0200 | 
|---|---|---|
| committer | Jérémy Zurcher <jeremy@asynk.ch> | 2012-06-27 11:49:10 +0200 | 
| commit | 06fe1fe549d6c7dbb643a07a485d24c3e45216d3 (patch) | |
| tree | 90947a79c9732a3424b28fd972de06e070e95c53 /spec | |
| parent | 2526cd9aef3bb7dc04901be4067dd211f03fe9b5 (diff) | |
| parent | 7cfcad744d3e18cbe8a9f71c43a0cad1e8fdd6b4 (diff) | |
| download | edoors-ruby-06fe1fe549d6c7dbb643a07a485d24c3e45216d3.zip edoors-ruby-06fe1fe549d6c7dbb643a07a485d24c3e45216d3.tar.gz  | |
Merge branch 'rewrite0'
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/board_spec.rb | 14 | ||||
| -rw-r--r-- | spec/door_spec.rb | 6 | ||||
| -rw-r--r-- | spec/link_spec.rb | 23 | ||||
| -rw-r--r-- | spec/particle_spec.rb | 55 | ||||
| -rw-r--r-- | spec/room_spec.rb | 19 | ||||
| -rw-r--r-- | spec/spin_spec.rb | 8 | 
6 files changed, 68 insertions, 57 deletions
diff --git a/spec/board_spec.rb b/spec/board_spec.rb index 7e291c6..1b2e0c4 100644 --- a/spec/board_spec.rb +++ b/spec/board_spec.rb @@ -16,11 +16,11 @@ describe Edoors::Board do      #      it "require_p release_p" do          board = Edoors::Board.new 'hell', @spin -        p0 = board.require_p Edoors::Particle +        p0 = board.require_p          p1 = board.require_p Edoors::Particle          (p0===p1).should be_false          board.release_p p0 -        p2 = board.require_p Edoors::Particle +        p2 = board.require_p          (p0===p2).should be_true      end      # @@ -29,14 +29,14 @@ describe Edoors::Board do          p0['k0'] = 'v0'          p0['k1'] = 'neither'          p0['k2'] = 'v2' -        p0.set_link_fields 'k0,k2' -        p0.link_value.should eql 'v0v2' +        p0.set_link_keys 'k0', 'k2' +        p0.link_value.should == {'k0'=>'v0','k2'=>'v2'}          p1 = Edoors::Particle.new          p1['k0'] = 'v0'          p1['k1'] = 'nore'          p1['k2'] = 'v2' -        p1.set_link_fields 'k0,k2' -        p1.link_value.should eql 'v0v2' +        p1.set_link_keys 'k0', 'k2' +        p1.link_value.should == {'k0'=>'v0','k2'=>'v2'}          P0 = p0          P1 = p1          class Board0 < Edoors::Board @@ -79,7 +79,7 @@ describe Edoors::Board do          p0 = Edoors::Particle.new          p1 = Edoors::Particle.new          p1['v0']=0 -        p1.set_link_fields 'v0' +        p1.set_link_keys 'v0'          board.process_p p0          board.process_p p1          hell = Edoors::Board.json_create( JSON.load( JSON.generate(board) ) ) diff --git a/spec/door_spec.rb b/spec/door_spec.rb index 0c2dafe..d86bb5a 100644 --- a/spec/door_spec.rb +++ b/spec/door_spec.rb @@ -17,10 +17,10 @@ describe Edoors::Door do      it "require_p release_p" do          door = Edoors::Door.new 'hell', @spin          p0 = door.require_p Edoors::Particle -        p1 = door.require_p Edoors::Particle +        p1 = door.require_p          (p0===p1).should be_false          door.release_p p0 -        p2 = door.require_p Edoors::Particle +        p2 = door.require_p          (p0===p2).should be_true      end      # @@ -67,7 +67,7 @@ describe Edoors::Door do          p0.add_dst 'RELEASE'          p0.split_dst!          d0.process_p p0 -        p1 = d0.require_p Edoors::Particle +        p1 = d0.require_p          p1.should be p0          p0.clear_dsts!          # diff --git a/spec/link_spec.rb b/spec/link_spec.rb index 0de1d93..49f086a 100644 --- a/spec/link_spec.rb +++ b/spec/link_spec.rb @@ -10,26 +10,23 @@ describe Edoors::Link do          @spin = Edoors::Spin.new 'dom0'          p = @spin.require_p Edoors::Particle          p.set_data Edoors::LNK_SRC, 'input1' -        p.set_data Edoors::LNK_DSTS, 'concat1?follow,output1' -        p.set_data Edoors::LNK_FIELDS, 'f0,f2' -        p.set_data Edoors::LNK_CONDF, 'f0,f1,f2' -        p.set_data Edoors::LNK_CONDV, 'v0v1v2' -        lnk = Edoors::Link.from_particle_data p +        p.set_data Edoors::LNK_DSTS, ['concat1?follow','output1'] +        p.set_data Edoors::LNK_KEYS, ['f0','f2'] +        p.set_data Edoors::LNK_VALUE, {'f0'=>'v0','f1'=>'v1','f2'=>'v2'} +        lnk = Edoors::Link.from_particle p          lnk.src.should eql 'input1' -        lnk.dsts.should eql 'concat1?follow,output1' -        lnk.fields.should eql 'f0,f2' -        lnk.cond_fields.should eql 'f0,f1,f2' -        lnk.cond_value.should eql 'v0v1v2' +        lnk.dsts.should eql ['concat1?follow','output1'] +        lnk.keys.should eql ['f0','f2'] +        lnk.value.should == {'f0'=>'v0','f1'=>'v1','f2'=>'v2'}      end      #      it "link->json->link" do -        link = Edoors::Link.new  'input1', 'concat1?follow,output1', 'f0,f2', 'f0,f1,f2', 'v0v1v2' +        link = Edoors::Link.new 'input1', ['concat1?follow','output1'], ['f0','f2'], {'f0'=>'v0','f1'=>'v1','f2'=>'v2'}          lnk = Edoors::Link.json_create( JSON.load( JSON.generate(link) ) )          link.src.should eql lnk.src          link.dsts.should eql lnk.dsts -        link.fields.should eql lnk.fields -        link.cond_fields.should eql lnk.cond_fields -        link.cond_value.should eql lnk.cond_value +        link.keys.should eql lnk.keys +        link.value.should eql lnk.value          JSON.generate(link).should eql JSON.generate(lnk)      end      # diff --git a/spec/particle_spec.rb b/spec/particle_spec.rb index fe6508f..8d926ef 100644 --- a/spec/particle_spec.rb +++ b/spec/particle_spec.rb @@ -74,7 +74,7 @@ describe Edoors::Particle do          d1 = Edoors::Door.new 'door1', nil          p.dst.should be_nil          p.next_dst.should be_nil -        p.add_dsts 'some?where,room0/room1/door?action,room/door,door' +        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 @@ -155,7 +155,7 @@ describe Edoors::Particle do          p.action.should eql 'action'          p.clear_dsts!          # -        p.add_dsts 'door?action,?action' +        p.add_dsts 'door?action', '?action'          p.split_dst!          p.room.should be_nil          p.door.should eql 'door' @@ -175,7 +175,7 @@ describe Edoors::Particle do          p = Edoors::Particle.new          d = Edoors::Door.new 'door', nil          p.init! d -        p.add_dsts 'door?action,?action' +        p.add_dsts 'door?action', '?action'          p.next_dst.should eql 'door?action'          p.error! 'err_msg'          p[Edoors::FIELD_ERROR_MSG].should eql 'err_msg' @@ -183,17 +183,30 @@ describe Edoors::Particle do          p.dst.should be d      end      # -    it "link fields and link value" do +    it "link keys and link values" do +        p = Edoors::Particle.new +        p['k0'] = 'v0' +        p.set_data 'k1', 'v1' +        p['k2'] = 'v2' +        p['k3'] = 'v3' +        p.set_link_keys 'k0', 'k2', 'k1' +        p.link_value.should == {'k0'=>'v0','k1'=>'v1','k2'=>'v2'} +        p.del_data 'k0' +        p.link_value.should == {'k1'=>'v1','k2'=>'v2'} +        p.set_link_keys 'k1', 'k0' +        p.link_value.should == {'k1'=>'v1'} +        p['k1']='vX' +        p.link_value.should == {'k1'=>'vX'} +    end +    # +    it 'link_with?' do          p = Edoors::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' -        p['k0']='vx' -        p.link_value.should eql 'v1vx' +        p.link_with?(Edoors::Link.new('', '', '')).should be_true +        p.link_with?(Edoors::Link.new('', '', '', {'k0'=>'v0','k1'=>'v1'})).should be_true +        p.link_with?(Edoors::Link.new('', '', '', {'k0'=>'v2','k1'=>'v1'})).should be_false      end      #      it "apply_link!" do @@ -201,18 +214,18 @@ describe Edoors::Particle do          p['k0'] = 'v0'          p['k1'] = 'v1'          p['k2'] = 'v2' -        p.set_link_fields 'k0,k2' -        p.add_dsts 'door?action,?action' +        p.set_link_keys 'k0', 'k2' +        p.add_dsts 'door?action', '?action'          p.src.should be_nil -        p.link_value.should eql 'v0v2' +        p.link_value.should == {'k0'=>'v0','k2'=>'v2'}          p.next_dst.should eql 'door?action' -        lnk = Edoors::Link.new('door0', 'door1?get,door2', 'k1', 'f0,f1', 'v0v1') +        lnk = Edoors::Link.new('door0', ['door1?get','door2'], 'k1', {'f0'=>'v0','f1'=>'v1'})          f = Fake.new 'fake', nil          lnk.door = f          p.apply_link! lnk          p.src.should be f          p.next_dst.should eql 'door1?get' -        p.link_value.should eql 'v1' +        p.link_value.should == {'k1'=>'v1'}      end      #      it "particle->json->particle" do @@ -226,8 +239,8 @@ describe Edoors::Particle do          p0['k1'] = 'v1'          p0['k2'] = 'v2'          p0.init! s3 -        p0.set_link_fields 'k0,k2' -        p0.add_dsts 'room0/room1/room2/doorX?myaction,door?action,?action' +        p0.set_link_keys 'k0', 'k2' +        p0.add_dsts 'room0/room1/room2/doorX?myaction', 'door?action', '?action'          p0.split_dst!          p1 = Edoors::Particle.new          p1['k3'] = 'v6' @@ -235,8 +248,8 @@ describe Edoors::Particle do          p1['k5'] = 'v8'          p1.init! s3          p1.dst_routed! s4 -        p1.set_link_fields 'k5,k4,k3' -        p1.add_dsts 'room0/room1/door?action,output?action' +        p1.set_link_keys 'k5', 'k4', 'k3' +        p1.add_dsts 'room0/room1/door?action', 'output?action'          p0.merge! p1          o = JSON.load( JSON.generate(p0) )          o['spin'] = s0 @@ -248,7 +261,7 @@ describe Edoors::Particle do          px.door.should eql 'doorX'          px.action.should eql 'myaction'          px.next_dst.should eql 'room0/room1/room2/doorX?myaction' -        px.link_value.should eql 'v0v2' +        px.link_value.should == {'k0'=>'v0','k2'=>'v2'}          px['k0'].should eql 'v0'          px['k1'].should eql 'v1'          px['k2'].should eql 'v2' @@ -260,7 +273,7 @@ describe Edoors::Particle do          py.door.should be_nil          py.action.should be_nil          py.next_dst.should eql 'room0/room1/door?action' -        py.link_value.should eql 'v8v7v6' +        py.link_value.should == {'k3'=>'v6','k4'=>'v7','k5'=>'v8'}          py['k3'].should eql 'v6'          py['k4'].should eql 'v7'          py['k5'].should eql 'v8' diff --git a/spec/room_spec.rb b/spec/room_spec.rb index de697c1..3757951 100644 --- a/spec/room_spec.rb +++ b/spec/room_spec.rb @@ -203,7 +203,7 @@ describe Edoors::Room do          room0 = Edoors::Room.new 'room0', @spin          door0 = Edoors::Door.new 'door0', room0          door1 = Edoors::Door.new 'door1', room0 -        room0.add_link Edoors::Link.new('door0', 'door1', 'fields', 'f0,f1', 'v0v1') +        room0.add_link Edoors::Link.new('door0', 'door1', 'keys', {'f0'=>'v0','f1'=>'v1'})          p = @spin.require_p Edoors::Particle          p['f0']='v0'          p['f1']='v1' @@ -225,14 +225,16 @@ describe Edoors::Room do          end          door1 = Out.new 'door1', room0          room0.add_link Edoors::Link.new('door0', 'door1') -        room0.add_link Edoors::Link.new('door0', 'door1', 'fields', 'f0,f1', 'v0v1') -        room0.add_link Edoors::Link.new('door0', 'door1', 'fields', 'f0,f1', 'v0v2') +        room0.add_link Edoors::Link.new('door0', 'door1', 'keys', {'f0'=>'v0'}) +        room0.add_link Edoors::Link.new('door0', 'door1', 'keys', {'f0'=>'v0','f1'=>'v1'}) +        room0.add_link Edoors::Link.new('door0', 'door1', 'keys', {'f0'=>'v0','f1'=>'v2'}) +        room0.add_link Edoors::Link.new('door0', 'door1', 'keys', {'f0'=>'v0','f2'=>'v1'})          p = @spin.require_p Edoors::Particle          p['f0']='v0'          p['f1']='v1'          door0.send_p p          @spin.spin! -        door1.count.should eql 2 +        door1.count.should eql 3      end      #      it "system route error: system no destination" do @@ -278,9 +280,8 @@ describe Edoors::Room do          p0 = @spin.require_p Edoors::Particle          p0.set_data Edoors::LNK_SRC, 'door0'          p0.set_data Edoors::LNK_DSTS, 'door1' -        p0.set_data Edoors::LNK_FIELDS, 'fields' -        p0.set_data Edoors::LNK_CONDF, 'f0,f1' -        p0.set_data Edoors::LNK_CONDV, 'v0v1' +        p0.set_data Edoors::LNK_KEYS, 'keys' +        p0.set_data Edoors::LNK_VALUE, {'f0'=>'v0','f1'=>'v1'}          p0.add_dst Edoors::SYS_ACT_ADD_LINK, room0.path          room0.send_sys_p p0          @spin.spin! @@ -318,10 +319,10 @@ describe Edoors::Room do          d0 = Edoors::Door.new 'd0', r1          d1 = Edoors::Door.new 'd1', r1          d2 = Edoors::Door.new 'd2', r2 -        r1.add_link Edoors::Link.new('d0', 'd1', 'fields', 'f0,f1', 'v0v1') +        r1.add_link Edoors::Link.new('d0', 'd1', 'keys', {'f0'=>'v0','f1'=>'v1'})          r1.add_link Edoors::Link.new('d0', 'd2')          r1.add_link Edoors::Link.new('d1', 'd0') -        r2.add_link Edoors::Link.new('d2', 'd1', 'fies', 'f5,f1', 'v9v1') +        r2.add_link Edoors::Link.new('d2', 'd1', 'fies', {'f5'=>'v9','f1'=>'v1'})          rx = Edoors::Room.json_create( JSON.load( JSON.generate(r0) ) )          JSON.generate(r0).should eql JSON.generate(rx)      end# diff --git a/spec/spin_spec.rb b/spec/spin_spec.rb index 9ceebf8..9c2e2ea 100644 --- a/spec/spin_spec.rb +++ b/spec/spin_spec.rb @@ -86,10 +86,10 @@ describe Edoors::Spin do      it "option debug" do          spin = Edoors::Spin.new 'dom0'          spin.debug_routing.should be false -        spin.debug_errors.should be false -        spin = Edoors::Spin.new 'dom0', :debug_routing=>true, :debug_errors=>true +        spin.debug_garbage.should be false +        spin = Edoors::Spin.new 'dom0', :debug_routing=>true, :debug_garbage=>true          spin.debug_routing.should be true -        spin.debug_errors.should be true +        spin.debug_garbage.should be true      end      #      it "search world" do @@ -129,7 +129,7 @@ describe Edoors::Spin do          p0.add_dst Edoors::SYS_ACT_HIBERNATE          Edoors::Room.new 'input', spin          Edoors::Room.new 'output', spin -        spin.add_link Edoors::Link.new('input', 'output', nil, nil, nil) +        spin.add_link Edoors::Link.new('input', 'output', nil, nil)          spin.send_sys_p p0          spin.spin!          dom0 = Edoors::Spin.resume! spin.hibernate_path  | 
