1 $:.unshift File.join(File.dirname(__FILE__), "..")
4 require 'shogi_server/league/floodgate'
6 require 'test/mock_log_message'
8 $topdir = File.expand_path File.dirname(__FILE__)
10 class TestNextTimeGenerator < Test::Unit::TestCase
12 @game_name = "floodgate-3600-0"
13 @config_path = File.join($topdir, "#{@game_name}.conf")
17 if File.exist? @config_path
18 FileUtils.rm @config_path
22 def test_assure_file_does_not_exist
23 assert !File.exist?(@config_path)
26 def test_factory_from_config_file
28 assert !File.exist?(@config_path)
29 assert_instance_of ShogiServer::League::Floodgate::NextTimeGenerator_Floodgate_3600_0,
30 ShogiServer::League::Floodgate::NextTimeGenerator.factory(@game_name)
32 # there is a config file
33 FileUtils.touch(@config_path)
34 assert_instance_of ShogiServer::League::Floodgate::NextTimeGeneratorConfig,
35 ShogiServer::League::Floodgate::NextTimeGenerator.factory(@game_name)
39 class TestNextTimeGenerator_900_0 < Test::Unit::TestCase
41 @next = ShogiServer::League::Floodgate::NextTimeGenerator_Floodgate_900_0.new
45 now = Time.mktime(2009,12,25,22,0)
46 assert_equal(Time.mktime(2009,12,25,22,30), @next.call(now))
50 now = Time.mktime(2009,12,25,22,20)
51 assert_equal(Time.mktime(2009,12,25,22,30), @next.call(now))
55 now = Time.mktime(2009,12,25,22,30)
56 assert_equal(Time.mktime(2009,12,25,23,00), @next.call(now))
60 now = Time.mktime(2009,12,25,22,50)
61 assert_equal(Time.mktime(2009,12,25,23,00), @next.call(now))
64 def test_50_min_next_day
65 now = Time.mktime(2009,12,25,23,50)
66 assert_equal(Time.mktime(2009,12,26,0,0), @next.call(now))
68 now = Time.mktime(2010,7,25,23,30)
69 assert_equal(Time.mktime(2010,7,26,0,0), @next.call(now))
70 now = Time.mktime(2010,7,26,23,30)
71 assert_equal(Time.mktime(2010,7,27,0,0), @next.call(now))
72 now = Time.mktime(2010,7,27,23,30)
73 assert_equal(Time.mktime(2010,7,28,0,0), @next.call(now))
74 now = Time.mktime(2010,7,28,23,30)
75 assert_equal(Time.mktime(2010,7,29,0,0), @next.call(now))
76 now = Time.mktime(2010,7,29,23,30)
77 assert_equal(Time.mktime(2010,7,30,0,0), @next.call(now))
80 def test_50_min_next_month
81 now = Time.mktime(2009,11,30,23,50)
82 assert_equal(Time.mktime(2009,12,1,0,0), @next.call(now))
85 def test_50_min_next_year
86 now = Time.mktime(2009,12,31,23,50)
87 assert_equal(Time.mktime(2010,1,1,0,0), @next.call(now))
90 def test_50_min_new_year
91 now = Time.mktime(2012,1,1,0,0)
92 assert_equal(Time.mktime(2012,1,1,0,30), @next.call(now))
96 class TestNextTimeGenerator_3600_0 < Test::Unit::TestCase
98 @next = ShogiServer::League::Floodgate::NextTimeGenerator_Floodgate_3600_0.new
102 now = Time.mktime(2009,12,25,22,0)
103 assert_equal(Time.mktime(2009,12,25,23,0), @next.call(now))
107 now = Time.mktime(2009,12,25,22,0)
108 assert_equal(Time.mktime(2009,12,25,23,0), @next.call(now))
112 now = Time.mktime(2009,12,25,23,0)
113 assert_equal(Time.mktime(2009,12,26,1,0), @next.call(now))
117 now = Time.mktime(2009,12,25,23,30)
118 assert_equal(Time.mktime(2009,12,26,1,0), @next.call(now))
122 now = Time.mktime(2009,12,26,0,0)
123 assert_equal(Time.mktime(2009,12,26,1,0), @next.call(now))
126 def test_23_30_next_month
127 now = Time.mktime(2009,11,30,23,30)
128 assert_equal(Time.mktime(2009,12,1,1,0), @next.call(now))
131 def test_23_30_next_year
132 now = Time.mktime(2009,12,31,23,30)
133 assert_equal(Time.mktime(2010,1,1,1,0), @next.call(now))
137 now = Time.mktime(2012,1,1,0,0)
138 assert_equal(Time.mktime(2012,1,1,1,0), @next.call(now))
142 class TestNextTimeGeneratorConfig < Test::Unit::TestCase
147 now = DateTime.new(2010, 6, 10, 21, 59, 59) # Thu
148 lines = %w(#\ comment1 Thu\ 22:00 #\ comment2)
149 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new lines
150 assert_equal Time.parse("10-06-2010 22:00"), ntc.call(now)
154 now = DateTime.new(2010, 6, 10, 21, 59, 59) # Thu
155 lines = %w(\ Thu\ 22:00 \ hoge)
156 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new lines
157 assert_equal Time.parse("10-06-2010 22:00"), ntc.call(now)
161 now = DateTime.new(2010, 6, 10, 21, 20, 15) # Thu
162 assert_equal DateTime.parse("10-06-2010 21:20:15"), now
164 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Thu 22:00"]
165 assert_instance_of Time, ntc.call(now)
166 assert_equal Time.parse("10-06-2010 22:00"), ntc.call(now)
167 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Thu 22:15"]
168 assert_equal Time.parse("10-06-2010 22:15"), ntc.call(now)
169 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Fri 22:00"]
170 assert_equal Time.parse("11-06-2010 22:00"), ntc.call(now)
171 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Sat 22:00"]
172 assert_equal Time.parse("12-06-2010 22:00"), ntc.call(now)
173 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Sun 22:00"]
174 assert_equal Time.parse("13-06-2010 22:00"), ntc.call(now)
175 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Mon 22:00"]
176 assert_equal Time.parse("14-06-2010 22:00"), ntc.call(now)
177 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Thu 20:00"]
178 assert_equal Time.parse("17-06-2010 20:00"), ntc.call(now)
182 now = DateTime.new(2011, 12, 30, 21, 20, 15) # Fri
183 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Sun 00:00"]
184 assert_equal Time.parse("01-01-2012 00:00"), ntc.call(now)
185 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Sun 01:00"]
186 assert_equal Time.parse("01-01-2012 01:00"), ntc.call(now)
190 now = DateTime.new(2011, 12, 30, 21, 20, 15) # Fri
191 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Mon 00:00"]
192 assert_equal Time.parse("02-01-2012 00:00"), ntc.call(now)
193 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Mon 01:00"]
194 assert_equal Time.parse("02-01-2012 01:00"), ntc.call(now)
198 now = DateTime.new(2012, 1, 1, 1) # Sun; cwyear=2011, cweek=52
199 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Mon 00:00"]
200 assert_equal Time.parse("02-01-2012 00:00"), ntc.call(now)
201 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Sat 00:00"]
202 assert_equal Time.parse("07-01-2012 00:00"), ntc.call(now)
206 now = Time.mktime(2010, 6, 10, 21, 20, 15)
207 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Thu 22:00"]
208 assert_instance_of Time, ntc.call(now)
212 now = DateTime.new(2010, 6, 10, 21, 59, 59) # Thu
213 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Thu 22:00"]
214 assert_equal Time.parse("10-06-2010 22:00"), ntc.call(now)
216 now = DateTime.new(2010, 6, 10, 22, 0, 0) # Thu
217 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Thu 22:00"]
218 assert_equal Time.parse("17-06-2010 22:00"), ntc.call(now)
221 def test_default_pairing_factory
222 now = DateTime.new(2010, 6, 10, 21, 59, 59) # Thu
223 lines = %w(Thu\ 22:00)
224 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new lines
225 assert_equal Time.parse("10-06-2010 22:00"), ntc.call(now)
226 assert_equal("default_factory", ntc.pairing_factory)
229 def test_read_pairing_factory
230 now = DateTime.new(2010, 6, 10, 21, 59, 59) # Thu
231 lines = %w(set\ pairing_factory\ least_diff_pairing Thu\ 22:00)
232 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new lines
233 assert_equal Time.parse("10-06-2010 22:00"), ntc.call(now)
234 assert_equal("least_diff_pairing", ntc.pairing_factory)
237 def test_default_sacrifice
238 now = DateTime.new(2010, 6, 10, 21, 59, 59) # Thu
239 lines = %w(Thu\ 22:00)
240 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new lines
241 assert_equal Time.parse("10-06-2010 22:00"), ntc.call(now)
242 assert_equal("gps500+e293220e3f8a3e59f79f6b0efffaa931", ntc.sacrifice)
245 def test_read_sacrifice
246 now = DateTime.new(2010, 6, 10, 21, 59, 59) # Thu
247 lines = %w(set\ sacrifice\ yowai_gps+95908f6c18338f5340371f71523fc5e3 Thu\ 22:00)
248 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new lines
249 assert_equal Time.parse("10-06-2010 22:00"), ntc.call(now)
250 assert_equal("yowai_gps+95908f6c18338f5340371f71523fc5e3", ntc.sacrifice)