summaryrefslogtreecommitdiffstats
path: root/test.rb
blob: b43299b75521c0153a6be9c0ff621395b89dfef9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
require 'state'
require 'set'

include UpState

def put_states
	foo = State.send(:class_variable_get, :@@states).map{ |x| x.to_s_color }
	puts foo.sort.join(", ")
end

foo = State.new_type("foo", [Event.new("gimmefoo", {:bob => /^...$/})], [], [:bob])
bar = State.new_type("bar", [], [Dependency.new(foo)])
baz = State.new_type("baz", [], [Dependency.new(foo, {:bob => "abc"}, {:bob => :tom}), Dependency.new(bar)])
bam = State.new_type("bam", [Event::Epsilon], [Dependency.new(baz)])
bang = State.new_type("bang", [], [Dependency.new(bam)])
bao = State.new_type("bao", [], [Dependency.new(bam), Dependency.new(bang)])

begin
	put_states
	State.process_event(Event.new("gimmefoo", {:bob => "1234"}))
	put_states
	State.process_event(Event.new("gimmefoo", {:bob => "123"}))
	myfoo = foo.get_all.select{ |x| x.params[:bob] == "123" }[0]
	put_states
	bar.hold(:user)
	put_states
	baz.hold(:user)
	put_states
	bang.hold(:user)
	put_states
	foo.release(:user)
	put_states
	myfoo.drop
	put_states
	State.process_event(Event.new("gimmefoo", {:bob => "123"}))
	put_states
	State.process_event(Event.new("gimmefoo", {:bob => "abc"}))
	myfoo = foo.get_all.select{ |x| x.params[:bob] == "abc" }[0]
	put_states
	bar.hold(:user)
	put_states
	baz.hold(:user)
	put_states
	bang.hold(:user)
	put_states
	foo.release(:user)
	put_states
	myfoo.drop
	put_states
rescue
	put_states
	raise
end