1 require "#{File.expand_path(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, "t_bool", LWES::BOOLEAN],
28 [ :t_int16, "t_int16", LWES::INT_16 ],
29 [ :t_int32, "t_int32", LWES::INT_32],
30 [ :t_int64, "t_int64", LWES::INT_64],
31 [ :t_ip_addr, "t_ip_addr", LWES::IP_ADDR],
32 [ :t_string, "t_string", LWES::STRING],
33 [ :t_uint16, "t_uint16", LWES::U_INT_16],
34 [ :t_uint32, "t_uint32", LWES::U_INT_32],
35 [ :t_uint64, "t_uint64", LWES::U_INT_64],
38 [ :ReceiptTime, "ReceiptTime", LWES::INT_64],
39 [ :SenderIP, "SenderIP", LWES::IP_ADDR],
40 [ :SenderPort, "SenderPort", LWES::U_INT_16],
41 [ :SiteID, "SiteID", LWES::U_INT_16],
42 [ :enc, "enc", LWES::INT_16],
43 [ :st, "st", LWES::STRING],
46 ESF_FILE = "#{File.dirname(__FILE__)}/test1.esf"
47 MULTI_EVENT_ESF = "#{File.dirname(__FILE__)}/test2.esf"
50 assert_instance_of Module, LWES, "LWES is not a module"
53 def test_multiple_events_in_esf
54 a = LWES::Struct.new(:file=>MULTI_EVENT_ESF, :class => :EventBool)
55 assert_equal "EventBool", a.name
56 b = LWES::Struct.new(:file=>MULTI_EVENT_ESF,
57 :class => :EVENT_BOOL,
59 assert_equal "EVENT_BOOL", b.name
60 assert_equal false, b.const_get(:HAVE_ENCODING)
62 assert_raises(RuntimeError) { LWES::Struct.new(:file=>MULTI_EVENT_ESF) }
65 def test_new_with_type_db
66 type_db = LWES::TypeDB.new(ESF_FILE)
67 assert type_db.instance_of?(LWES::TypeDB)
68 a = LWES::Struct.new(:db=>type_db, :class=>:TypeDB_Event, :name=>:Event1)
69 assert a.instance_of?(Class)
70 assert_equal "TypeDB_Event", a.name
71 assert a.const_get(:TYPE_DB).instance_of?(LWES::TypeDB)
72 assert a.const_get(:EVENT_DEF).instance_of?(Hash)
73 assert_equal EXPECT_DB, a.const_get(:EVENT_DEF)
74 assert_equal EXPECT_LIST, a.const_get(:TYPE_LIST)
76 assert_equal "TypeDB_Event", y.class.name
77 assert_kind_of(::Struct, y)
80 def test_new_with_defaults_hash
81 a = LWES::Struct.new(:file=>ESF_FILE)
82 assert a.instance_of?(Class)
83 assert_equal "Event1", a.name
84 assert a.const_get(:TYPE_DB).instance_of?(LWES::TypeDB)
85 assert a.const_get(:EVENT_DEF).instance_of?(Hash)
86 assert a.const_get(:HAVE_ENCODING)
87 assert_equal EXPECT_DB, a.const_get(:EVENT_DEF)
88 assert_equal EXPECT_LIST, a.const_get(:TYPE_LIST)
90 assert_equal "Event1", y.class.name
91 assert_kind_of(::Struct, y)
94 def test_new_with_alt_name
95 a = LWES::Struct.new(:file=>ESF_FILE,:class=>:Event,:name=>:Event1)
96 assert a.instance_of?(Class)
97 assert_equal "Event", a.name
98 assert a.const_get(:EVENT_DEF).instance_of?(Hash)
99 assert_equal EXPECT_DB, a.const_get(:EVENT_DEF)
101 assert_equal "Event", y.class.name
102 assert_kind_of(::Struct, y)
105 def test_new_in_module
106 a = LWES::Struct.new(:file=>ESF_FILE,:class=>:Event1,:parent=>LWES)
107 assert a.instance_of?(Class)
108 assert_equal "LWES::Event1", a.name
109 assert a.const_get(:EVENT_DEF).instance_of?(Hash)
110 assert_equal EXPECT_DB, a.const_get(:EVENT_DEF)
112 assert_equal "LWES::Event1", y.class.name
113 assert_kind_of(::Struct, y)
117 a = LWES::Struct.new(:file=>ESF_FILE,:class=>:Eval,:name=>:Event1) do
124 const_get(:EVENT_DEF)
129 assert y.respond_to?(:aaaaaaaa)
130 assert_instance_of TrueClass, y.aaaaaaaa
131 assert_equal a.const_get(:EVENT_DEF).object_id, a.get_event_def.object_id
132 assert_equal EXPECT_DB, a.get_event_def
135 def test_new_initialize
136 a = LWES::Struct.new(:file=>ESF_FILE,
140 assert_kind_of Class, a
141 y = Dummy::Init.new(:t_ip_addr => "192.168.0.1", :t_bool => true)
142 assert_equal "192.168.0.1", y.t_ip_addr
143 assert_equal true, y.t_bool
146 def test_new_initialize_defaults
147 a = LWES::Struct.new(:file=>ESF_FILE,
150 :defaults => { :enc => 1 })
151 assert_kind_of Class, a
153 assert_equal 1, y.enc
156 def test_new_initialize_defaults_and_hash
157 a = LWES::Struct.new(:file=>ESF_FILE,
160 :defaults => { :enc => 1 })
161 assert_kind_of Class, a
162 y = LWES_Foo.new(:enc => 2)
163 assert_equal 2, y.enc
166 def test_new_initialize_struct_style
167 a = LWES::Struct.new(:file=>ESF_FILE,
170 assert_kind_of Class, a
171 y = LWES_Foo.new(true, -16, -32, -64, "127.0.0.1", "HI", 16, 32, 64)
172 assert_equal(true, y.t_bool)
173 assert_equal(-16, y.t_int16)
174 assert_equal(-32, y.t_int32)
175 assert_equal(-64, y.t_int64)
176 assert_equal("127.0.0.1", y.t_ip_addr)
177 assert_equal("HI", y.t_string)
178 assert_equal(16, y.t_uint16)
179 assert_equal(32, y.t_uint32)
180 assert_equal(64, y.t_uint64)
184 a = LWES::Struct.new(:file=>ESF_FILE,
187 :skip => %w(SenderIP SenderPort SiteID ReceiptTime))
188 assert_kind_of Class, a
190 assert ! y.respond_to?(:SenderIP)
191 assert ! y.respond_to?(:SenderPort)
192 assert ! y.respond_to?(:SiteID)
193 assert ! y.respond_to?(:ReceiptTime)
194 assert y.respond_to?(:enc)
195 assert y.respond_to?(:st)
199 a = LWES::Struct.new(:file=>ESF_FILE,
200 :class=> :LWES_SkipRe,
203 assert_kind_of Class, a
205 assert ! y.respond_to?(:SenderIP)
206 assert ! y.respond_to?(:SenderPort)
207 assert ! y.respond_to?(:SiteID)
208 assert y.respond_to?(:ReceiptTime)
209 assert y.respond_to?(:enc)
210 assert y.respond_to?(:st)