1 require "#{File.dirname(__FILE__)}/../test_helper"
5 class TestStruct < Test::Unit::TestCase
8 :SenderPort => LWES::U_INT_16,
11 :SiteID => LWES::U_INT_16,
12 :ReceiptTime => LWES::INT_64,
13 :SenderIP => LWES::IP_ADDR,
15 :t_ip_addr => LWES::IP_ADDR,
16 :t_bool => LWES::BOOLEAN,
17 :t_uint64 => LWES::U_INT_64,
18 :t_uint32 => LWES::U_INT_32,
19 :t_int64 => LWES::INT_64,
20 :t_string => LWES::STRING,
21 :t_int32 => LWES::INT_32,
22 :t_uint16 => LWES::U_INT_16,
23 :t_int16 => LWES::INT_16
26 # class-specific fields first
27 [ :t_bool, LWES::BOOLEAN],
28 [ :t_int16, LWES::INT_16 ],
29 [ :t_int32, LWES::INT_32],
30 [ :t_int64, LWES::INT_64],
31 [ :t_ip_addr, LWES::IP_ADDR],
32 [ :t_string, LWES::STRING],
33 [ :t_uint16, LWES::U_INT_16],
34 [ :t_uint32, LWES::U_INT_32],
35 [ :t_uint64, LWES::U_INT_64],
38 [ :ReceiptTime, LWES::INT_64],
39 [ :SenderIP, LWES::IP_ADDR],
40 [ :SenderPort, LWES::U_INT_16],
41 [ :SiteID, LWES::U_INT_16],
42 [ :enc, LWES::INT_16],
46 ESF_FILE = "#{File.dirname(__FILE__)}/test1.esf"
49 assert_instance_of Module, LWES, "LWES is not a module"
52 def test_new_with_defaults
53 a = LWES::Struct.new(:file=>ESF_FILE)
54 assert a.instance_of?(Class)
55 assert_equal "Event1", a.name
56 assert a.const_get(:TYPE_DB).instance_of?(Hash)
57 assert_equal EXPECT_DB, a.const_get(:TYPE_DB)
58 assert_equal EXPECT_LIST, a.const_get(:TYPE_LIST)
60 assert_equal "Event1", y.class.name
61 assert_kind_of(::Struct, y)
64 def test_new_with_alt_name
65 a = LWES::Struct.new(:file=>ESF_FILE,:class=>:Event,:name=>:Event1)
66 assert a.instance_of?(Class)
67 assert_equal "Event", a.name
68 assert a.const_get(:TYPE_DB).instance_of?(Hash)
69 assert_equal EXPECT_DB, a.const_get(:TYPE_DB)
71 assert_equal "Event", y.class.name
72 assert_kind_of(::Struct, y)
75 def test_new_in_module
76 a = LWES::Struct.new(:file=>ESF_FILE,:class=>:Event1,:parent=>LWES)
77 assert a.instance_of?(Class)
78 assert_equal "LWES::Event1", a.name
79 assert a.const_get(:TYPE_DB).instance_of?(Hash)
80 assert_equal EXPECT_DB, a.const_get(:TYPE_DB)
82 assert_equal "LWES::Event1", y.class.name
83 assert_kind_of(::Struct, y)
87 a = LWES::Struct.new(:file=>ESF_FILE,:class=>:Eval,:name=>:Event1) do
99 assert y.respond_to?(:aaaaaaaa)
100 assert_instance_of TrueClass, y.aaaaaaaa
101 assert_equal a.const_get(:TYPE_DB).object_id, a.get_type_db.object_id
102 assert_equal EXPECT_DB, a.get_type_db
106 a = LWES::Struct.new(:file=>ESF_FILE,
109 :optional => %w(SenderPort SiteID ReceiptTime))
115 assert_equal expect_optional, a.const_get(:OPTIONAL)
118 def test_optional_meta_event_info
120 :ReceiptTime => true,
127 a = LWES::Struct.new(:file=>ESF_FILE,
128 :class=>:MetaOptional,
130 :optional => %w(MetaEventInfo))
131 assert_equal expect, a.const_get(:OPTIONAL)
135 def test_new_initialize
136 a = LWES::Struct.new(:file=>ESF_FILE,
140 y = Dummy::Init.new(:t_ip_addr => "192.168.0.1", :t_bool => true)
141 assert_equal "192.168.0.1", y.t_ip_addr
142 assert_equal true, y.t_bool
145 def test_new_initialize_defaults
146 a = LWES::Struct.new(:file=>ESF_FILE,
149 :defaults => { :enc => 1 })
151 assert_equal 1, y.enc
154 def test_new_initialize_defaults_and_hash
155 a = LWES::Struct.new(:file=>ESF_FILE,
158 :defaults => { :enc => 1 })
159 y = LWES_Foo.new(:enc => 2)
160 assert_equal 2, y.enc
163 def test_new_initialize_struct_style
164 a = LWES::Struct.new(:file=>ESF_FILE,
167 y = LWES_Foo.new(true, -16, -32, -64, "127.0.0.1", "HI", 16, 32, 64)
168 assert_equal true, y.t_bool
169 assert_equal -16, y.t_int16
170 assert_equal -32, y.t_int32
171 assert_equal -64, y.t_int64
172 assert_equal "127.0.0.1", y.t_ip_addr
173 assert_equal "HI", y.t_string
174 assert_equal 16, y.t_uint16
175 assert_equal 32, y.t_uint32
176 assert_equal 64, y.t_uint64
180 a = LWES::Struct.new(:file=>ESF_FILE,
183 :skip => %w(SenderIP SenderPort SiteID ReceiptTime))
185 assert ! y.respond_to?(:SenderIP)
186 assert ! y.respond_to?(:SenderPort)
187 assert ! y.respond_to?(:SiteID)
188 assert ! y.respond_to?(:ReceiptTime)
189 assert y.respond_to?(:enc)
190 assert y.respond_to?(:st)
194 a = LWES::Struct.new(:file=>ESF_FILE,
195 :class=> :LWES_SkipRe,
199 assert ! y.respond_to?(:SenderIP)
200 assert ! y.respond_to?(:SenderPort)
201 assert ! y.respond_to?(:SiteID)
202 assert y.respond_to?(:ReceiptTime)
203 assert y.respond_to?(:enc)
204 assert y.respond_to?(:st)
207 def test_optional_regexp
208 a = LWES::Struct.new(:file=>ESF_FILE,
209 :class=> :LWES_OptionalRe,
212 expect = {:SenderIP=>true, :SenderPort=>true, :SiteID=>true}
213 assert_equal expect, LWES_OptionalRe::OPTIONAL