summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/board_spec.rb92
-rw-r--r--spec/door_spec.rb95
-rw-r--r--spec/link_spec.rb38
-rw-r--r--spec/particle_spec.rb257
-rw-r--r--spec/room_spec.rb315
-rw-r--r--spec/spec_helper.rb38
-rw-r--r--spec/spin_spec.rb129
-rw-r--r--spec/spot_spec.rb26
8 files changed, 0 insertions, 990 deletions
diff --git a/spec/board_spec.rb b/spec/board_spec.rb
deleted file mode 100644
index 0499778..0000000
--- a/spec/board_spec.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-#! /usr/bin/env ruby
-# -*- coding: UTF-8 -*-
-#
-
-require 'spec_helper'
-#
-describe Iotas::Board do
- #
- before (:all) do
- @spin = Iotas::Spin.new 'dom0'
- end
- #
- before(:each) do
- @spin.clear!
- end
- #
- it "require_p release_p" do
- board = Iotas::Board.new 'hell', @spin
- p0 = board.require_p Iotas::Particle
- p1 = board.require_p Iotas::Particle
- (p0===p1).should be_false
- board.release_p p0
- p2 = board.require_p Iotas::Particle
- (p0===p2).should be_true
- end
- #
- it "particle wait and merge" do
- p0 = Iotas::Particle.new
- p0['k0'] = 'v0'
- p0['k1'] = 'neither'
- p0['k2'] = 'v2'
- p0.set_link_fields 'k0,k2'
- p0.link_value.should eql 'v0v2'
- p1 = Iotas::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 < Iotas::Board
- attr_reader :ok, :follow
- def receive_p p
- @ok = false
- case p.action
- when Iotas::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', @spin
- 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 case in Board0 is ok
- p0.add_dst Iotas::ACT_FOLLOW
- p0.split_dst!
- p1.add_dst Iotas::ACT_FOLLOW
- p1.split_dst!
- b0.process_p p1
- b0.ok.should be_true
- b0.follow.should be_true
- end
- #
- it "board->json->board" do
- board = Iotas::Board.new 'hell', @spin
- p0 = Iotas::Particle.new
- p1 = Iotas::Particle.new
- p1['v0']=0
- p1.set_link_fields 'v0'
- board.process_p p0
- board.process_p p1
- hell = Iotas::Board.json_create( JSON.load( JSON.generate(board) ) )
- board.name.should eql hell.name
- JSON.generate(board).should eql JSON.generate(hell)
- end
- #
-end
-#
-# EOF
diff --git a/spec/door_spec.rb b/spec/door_spec.rb
deleted file mode 100644
index 43b98a1..0000000
--- a/spec/door_spec.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-#! /usr/bin/env ruby
-# -*- coding: UTF-8 -*-
-#
-
-require 'spec_helper'
-#
-describe Iotas::Door do
- #
- before (:all) do
- @spin = Iotas::Spin.new 'dom0'
- end
- #
- before(:each) do
- @spin.clear!
- end
- #
- it "require_p release_p" do
- door = Iotas::Door.new 'hell', @spin
- p0 = door.require_p Iotas::Particle
- p1 = door.require_p Iotas::Particle
- (p0===p1).should be_false
- door.release_p p0
- p2 = door.require_p Iotas::Particle
- (p0===p2).should be_true
- end
- #
- it "NoMethodError when receive_p not overridden" do
- class Door0 < Iotas::Door
- end
- f = Fake.new 'fake', @spin
- d0 = Door0.new 'door0', f
- p0 = d0.require_p Iotas::Particle
- lambda { d0.process_p p0 }.should raise_error(NoMethodError)
- end
- #
- it "send_p, send_sys_p, release_p and release of lost particles" do
- class Door0 < Iotas::Door
- def receive_p p
- case p.action
- when 'RELEASE'
- release_p p
- when 'SEND'
- send_p p
- when 'SEND_SYS'
- send_sys_p p
- else
- # lost!!
- end
- end
- end
- f = Fake.new 'fake', @spin
- d0 = Door0.new 'door0', f
- p0 = d0.require_p Iotas::Particle
- #
- p0.add_dst 'SEND'
- p0.split_dst!
- d0.process_p p0
- f.p.should eql p0
- p0.clear_dsts!
- #
- p0.add_dst 'SEND_SYS'
- p0.split_dst!
- d0.process_p p0
- f.sp.should eql p0
- p0.clear_dsts!
- #
- p0.add_dst 'RELEASE'
- p0.split_dst!
- d0.process_p p0
- p1 = d0.require_p Iotas::Particle
- p1.should be p0
- p0.clear_dsts!
- #
- p0.add_dst 'LOST'
- p0.split_dst!
- d0.process_p p0
- p1 = d0.require_p Iotas::Particle
- p1.should be p0
- p0.clear_dsts!
- #
- d0.process_sys_p p0
- p1 = @spin.require_p Iotas::Particle
- p1.should be p0
- end
- #
- it "door->json->door" do
- door = Iotas::Door.new 'hell', @spin
- hell = Iotas::Door.json_create( JSON.load( JSON.generate(door) ) )
- door.name.should eql hell.name
- JSON.generate(door).should eql JSON.generate(hell)
- end
- #
-end
-#
-# EOF
diff --git a/spec/link_spec.rb b/spec/link_spec.rb
deleted file mode 100644
index 6120677..0000000
--- a/spec/link_spec.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-#! /usr/bin/env ruby
-# -*- coding: UTF-8 -*-
-#
-
-require 'spec_helper'
-#
-describe Iotas::Link do
- #
- it "from particle data" do
- @spin = Iotas::Spin.new 'dom0'
- p = @spin.require_p Iotas::Particle
- p.set_data Iotas::LNK_SRC, 'input1'
- p.set_data Iotas::LNK_DSTS, 'concat1?follow,output1'
- p.set_data Iotas::LNK_FIELDS, 'f0,f2'
- p.set_data Iotas::LNK_CONDF, 'f0,f1,f2'
- p.set_data Iotas::LNK_CONDV, 'v0v1v2'
- lnk = Iotas::Link.from_particle_data 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'
- end
- #
- it "link->json->link" do
- link = Iotas::Link.new 'input1', 'concat1?follow,output1', 'f0,f2', 'f0,f1,f2', 'v0v1v2'
- lnk = Iotas::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
- JSON.generate(link).should eql JSON.generate(lnk)
- end
- #
-end
-#
-# EOF
diff --git a/spec/particle_spec.rb b/spec/particle_spec.rb
deleted file mode 100644
index a10a9f9..0000000
--- a/spec/particle_spec.rb
+++ /dev/null
@@ -1,257 +0,0 @@
-#! /usr/bin/env ruby
-# -*- coding: UTF-8 -*-
-#
-
-require 'spec_helper'
-#
-describe Iotas::Particle do
- #
- it "payload manipulation" do
- p = Iotas::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 = Iotas::Particle.new
- p['k00'] = { 'k0'=>0,'k1'=>1}
- p['k11'] = [1,2,3]
- o = Iotas::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 = Iotas::Particle.new
- q = Iotas::Particle.new
- o = Iotas::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
- p.merge! q
- p.merge! o
- p.merged(0).should be q
- p.merged(1).should be o
- p.clear_merged!
- p.merged(0).should be_nil
- end
- #
- it "routing: add_dsts, next_dst and dst_routed!" do
- p = Iotas::Particle.new
- d0 = Iotas::Door.new 'door0', nil
- d1 = Iotas::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.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 "wrong path should raise exeption" do
- p = Iotas::Particle.new
- lambda { p.add_dst 'action', '/room' }.should raise_error(Iotas::Exception)
- lambda { p.add_dst 'action', 'room/' }.should raise_error(Iotas::Exception)
- lambda { p.add_dst '', 'room/' }.should raise_error(Iotas::Exception)
- lambda { p.add_dst 'action', 'room//door' }.should raise_error(Iotas::Exception)
- lambda { p.add_dst ' ' }.should raise_error(Iotas::Exception)
- lambda { p.add_dst ' ', '' }.should raise_error(Iotas::Exception)
- lambda { p.add_dst 'f f' }.should raise_error(Iotas::Exception)
- lambda { p.add_dst '', ' d' }.should raise_error(Iotas::Exception)
- lambda { p.add_dst '' }.should raise_error(Iotas::Exception)
- lambda { p.add_dst '', '' }.should raise_error(Iotas::Exception)
- lambda { p.add_dst nil }.should raise_error(TypeError)
- lambda { p.add_dst 'action', nil }.should raise_error(NoMethodError)
- end
- #
- it "routing: set_dst!" do
- p = Iotas::Particle.new
- d0 = Iotas::Door.new 'door0', nil
- #
- p.set_dst! 'action', d0
- p.action.should eql 'action'
- p.dst.should be d0
- end
- #
- it "routing: add_dst and split_dst!" do
- p = Iotas::Particle.new
- d0 = Iotas::Door.new 'door0', nil
- #
- p.split_dst!
- p.room.should be_nil
- p.door.should be_nil
- p.action.should be_nil
- #
- p.add_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.clear_dsts!
- #
- p.add_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_dst 'action', ''
- p.split_dst!
- p.room.should be_nil
- p.door.should be_nil
- p.action.should eql 'action'
- p.clear_dsts!
- #
- p.add_dst 'action'
- p.split_dst!
- p.room.should be_nil
- p.door.should be_nil
- p.action.should eql 'action'
- p.clear_dsts!
- #
- p.add_dsts 'door?action,?action'
- p.split_dst!
- p.room.should be_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 be_nil
- p.door.should be_nil
- p.action.should eql 'action'
- #
- end
- #
- it "routing: error!" do
- p = Iotas::Particle.new
- d = Iotas::Door.new 'door', nil
- p.init! d
- p.add_dsts 'door?action,?action'
- p.next_dst.should eql 'door?action'
- p.error! 'err_msg'
- p[Iotas::FIELD_ERROR_MSG].should eql 'err_msg'
- p.action.should eq Iotas::ACT_ERROR
- p.dst.should be d
- end
- #
- it "link fields and link value" do
- p = Iotas::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'
- end
- #
- it "apply_link!" do
- p = Iotas::Particle.new
- p['k0'] = 'v0'
- p['k1'] = 'v1'
- p['k2'] = 'v2'
- p.set_link_fields 'k0,k2'
- p.add_dsts 'door?action,?action'
- p.src.should be_nil
- p.link_value.should eql 'v0v2'
- p.next_dst.should eql 'door?action'
- lnk = Iotas::Link.new('door0', 'door1?get,door2', 'k1', 'f0,f1', 'v0v1')
- 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'
- end
- #
- it "particle->json->particle" do
- s0 = Iotas::Spin.new 'top'
- s1 = Iotas::Room.new 'room0', s0
- s2 = Iotas::Room.new 'room1', s1
- s3 = Iotas::Door.new 'doora', s2
- s4 = Iotas::Door.new 'doorb', s1
- p0 = Iotas::Particle.new
- p0['k0'] = 'v0'
- 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.split_dst!
- p1 = Iotas::Particle.new
- p1['k3'] = 'v6'
- p1['k4'] = 'v7'
- 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'
- p0.merge! p1
- o = JSON.load( JSON.generate(p0) )
- o['spin'] = s0
- px = Iotas::Particle.json_create( o )
- ((px.ts-p0.ts)<0.5).should be_true
- px.src.should be s3
- px.dst.should be_nil
- px.room.should eql 'room0/room1/room2'
- 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['k0'].should eql 'v0'
- px['k1'].should eql 'v1'
- px['k2'].should eql 'v2'
- py = px.merged(0)
- ((py.ts-p1.ts)<0.5).should be_true
- py.src.should be s3
- py.dst.should be s4
- py.room.should be_nil
- 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['k3'].should eql 'v6'
- py['k4'].should eql 'v7'
- py['k5'].should eql 'v8'
- JSON.generate(p0).should eql JSON.generate(px)
- end
- #
-end
-#
-# EOF
diff --git a/spec/room_spec.rb b/spec/room_spec.rb
deleted file mode 100644
index de4b55e..0000000
--- a/spec/room_spec.rb
+++ /dev/null
@@ -1,315 +0,0 @@
-#! /usr/bin/env ruby
-# -*- coding: UTF-8 -*-
-#
-
-require 'spec_helper'
-#
-describe Iotas::Room do
- #
- before (:all) do
- @spin = Iotas::Spin.new 'dom0'
- end
- #
- before(:each) do
- @spin.clear!
- end
- #
- it "add_iota and add_link correctly" do
- r0 = Iotas::Room.new 'room0', @spin
- d0 = Iotas::Door.new 'door0', r0
- lambda { Iotas::Door.new('door0', r0) }.should raise_error(Iotas::Exception)
- lambda { r0.add_iota Iotas::Door.new('door1', r0) }.should raise_error(Iotas::Exception)
- r0.add_link Iotas::Link.new 'door0', 'somewhere'
- lambda { r0.add_link(Iotas::Link.new('nowhere', 'somewhere')) }.should raise_error(Iotas::Exception)
- end
- #
- it "start! and stop! should work" do
- r0 = Iotas::Room.new 'room0', @spin
- d0 = Fake.new 'fake', r0
- d0.start.should be_nil
- d0.stop.should be_nil
- r0.start!
- d0.start.should be_true
- d0.stop.should be_nil
- r0.stop!
- d0.start.should be_true
- d0.stop.should be_true
- end
- #
- it "parent, spin and search_down should be ok" do
- r0 = Iotas::Room.new 'r0', @spin
- r1 = Iotas::Room.new 'r1', r0
- r2 = Iotas::Room.new 'r2', r1
- r3 = Iotas::Room.new 'r3', @spin
- r4 = Iotas::Room.new 'r4', r3
- r2.parent.should be r1
- r1.parent.should be r0
- r0.parent.should be @spin
- r0.spin.should be @spin
- r1.spin.should be @spin
- r2.spin.should be @spin
- r3.spin.should be @spin
- @spin.search_down('dom0/r0/r1/r2').should be r2
- r0.search_down('dom0/r0/r1/r2').should be r2
- r1.search_down('dom0/r0/r1/r2').should be r2
- r2.search_down('dom0/r0/r1/r2').should be r2
- r1.search_down('dom0/r0/r1/r9').should be nil
- r3.search_down('dom0/r0/r1/r2').should be nil
- r4.search_down('dom0/r0/r1/r2').should be nil
- end
- #
- it "routing success (direct add_dst)" do
- room0 = Iotas::Room.new 'room0', @spin
- door0 = Iotas::Door.new 'door0', room0
- p = @spin.require_p Iotas::Particle
- p.init! Fake.new( 'fake', @spin)
- p.add_dst 'get', 'door0'
- room0.send_p p
- p.action.should eql 'get'
- p.dst.should be door0
- end
- #
- it "routing success (direct send to self)" do
- room0 = Iotas::Room.new 'room0', @spin
- door0 = Iotas::Door.new 'door0', room0
- p = @spin.require_p Iotas::Particle
- p.init! Fake.new( 'fake', @spin)
- door0.send_p p, 'get'
- p.action.should eql 'get'
- p.dst.should be door0
- end
- #
- it "routing success (direct send to pointer)" do
- room0 = Iotas::Room.new 'room0', @spin
- door0 = Iotas::Door.new 'door0', room0
- p = @spin.require_p Iotas::Particle
- p.init! Fake.new( 'fake', @spin)
- door0.send_p p, 'get', door0
- p.action.should eql 'get'
- p.dst.should be door0
- end
- #
- it "routing success (direct send to path)" do
- room0 = Iotas::Room.new 'room0', @spin
- door0 = Iotas::Door.new 'door0', room0
- p = @spin.require_p Iotas::Particle
- p.init! Fake.new( 'fake', @spin)
- door0.send_p p, 'get', door0.path
- p.action.should eql 'get'
- p.dst.should be door0
- end
- #
- it "routing success through Spin@world" do
- room0 = Iotas::Room.new 'room0', @spin
- room1 = Iotas::Room.new 'room1', room0
- door0 = Iotas::Door.new 'door0', room1
- p = @spin.require_p Iotas::Particle
- p.init! Fake.new('fake', @spin)
- p.add_dst 'get', 'dom0/room0/room1/door0'
- room0.send_p p
- p.action.should eql 'get'
- p.dst.should be door0
- end
- #
- it "route error: no source" do
- room = Iotas::Room.new 'room', @spin
- p = @spin.require_p Iotas::Particle
- p.add_dst 'get', 'room/door'
- room.send_p p
- p.action.should eql Iotas::ACT_ERROR
- p[Iotas::FIELD_ERROR_MSG].should eql Iotas::ERROR_ROUTE_NS
- p.dst.should be room.spin
- end
- #
- it "route error: no destination no links" do
- room = Iotas::Room.new 'room', @spin
- p = @spin.require_p Iotas::Particle
- p.init! Fake.new('fake', @spin)
- room.send_p p
- p.action.should eql Iotas::ACT_ERROR
- p[Iotas::FIELD_ERROR_MSG].should eql Iotas::ERROR_ROUTE_NDNL
- p.dst.should be p.src
- end
- #
- it "route error: no rooom, wrong door -> right room wrong door" do
- room0 = Iotas::Room.new 'room0', @spin
- p = @spin.require_p Iotas::Particle
- p.init! Fake.new('fake', @spin)
- p.add_dst 'get', 'nodoor'
- room0.send_p p
- p.action.should eql Iotas::ACT_ERROR
- p[Iotas::FIELD_ERROR_MSG].should eql Iotas::ERROR_ROUTE_RRWD
- p.dst.should be p.src
- end
- #
- it "route error: right rooom, wrong door -> right room wrong door" do
- room0 = Iotas::Room.new 'room0', @spin
- p = @spin.require_p Iotas::Particle
- p.init! Fake.new('fake', @spin)
- p.add_dst 'get', 'dom0/room0/nodoor'
- room0.send_p p
- p.action.should eql Iotas::ACT_ERROR
- p[Iotas::FIELD_ERROR_MSG].should eql Iotas::ERROR_ROUTE_RRWD
- p.dst.should be p.src
- end
- #
- it "route error: right room, wrong door through Spin@world -> does not exists" do
- room0 = Iotas::Room.new 'room0', @spin
- room1 = Iotas::Room.new 'room1', room0
- p = @spin.require_p Iotas::Particle
- p.init! Fake.new('fake', room0)
- p.add_dst 'get', 'dom0/room0/nodoor'
- room1.send_p p
- p.action.should eql Iotas::ACT_ERROR
- p[Iotas::FIELD_ERROR_MSG].should eql Iotas::ERROR_ROUTE_DNE
- p.dst.should be p.src
- end
- #
- it "route error: wrong room, right door through Spin@world -> does not exists" do
- room0 = Iotas::Room.new 'room0', @spin
- room1 = Iotas::Room.new 'room1', room0
- p = @spin.require_p Iotas::Particle
- p.init! Fake.new('fake', @spin)
- p.add_dst 'get', 'dom0/noroom/fake'
- room1.send_p p
- p.action.should eql Iotas::ACT_ERROR
- p[Iotas::FIELD_ERROR_MSG].should eql Iotas::ERROR_ROUTE_DNE
- p.dst.should be p.src
- end
- #
- it "routing ~failure: no door name -> src" do
- room0 = Iotas::Room.new 'room0', @spin
- door0 = Iotas::Door.new 'door0', room0
- p = @spin.require_p Iotas::Particle
- p.init! door0
- p.add_dst 'get'
- room0.send_p p
- p.action.should eql 'get'
- p.dst.should be door0
- end
- #
- it "routing success: unconditional link" do
- room0 = Iotas::Room.new 'room0', @spin
- door0 = Iotas::Door.new 'door0', room0
- door1 = Iotas::Door.new 'door1', room0
- room0.add_link Iotas::Link.new('door0', 'door1')
- p = @spin.require_p Iotas::Particle
- door0.send_p p
- p.action.should be_nil
- p.dst.should be door1
- end
- #
- it "routing success: conditional link" do
- room0 = Iotas::Room.new 'room0', @spin
- door0 = Iotas::Door.new 'door0', room0
- door1 = Iotas::Door.new 'door1', room0
- room0.add_link Iotas::Link.new('door0', 'door1', 'fields', 'f0,f1', 'v0v1')
- p = @spin.require_p Iotas::Particle
- p['f0']='v0'
- p['f1']='v1'
- door0.send_p p
- p.action.should be_nil
- p.src.should be door0
- p.dst.should be door1
- end
- #
- it "routing success: more then one matching link" do
- room0 = Iotas::Room.new 'room0', @spin
- door0 = Iotas::Door.new 'door0', room0
- class Out < Iotas::Door
- attr_reader :count
- def receive_p p
- @count||=0
- @count += 1
- end
- end
- door1 = Out.new 'door1', room0
- room0.add_link Iotas::Link.new('door0', 'door1')
- room0.add_link Iotas::Link.new('door0', 'door1', 'fields', 'f0,f1', 'v0v1')
- room0.add_link Iotas::Link.new('door0', 'door1', 'fields', 'f0,f1', 'v0v2')
- p = @spin.require_p Iotas::Particle
- p['f0']='v0'
- p['f1']='v1'
- door0.send_p p
- @spin.spin!
- door1.count.should eql 2
- end
- #
- it "system route error: system no destination" do
- room0 = Iotas::Room.new 'room0', @spin
- p = @spin.require_p Iotas::Particle
- room0.send_sys_p p
- p.action.should eql Iotas::ACT_ERROR
- p[Iotas::FIELD_ERROR_MSG].should eql Iotas::ERROR_ROUTE_SND
- end
- #
- it "system routing success: action only" do
- room0 = Iotas::Room.new 'room0', @spin
- p = @spin.require_p Iotas::Particle
- p.add_dst Iotas::SYS_ACT_ADD_LINK
- room0.send_sys_p p
- p.action.should eql Iotas::SYS_ACT_ADD_LINK
- p.dst.should be room0.spin
- end
- #
- it "system routing success (add_dst)" do
- room0 = Iotas::Room.new 'room0', @spin
- door0 = Iotas::Door.new 'door0', room0
- p = @spin.require_p Iotas::Particle
- p.add_dst Iotas::SYS_ACT_ADD_LINK, 'dom0/room0/door0'
- room0.send_sys_p p
- p.action.should eql Iotas::SYS_ACT_ADD_LINK
- p.dst.should be door0
- end
- #
- it "system routing success (send_sys_p)" do
- room0 = Iotas::Room.new 'room0', @spin
- door0 = Iotas::Door.new 'door0', room0
- p = @spin.require_p Iotas::Particle
- door0.send_sys_p p, Iotas::SYS_ACT_ADD_LINK
- p.action.should eql Iotas::SYS_ACT_ADD_LINK
- p.dst.should be door0
- end
- #
- it "SYS_ACT_ADD_LINK" do
- room0 = Iotas::Room.new 'room0', @spin
- door0 = Iotas::Door.new 'door0', room0
- door1 = Iotas::Door.new 'door1', room0
- p0 = @spin.require_p Iotas::Particle
- p0.set_data Iotas::LNK_SRC, 'door0'
- p0.set_data Iotas::LNK_DSTS, 'door1'
- p0.set_data Iotas::LNK_FIELDS, 'fields'
- p0.set_data Iotas::LNK_CONDF, 'f0,f1'
- p0.set_data Iotas::LNK_CONDV, 'v0v1'
- p0.add_dst Iotas::SYS_ACT_ADD_LINK, room0.path
- room0.send_sys_p p0
- @spin.spin!
- p = @spin.require_p Iotas::Particle
- p['f0']='v0'
- p['f1']='v1'
- door0.send_p p
- p.action.should be_nil
- p.src.should be door0
- p.dst.should be door1
- end
- #
- it "room->json->room" do
- r0 = Iotas::Room.new 'r0', @spin
- r1 = Iotas::Room.new 'r1', r0
- r2 = Iotas::Room.new 'r2', r1
- r3 = Iotas::Room.new 'r3', r1
- r4 = Iotas::Room.new 'r4', r3
- d0 = Iotas::Door.new 'd0', r1
- d1 = Iotas::Door.new 'd1', r1
- d2 = Iotas::Door.new 'd2', r2
- r1.add_link Iotas::Link.new('d0', 'd1', 'fields', 'f0,f1', 'v0v1')
- r1.add_link Iotas::Link.new('d0', 'd2')
- r1.add_link Iotas::Link.new('d1', 'd0')
- r2.add_link Iotas::Link.new('d2', 'd1', 'fies', 'f5,f1', 'v9v1')
- rx = Iotas::Room.json_create( JSON.load( JSON.generate(r0) ) )
- JSON.generate(r0).should eql JSON.generate(rx)
- end#
- #
-end
-#
-# EOF
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
deleted file mode 100644
index 5a549c5..0000000
--- a/spec/spec_helper.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-#! /usr/bin/env ruby
-# -*- coding: UTF-8 -*-
-#
-begin
- require 'simplecov'
- SimpleCov.start do
- add_filter 'spec'
- end
-rescue LoadError
-end
-#
-require 'iotas'
-#
-class Fake < Iotas::Iota
- attr_reader :p, :sp, :start, :stop
- def process_p p
- @p = p
- end
- def process_sys_p p
- @sp = p
- end
- def send_p p
- @p = p
- end
- def send_sys_p p
- @sp = p
- end
- def add_iota p
- end
- def start!
- @start=true
- end
- def stop!
- @stop=true
- end
-end
-#
-# EOF
diff --git a/spec/spin_spec.rb b/spec/spin_spec.rb
deleted file mode 100644
index 69266e5..0000000
--- a/spec/spin_spec.rb
+++ /dev/null
@@ -1,129 +0,0 @@
-#! /usr/bin/env ruby
-# -*- coding: UTF-8 -*-
-#
-
-require 'spec_helper'
-#
-describe Iotas::Spin do
- #
- class MyP < Iotas::Particle; end
- #
- it "Particles pool" do
- spin = Iotas::Spin.new 'dom0'
- p0 = spin.require_p Iotas::Particle
- p1 = spin.require_p Iotas::Particle
- (p0===p1).should be_false
- spin.release_p p0
- p2 = spin.require_p Iotas::Particle
- (p0===p2).should be_true
- end
- #
- it "different Particles classes in pool" do
- spin = Iotas::Spin.new 'dom0'
- p0 = spin.require_p Iotas::Particle
- p1 = spin.require_p Iotas::Particle
- (p0===p1).should be_false
- spin.release_p p0
- p2 = spin.require_p MyP
- p3 = spin.require_p MyP
- (p2===p3).should be_false
- spin.release_p p2
- p4 = spin.require_p MyP
- (p2===p4).should be_true
- end
- #
- it "release of merged particles" do
- spin = Iotas::Spin.new 'dom0'
- p0 = spin.require_p Iotas::Particle
- p1 = spin.require_p Iotas::Particle
- (p0===p1).should be_false
- p0.merge! p1
- spin.release_p p0
- p2 = spin.require_p Iotas::Particle
- (p2===p0).should be_true
- p3 = spin.require_p Iotas::Particle
- (p3===p1).should be_true
- end
- #
- it "clear!" do
- spin = Iotas::Spin.new 'dom0'
- p0 = spin.require_p Iotas::Particle
- p1 = spin.require_p Iotas::Particle
- spin.send_p p0
- spin.release_p p1
- spin.clear!
- p2 = spin.require_p Iotas::Particle
- (p2==p0).should be_false
- (p2==p1).should be_false
- end
- #
- it "post_p post_sys_p spin!" do
- spin = Iotas::Spin.new 'dom0'
- f = Fake.new 'fake', spin
- p0 = spin.require_p Iotas::Particle
- p0.dst_routed! f
- p1 = spin.require_p Iotas::Particle
- p1.dst_routed! f
- spin.post_p p0
- spin.post_sys_p p1
- spin.run = true
- spin.spin!
- f.p.should be p0
- f.sp.should be p1
- spin.stop!
- end
- #
- it "process_sys" do
- spin = Iotas::Spin.new 'dom0'
- p0 = spin.require_p Iotas::Particle
- p0.add_dst 'unknown'
- spin.send_sys_p p0
- spin.spin!
- p1 = spin.require_p Iotas::Particle
- p0.should be p0
- end
- #
- it "option debug" do
- spin = Iotas::Spin.new 'dom0'
- spin.debug_routing.should be false
- spin.debug_errors.should be false
- spin = Iotas::Spin.new 'dom0', :debug_routing=>true, :debug_errors=>true
- spin.debug_routing.should be true
- spin.debug_errors.should be true
- end
- #
- it "spin->json->spin" do
- spin = Iotas::Spin.new 'dom0', :debug_routing=>true
- r0 = Iotas::Room.new 'r0', spin
- r1 = Iotas::Room.new 'r1', r0
- r2 = Iotas::Room.new 'r2', r1
- r3 = Iotas::Room.new 'r3', r1
- r4 = Iotas::Room.new 'r4', r3
- d0 = Iotas::Door.new 'd0', r1
- d1 = Iotas::Door.new 'd1', r1
- d2 = Iotas::Door.new 'd2', r2
- p0 = spin.require_p Iotas::Particle
- p1 = spin.require_p Iotas::Particle
- p2 = spin.require_p Iotas::Particle
- spin.post_p p0
- spin.post_p p1
- spin.post_sys_p p2
- json = JSON.generate spin
- dom0 = Iotas::Spin.json_create( JSON.load( json ) )
- json.should eql JSON.generate(dom0)
- end
- #
- it "hibernate! resume!" do
- spin = Iotas::Spin.new 'dom0'
- p0 = spin.require_p Iotas::Particle
- p0.add_dst Iotas::SYS_ACT_HIBERNATE
- spin.send_sys_p p0
- spin.spin!
- dom0 = Iotas::Spin.resume! spin.hibernate_path
- dom0.name.should eql spin.name
- File.unlink dom0.hibernate_path
- end
- #
-end
-#
-#EOF
diff --git a/spec/spot_spec.rb b/spec/spot_spec.rb
deleted file mode 100644
index 1ed2b03..0000000
--- a/spec/spot_spec.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-#! /usr/bin/env ruby
-# -*- coding: UTF-8 -*-
-#
-
-require 'spec_helper'
-#
-describe Iotas::Iota do
- #
- it "path construction" do
- class S<Iotas::Iota
- def add_iota s
- end
- end
- s0 = S.new 'top', nil
- s1 = S.new 'room0', s0
- s2 = S.new 'room1', s1
- s3 = S.new 'door', s2
- s3.path.should eql 'top/room0/room1/door'
- lambda { Iotas::Iota.new('do/or0', nil) }.should raise_error(Iotas::Exception)
- lambda { Iotas::Iota.new('/door0', nil) }.should raise_error(Iotas::Exception)
- lambda { Iotas::Iota.new('door0/', nil) }.should raise_error(Iotas::Exception)
- end
- #
-end
-#
-# EOF