1 require "#{File.expand_path(File.dirname(__FILE__))}/../test_helper"
3 class InvalidStruct1 < Struct.new(:invalid)
7 class TestEmitStruct < Test::Unit::TestCase
10 assert_kind_of Class, self.class.const_get(:Event1)
11 # assert self.class.const_get(:Event1).kind_of?(Struct)
12 @options = LISTENER_DEFAULTS.dup
15 def test_emit_non_lwes_struct
16 emitter = LWES::Emitter.new(@options)
17 assert_raise(ArgumentError) { emitter << InvalidStruct1.new }
21 emitter = LWES::Emitter.new(@options)
22 assert_raise(TypeError) { emitter << "HHI" }
23 assert_raise(TypeError) { emitter << [] }
24 assert_raise(TypeError) { emitter << {} }
27 def test_emit_struct_full
29 out = lwes_listener do
30 assert_nothing_raised do
31 emitter = LWES::Emitter.new(@options)
38 s.t_int64 = 10_000_000_000
39 s.t_uint64 = 10_000_000_000
40 s.t_ip_addr = '192.168.0.1'
47 value = s[m.to_sym] or next
48 regex = /\b#{m} = #{value};/
49 assert_equal 1, out.grep(regex).size,
50 "#{regex.inspect} didn't match #{out.inspect}"
54 def test_emit_struct_coerce_type
56 out = lwes_listener do
57 assert_nothing_raised do
58 emitter = LWES::Emitter.new(@options)
65 s.t_int64 = 10_000_000_000
66 s.t_uint64 = 10_000_000_000
67 s.t_ip_addr = '192.168.0.1'
74 value = s[m.to_sym] or next
75 regex = /\b#{m} = #{value};/
76 assert_equal 1, out.grep(regex).size,
77 "#{regex.inspect} didn't match #{out.inspect}"
81 def test_emit_struct_cplusplus
83 out = lwes_listener do
84 assert_nothing_raised do
85 emitter = LWES::Emitter.new(@options)
92 s.t_int64 = 10_000_000_000
93 s.t_uint64 = 10_000_000_000
94 s.t_ip_addr = '192.168.0.1'
100 s.members.each do |m|
101 value = s[m.to_sym] or next
102 regex = /\b#{m} = #{value};/
103 assert_equal 1, out.grep(regex).size,
104 "#{regex.inspect} didn't match #{out.inspect}"
108 def test_emit_from_class
115 :t_int64 => 10_000_000_000,
116 :t_uint64 => 10_000_000_000,
117 :t_ip_addr => '192.168.0.1',
118 :t_string => "STRING",
120 out = lwes_listener do
121 assert_nothing_raised do
122 emitter = LWES::Emitter.new(@options)
123 emitter.emit(Event1, opt)
127 opt.each do |m, value|
128 regex = /\b#{m} = #{value};/
129 assert_equal 1, out.grep(regex).size,
130 "#{regex.inspect} didn't match #{out.inspect}"
134 def test_emit_from_class_bad_type
135 out = lwes_listener do
136 assert_raises(TypeError) do
137 emitter = LWES::Emitter.new(@options)
143 :t_int64 => 10_000_000_000,
144 :t_uint64 => 10_000_000_000,
145 :t_ip_addr => '192.168.0.1',
146 :t_string => true, #"STRING",
148 emitter.emit(Event1, opt)
151 assert out.readlines.empty?
154 def test_emit_alt_class_name
155 out = lwes_listener do
156 emitter = LWES::Emitter.new(@options)
157 emitter.emit(Event, :t_uint32 => 16384)
160 assert_match %r{^Event1\[\d+\]}, out.first
165 ESF_FILE = "#{File.dirname(__FILE__)}/test1.esf"
166 LWES::Struct.new(:file=>ESF_FILE,
167 :parent => TestEmitStruct)
168 LWES::Struct.new(:file=>ESF_FILE,
169 :parent => TestEmitStruct,