1 require "#{File.expand_path(File.dirname(__FILE__))}/../test_helper"
4 class TestEvent < Test::Unit::TestCase
7 @options = LISTENER_DEFAULTS.dup
12 assert_instance_of String, ev.inspect
17 assert_equal({}, ev.to_hash)
20 def test_emit_recieve_hash
21 receiver = UDPSocket.new
22 receiver.bind(nil, @options[:port])
23 emitter = LWES::Emitter.new(@options)
26 :uint16 => [ :uint16, 6344 ],
27 :int16 => [ :int16, -6344 ],
28 :uint32 => [ :uint32, 6344445 ],
29 :int32 => [ :int32, -6344445 ],
30 :uint64 => [ :uint64, 6344445123123 ],
31 :int64 => [ :int64, -6344445123123 ],
34 :addr => [ :ip_addr, "127.0.0.1" ],
37 emitter.emit "Event", tmp
38 buf, addr = receiver.recvfrom(65536)
39 parsed = LWES::Event.parse(buf)
47 :uint64 => 6344445123123,
48 :int64 => -6344445123123,
53 assert_instance_of LWES::Event, parsed
54 assert_equal expect, parsed.to_hash
56 # test for round tripping
58 buf, addr = receiver.recvfrom(65536)
59 assert_instance_of LWES::Event, parsed
60 assert_equal expect, parsed.to_hash
63 buf, addr = receiver.recvfrom(65536)
64 assert_instance_of LWES::Event, parsed
65 assert_equal expect, parsed.to_hash
70 def test_subclass_aset_aref
71 tdb = LWES::TypeDB.new("#{File.dirname(__FILE__)}/test1.esf")
72 tmp = LWES::Event.subclass :name => "Event1", :db => tdb
74 assert_equal({}, e.to_hash)
81 :t_int64 => 10_000_000_000,
82 :t_uint64 => 10_000_000_000,
83 :t_ip_addr => "192.168.0.1",
84 :t_string => "STRING",
89 assert_nothing_raised { e[k.to_s] = v }
90 assert_equal v, e[k.to_s], e.to_hash.inspect
95 assert_nothing_raised { e2[k] = v }
96 assert_equal v, e2[k], e2.to_hash.inspect
98 assert_equal e2.to_hash, e.to_hash
101 assert_nothing_raised { e3.__send__ "#{k}=", v }
102 assert_equal v, e3.__send__(k), e3.to_hash.inspect
104 assert_equal e3.to_hash, e.to_hash
108 tdb = LWES::TypeDB.new("#{File.dirname(__FILE__)}/test1.esf")
109 tmp = LWES::Event.subclass :name => "Event1", :db => tdb
110 e = tmp.new.merge :t_string => "merged"
111 assert_equal "merged", e.t_string
115 tdb = LWES::TypeDB.new("#{File.dirname(__FILE__)}/test1.esf")
116 tmp = LWES::Event.subclass :name => "Event1", :db => tdb
119 assert_equal a.to_hash, b.to_hash
121 assert_equal "HELLO", a.t_string
122 assert_nil b.t_string
124 assert_equal "HELLO", c.t_string
127 def test_emit_receive_subclassed
128 receiver = UDPSocket.new
129 receiver.bind(nil, @options[:port])
130 emitter = LWES::Emitter.new(@options)
131 tmp = { :t_string => 'hello' }
133 tdb = LWES::TypeDB.new("#{File.dirname(__FILE__)}/test1.esf")
134 ev1 = LWES::Event.subclass :name => "Event1", :db => tdb
135 emitter.emit "Event1", tmp
136 buf, _ = receiver.recvfrom(65536)
137 parsed = LWES::Event.parse(buf)
138 assert_instance_of ev1, parsed
139 assert_equal parsed.to_hash, ev1.new(tmp).to_hash
144 def test_emit_class_from_hash_subclassed
145 receiver = UDPSocket.new
146 receiver.bind(nil, @options[:port])
147 emitter = LWES::Emitter.new(@options)
148 tmp = { :t_string => 'hello' }
150 tdb = LWES::TypeDB.new("#{File.dirname(__FILE__)}/test1.esf")
151 ev1 = LWES::Event.subclass :name => "Event1", :db => tdb
152 emitter.emit ev1, tmp
153 buf, _ = receiver.recvfrom(65536)
154 parsed = LWES::Event.parse(buf)
155 assert_instance_of ev1, parsed
156 assert_equal parsed.to_hash, ev1.new(tmp).to_hash
162 new_classes = LWES::Event::CLASSES
163 new_classes.each_key { |k| Object.__send__ :remove_const, k.to_sym }