1 $:.unshift File.join(File.dirname(__FILE__), "..")
4 require 'shogi_server/league/floodgate'
7 $topdir = File.expand_path File.dirname(__FILE__)
9 class TestNextTimeGenerator < Test::Unit::TestCase
11 @game_name = "floodgate-3600-0"
12 @config_path = File.join($topdir, "#{@game_name}.conf")
16 if File.exist? @config_path
17 FileUtils.rm @config_path
21 def test_assure_file_does_not_exist
22 assert !File.exist?(@config_path)
25 def test_factory_from_config_file
27 assert !File.exist?(@config_path)
28 assert_instance_of ShogiServer::League::Floodgate::NextTimeGenerator_Floodgate_3600_0,
29 ShogiServer::League::Floodgate::NextTimeGenerator.factory(@game_name)
31 # there is a config file
32 FileUtils.touch(@config_path)
33 assert_instance_of ShogiServer::League::Floodgate::NextTimeGeneratorConfig,
34 ShogiServer::League::Floodgate::NextTimeGenerator.factory(@game_name)
38 class TestNextTimeGenerator_900_0 < Test::Unit::TestCase
40 @next = ShogiServer::League::Floodgate::NextTimeGenerator_Floodgate_900_0.new
44 now = Time.mktime(2009,12,25,22,0)
45 assert_equal(Time.mktime(2009,12,25,22,30), @next.call(now))
49 now = Time.mktime(2009,12,25,22,20)
50 assert_equal(Time.mktime(2009,12,25,22,30), @next.call(now))
54 now = Time.mktime(2009,12,25,22,30)
55 assert_equal(Time.mktime(2009,12,25,23,00), @next.call(now))
59 now = Time.mktime(2009,12,25,22,50)
60 assert_equal(Time.mktime(2009,12,25,23,00), @next.call(now))
63 def test_50_min_next_day
64 now = Time.mktime(2009,12,25,23,50)
65 assert_equal(Time.mktime(2009,12,26,0,0), @next.call(now))
67 now = Time.mktime(2010,7,25,23,30)
68 assert_equal(Time.mktime(2010,7,26,0,0), @next.call(now))
69 now = Time.mktime(2010,7,26,23,30)
70 assert_equal(Time.mktime(2010,7,27,0,0), @next.call(now))
71 now = Time.mktime(2010,7,27,23,30)
72 assert_equal(Time.mktime(2010,7,28,0,0), @next.call(now))
73 now = Time.mktime(2010,7,28,23,30)
74 assert_equal(Time.mktime(2010,7,29,0,0), @next.call(now))
75 now = Time.mktime(2010,7,29,23,30)
76 assert_equal(Time.mktime(2010,7,30,0,0), @next.call(now))
79 def test_50_min_next_month
80 now = Time.mktime(2009,11,30,23,50)
81 assert_equal(Time.mktime(2009,12,1,0,0), @next.call(now))
84 def test_50_min_next_year
85 now = Time.mktime(2009,12,31,23,50)
86 assert_equal(Time.mktime(2010,1,1,0,0), @next.call(now))
89 def test_50_min_new_year
90 now = Time.mktime(2012,1,1,0,0)
91 assert_equal(Time.mktime(2012,1,1,0,30), @next.call(now))
95 class TestNextTimeGenerator_3600_0 < Test::Unit::TestCase
97 @next = ShogiServer::League::Floodgate::NextTimeGenerator_Floodgate_3600_0.new
101 now = Time.mktime(2009,12,25,22,0)
102 assert_equal(Time.mktime(2009,12,25,23,0), @next.call(now))
106 now = Time.mktime(2009,12,25,22,0)
107 assert_equal(Time.mktime(2009,12,25,23,0), @next.call(now))
111 now = Time.mktime(2009,12,25,23,0)
112 assert_equal(Time.mktime(2009,12,26,1,0), @next.call(now))
116 now = Time.mktime(2009,12,25,23,30)
117 assert_equal(Time.mktime(2009,12,26,1,0), @next.call(now))
121 now = Time.mktime(2009,12,26,0,0)
122 assert_equal(Time.mktime(2009,12,26,1,0), @next.call(now))
125 def test_23_30_next_month
126 now = Time.mktime(2009,11,30,23,30)
127 assert_equal(Time.mktime(2009,12,1,1,0), @next.call(now))
130 def test_23_30_next_year
131 now = Time.mktime(2009,12,31,23,30)
132 assert_equal(Time.mktime(2010,1,1,1,0), @next.call(now))
136 now = Time.mktime(2012,1,1,0,0)
137 assert_equal(Time.mktime(2012,1,1,1,0), @next.call(now))
141 class TestNextTimeGeneratorConfig < Test::Unit::TestCase
146 now = DateTime.new(2010, 6, 10, 21, 20, 15) # Thu
147 assert_equal DateTime.parse("10-06-2010 21:20:15"), now
149 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Thu 22:00"]
150 assert_instance_of Time, ntc.call(now)
151 assert_equal Time.parse("10-06-2010 22:00"), ntc.call(now)
152 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Thu 22:15"]
153 assert_equal Time.parse("10-06-2010 22:15"), ntc.call(now)
154 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Fri 22:00"]
155 assert_equal Time.parse("11-06-2010 22:00"), ntc.call(now)
156 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Sat 22:00"]
157 assert_equal Time.parse("12-06-2010 22:00"), ntc.call(now)
158 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Sun 22:00"]
159 assert_equal Time.parse("13-06-2010 22:00"), ntc.call(now)
160 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Mon 22:00"]
161 assert_equal Time.parse("14-06-2010 22:00"), ntc.call(now)
162 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Thu 20:00"]
163 assert_equal Time.parse("17-06-2010 20:00"), ntc.call(now)
167 now = DateTime.new(2011, 12, 30, 21, 20, 15) # Fri
168 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Sun 00:00"]
169 assert_equal Time.parse("01-01-2012 00:00"), ntc.call(now)
170 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Sun 01:00"]
171 assert_equal Time.parse("01-01-2012 01:00"), ntc.call(now)
175 now = DateTime.new(2011, 12, 30, 21, 20, 15) # Fri
176 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Mon 00:00"]
177 assert_equal Time.parse("02-01-2012 00:00"), ntc.call(now)
178 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Mon 01:00"]
179 assert_equal Time.parse("02-01-2012 01:00"), ntc.call(now)
183 now = DateTime.new(2012, 1, 1, 1) # Sun; cwyear=2011, cweek=52
184 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Mon 00:00"]
185 assert_equal Time.parse("02-01-2012 00:00"), ntc.call(now)
186 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Sat 00:00"]
187 assert_equal Time.parse("07-01-2012 00:00"), ntc.call(now)
191 now = Time.mktime(2010, 6, 10, 21, 20, 15)
192 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Thu 22:00"]
193 assert_instance_of Time, ntc.call(now)
197 now = DateTime.new(2010, 6, 10, 21, 59, 59) # Thu
198 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Thu 22:00"]
199 assert_equal Time.parse("10-06-2010 22:00"), ntc.call(now)
201 now = DateTime.new(2010, 6, 10, 22, 0, 0) # Thu
202 ntc = ShogiServer::League::Floodgate::NextTimeGeneratorConfig.new ["Thu 22:00"]
203 assert_equal Time.parse("17-06-2010 22:00"), ntc.call(now)