make C++ users happy
[lwes-ruby.git] / test / unit / test_emit_struct.rb
blobf58b88b7640db6401ebebaaba812a34a2ad93f50
1 require "#{File.dirname(__FILE__)}/../test_helper"
3 class TestEmitStruct < Test::Unit::TestCase
5   def setup
6     assert_kind_of Class, self.class.const_get(:Event1)
7     # assert self.class.const_get(:Event1).kind_of?(Struct)
8     @options = LISTENER_DEFAULTS.dup
9   end
11   def test_emit_struct_full
12     s = nil
13     out = lwes_listener do
14       assert_nothing_raised do
15         emitter = LWES::Emitter.new(@options)
16         s = Event1.new
17         s.t_bool = true
18         s.t_int16 = -1000
19         s.t_uint16 = 1000
20         s.t_int32 = -64444
21         s.t_uint32 = 64444
22         s.t_int64 = 10_000_000_000
23         s.t_uint64 = 10_000_000_000
24         s.t_ip_addr = '192.168.0.1'
25         s.t_string = "STRING"
26         emitter.emit(s)
27       end
28     end
29     out = out.readlines
30     s.members.each do |m|
31       value = s[m.to_sym] or next
32       regex = /\b#{m} = #{value};/
33       assert_equal 1, out.grep(regex).size,
34                    "#{regex.inspect} didn't match #{out.inspect}"
35     end
36   end
38   def test_emit_struct_cplusplus
39     s = nil
40     out = lwes_listener do
41       assert_nothing_raised do
42         emitter = LWES::Emitter.new(@options)
43         s = Event1.new
44         s.t_bool = true
45         s.t_int16 = -1000
46         s.t_uint16 = 1000
47         s.t_int32 = -64444
48         s.t_uint32 = 64444
49         s.t_int64 = 10_000_000_000
50         s.t_uint64 = 10_000_000_000
51         s.t_ip_addr = '192.168.0.1'
52         s.t_string = "STRING"
53         emitter << s
54       end
55     end
56     out = out.readlines
57     s.members.each do |m|
58       value = s[m.to_sym] or next
59       regex = /\b#{m} = #{value};/
60       assert_equal 1, out.grep(regex).size,
61                    "#{regex.inspect} didn't match #{out.inspect}"
62     end
63   end
65   def test_emit_from_class
66     opt = {
67       :t_bool => true,
68       :t_int16 => -1000,
69       :t_uint16 => 1000,
70       :t_int32 => -64444,
71       :t_uint32 => 64444,
72       :t_int64 => 10_000_000_000,
73       :t_uint64 => 10_000_000_000,
74       :t_ip_addr => '192.168.0.1',
75       :t_string => "STRING",
76     }
77     out = lwes_listener do
78       assert_nothing_raised do
79         emitter = LWES::Emitter.new(@options)
80         emitter.emit(Event1, opt)
81       end
82     end
83     out = out.readlines
84     opt.each do |m, value|
85       regex = /\b#{m} = #{value};/
86       assert_equal 1, out.grep(regex).size,
87                    "#{regex.inspect} didn't match #{out.inspect}"
88     end
89   end
91   def test_emit_from_class_bad_type
92     out = lwes_listener do
93       e = assert_raises(TypeError) do
94         emitter = LWES::Emitter.new(@options)
95         opt = {
96           :t_int16 => -1000,
97           :t_uint16 => 1000,
98           :t_int32 => -64444,
99           :t_uint32 => 64444,
100           :t_int64 => 10_000_000_000,
101           :t_uint64 => 10_000_000_000,
102           :t_ip_addr => '192.168.0.1',
103           :t_string => true, #"STRING",
104         }
105         emitter.emit(Event1, opt)
106       end
107     end
108     assert out.readlines.empty?
109   end
111   def test_emit_alt_class_name
112     out = lwes_listener do
113       emitter = LWES::Emitter.new(@options)
114       emitter.emit(Event, :t_uint32 => 16384)
115     end
116     out = out.readlines
117     assert_match %r{^Event1\[\d+\]}, out.first
118   end
122 ESF_FILE = "#{File.dirname(__FILE__)}/test1.esf"
123 LWES::Struct.new(:file=>ESF_FILE,
124                  :parent => TestEmitStruct)
125 LWES::Struct.new(:file=>ESF_FILE,
126                  :parent => TestEmitStruct,
127                  :name => "Event1",
128                  :class => "Event")