summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/iotas/particle.rb6
-rw-r--r--spec/particle_spec.rb11
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/iotas/particle.rb b/lib/iotas/particle.rb
index 3cb48b3..78975bf 100644
--- a/lib/iotas/particle.rb
+++ b/lib/iotas/particle.rb
@@ -114,6 +114,12 @@ module Iotas
add_dsts d+Iotas::ACT_SEP+a
end
#
+ def set_dst! a, d
+ @room = @door = nil
+ @action = a
+ @dst = d
+ end
+ #
def split_dst!
@dst = @room = @door = @action = nil
return if (n = next_dst).nil?
diff --git a/spec/particle_spec.rb b/spec/particle_spec.rb
index 0a7f095..a10a9f9 100644
--- a/spec/particle_spec.rb
+++ b/spec/particle_spec.rb
@@ -94,9 +94,18 @@ describe Iotas::Particle do
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
+ d0 = Iotas::Door.new 'door0', nil
#
p.split_dst!
p.room.should be_nil