def test_simple_train(self): f = self.__create_simple_train_html(u"2921D") t = parse_train(f) f.close() self.assertIsInstance(t, Train) self.assertEqual(t.reporting_number, u"2921D")
def test_simple_train_partial_reserved(self): f = self.__create_simple_train_html(u"普通車一部指定席") t = parse_train(f) f.close() self.assertIsInstance(t, Train) self.assertEqual(t.equipments, [Seat.PARTIAL_RESERVED])
def test_sinple_train_hiragana_numbering(self): f = self.__create_simple_train_html(u"にちりん 1号") t = parse_train(f) f.close() self.assertIsInstance(t, Train) self.assertEqual(t.name, u"にちりん 1号")
def test_sinple_train_kanji_numbering(self): f = self.__create_simple_train_html(u"九州横断特急 42号") t = parse_train(f) f.close() self.assertIsInstance(t, Train) self.assertEqual(t.name, u"九州横断特急 42号")
def test_holiday(self): f = self.__create_simple_train_html(u"土曜・休日運転") t = parse_train(f) f.close() self.assertIsInstance(t, Train) self.assertEqual(t.operate_days, u"土曜・休日運転")
def test_simple_train_green_and_reserved(self): f = self.__create_simple_train_html(u"グリーン車指定席<br>普通車一部指定席") t = parse_train(f) f.close() self.assertIsInstance(t, Train) self.assertEqual(t.equipments, [Seat.GREEN_RESERVED, Seat.PARTIAL_RESERVED])
def test_simple_train_empty(self): f = self.__create_simple_train_html(u" ") t = parse_train(f) f.close() self.assertIsInstance(t, Train) self.assertEqual(t.notes, [])
def test_simple_train_local_train(self): f = self.__create_simple_train_html(u"普通") t = parse_train(f) f.close() self.assertIsInstance(t, Train) self.assertEqual(t.service, Service.LOCAL)
def test_simple_train_regional_rapid_train(self): f = self.__create_simple_train_html(u"準快速") t = parse_train(f) f.close() self.assertIsInstance(t, Train) self.assertEqual(t.service, Service.SEMI_RAPID)
def test_simple_train_limited_express_train(self): f = self.__create_simple_train_html(u"特急") t = parse_train(f) f.close() self.assertIsInstance(t, Train) self.assertEqual(t.service, Service.LIMITED_EXPRESS)
def test_simple_train_all_reserved(self): f = self.__create_simple_train_html(u" ") t = parse_train(f) f.close() self.assertIsInstance(t, Train) self.assertEqual(t.equipments, [])
def test_simple_train_one_note_tilde(self): text = u"小倉まで快速(赤間〜折尾間各駅停車)" f = self.__create_simple_train_html(text) t = parse_train(f) f.close() self.assertIsInstance(t, Train) self.assertEqual(t.notes, [text])
def test_simple_train_one_note(self): text = u"大分駅では同一ホームで〔にちりん9号〕(宮崎空港行)に接続" f = self.__create_simple_train_html(text) t = parse_train(f) f.close() self.assertIsInstance(t, Train) self.assertEqual(t.notes, [text])
def test_simple_train_n700(self): f = self.__create_simple_train_html(u"全席禁煙<br>N700系(8両編成)で運転<br>グリーン車指定席<br>普通車一部指定席") t = parse_train(f) f.close() self.assertIsInstance(t, Train) self.assertEqual(t.equipments, [Seat.GREEN_RESERVED, Seat.PARTIAL_RESERVED]) self.assertEqual(t.notes, [u"全席禁煙", u"N700系(8両編成)で運転"])
def test_complex_train_empty(self): f = self.__create_complex_train_html((u" ", u" ")) t = parse_train(f) f.close() self.assertIsInstance(t, ComplexTrain) ts = t.trains self.assertEqual(ts[0].notes, []) self.assertEqual(ts[1].notes, [])
def test_complex_train_all_days(self): f = self.__create_complex_train_html((u"毎日運転", u"毎日運転")) t = parse_train(f) f.close() self.assertIsInstance(t, ComplexTrain) ts = t.trains self.assertEqual(ts[0].operate_days, u"毎日運転") self.assertEqual(ts[1].operate_days, u"毎日運転")
def test_complex_train_local_train(self): f = self.__create_complex_train_html((u"普通", u"普通")) t = parse_train(f) f.close() self.assertIsInstance(t, ComplexTrain) ts = t.trains self.assertEqual(ts[0].service, Service.LOCAL) self.assertEqual(ts[1].service, Service.LOCAL)
def test_complex_train_regional_rapid_and_local_train(self): f = self.__create_complex_train_html((u"区間快速", u"普通")) t = parse_train(f) f.close() self.assertIsInstance(t, ComplexTrain) ts = t.trains self.assertEqual(ts[0].service, Service.REGIONAL_RAPID) self.assertEqual(ts[1].service, Service.LOCAL)
def test_complex_train(self): f = self.__create_complex_train_html((u"2925D", u"4227D")) t = parse_train(f) f.close() self.assertIsInstance(t, ComplexTrain) ts = t.trains self.assertEqual(ts[0].reporting_number, u"2925D") self.assertEqual(ts[1].reporting_number, u"4227D")
def test_holiday(self): src = u"5月25・26日・6月1・2・6〜9・13〜16・21〜23・28〜30日・7月5〜7・12〜15・19〜21・26〜28日・8月2〜25・30日〜9月1・6〜8・13〜16・20〜23・27〜29日運転" f = self.__create_simple_train_html(src) t = parse_train(f) f.close() self.assertIsInstance(t, Train) expected = ( u"5月25・26日・6月1・2・6〜9・13〜16・21〜23・28〜30日・7月5〜7・12〜15・19〜21・26〜28日・8月2〜25・30日〜9月1・6〜8・13〜16・20〜23・27〜29日運転" ) self.assertEqual(t.operate_days, expected)
def test_complex_train_white_sonic(self): f = self.__create_complex_train_html((u"「白いソニック」で運転<br>グリーン車指定席<br>普通車一部指定席", u"グリーン車指定席<br>普通車一部指定席")) t = parse_train(f) f.close() self.assertIsInstance(t, ComplexTrain) ts = t.trains self.assertEqual(ts[0].equipments, [Seat.GREEN_RESERVED, Seat.PARTIAL_RESERVED]) self.assertEqual(ts[0].notes, [u"「白いソニック」で運転"]) self.assertEqual(ts[1].equipments, [Seat.GREEN_RESERVED, Seat.PARTIAL_RESERVED]) self.assertEqual(ts[1].notes, [])
def test_coupling_complex_train_one_side(self): f = _create_table_html( u"""<tr> <!-- 列車番号 --> <td nowrap width="80" bgcolor="#add8e6">列車番号</td> <td colspan="2" width="124"> 4015M </td> <td colspan="2" width="124"> 6015H </td> </tr> <tr> <!-- 駅名 --> <td bgcolor="#ddeef7" height="35"> <a href="javascript:jump('28490',1)">佐世保</a> </td> <!-- 時刻 --> <td bgcolor="#ddeef7" align="center" width="72"> 16:25 着<br> </td> <td bgcolor="#ddeef7" align="center" width="52"> </td> <td bgcolor="#ddeef7" align="center" width="72"> || </td> <td bgcolor="#ddeef7" align="center" width="52"> </td> </tr>""" ) t = parse_train(f) f.close() self.assertIsInstance(t, ComplexTrain) ts = t.trains self.assertEqual(len(ts), 2) st = ts[0].station_times self.assertEqual(len(st), 1) self.assertEqual(st[0].station, u"佐世保") self.assertEqual(st[0].arv_time.hour, 16) self.assertEqual(st[0].arv_time.minute, 25) self.assertFalse(st[0].has_dep_time()) self.assertFalse(st[0].has_platform()) st = ts[1].station_times self.assertEqual(len(st), 0)
def test_complex_train_2nd_train_middle_stop(self): f = _create_table_html( u"""<tr> <!-- 列車番号 --> <td nowrap width="80" bgcolor="#add8e6">列車番号</td> <td colspan="2" width="124"> 5006M </td> <td colspan="2" width="124"> 3026M </td> </tr> <tr> <!-- 駅名 --> <td bgcolor="#FFFFFF" height="35"> <a href="javascript:jump('28155',1)">小倉</a> </td> <!-- 時刻 --> <td bgcolor="#FFFFFF" align="center" width="72"> </td> <td bgcolor="#FFFFFF" align="center" width="52"> </td> <td bgcolor="#FFFFFF" align="center" width="72"> 12:37 着<br>12:41 発 </td> <td bgcolor="#FFFFFF" align="center" width="52"> 4 </td> </tr>""" ) t = parse_train(f) f.close() self.assertIsInstance(t, ComplexTrain) ts = t.trains self.assertEqual(len(ts), 2) st = ts[1].station_times self.assertEqual(len(st), 1) self.assertEqual(st[0].station, u"小倉") self.assertEqual(st[0].arv_time.hour, 12) self.assertEqual(st[0].arv_time.minute, 37) self.assertEqual(st[0].dep_time.hour, 12) self.assertEqual(st[0].dep_time.minute, 41) self.assertEqual(st[0].platform, u"4")
def test_complex_train_1st_train_middle_stop(self): f = _create_table_html( u"""<tr> <!-- 列車番号 --> <td nowrap width="80" bgcolor="#add8e6">列車番号</td> <td colspan="2" width="124"> 2925D </td> <td colspan="2" width="124"> 4227D </td> </tr> <tr> <!-- 駅名 --> <td bgcolor="#ddeef7" height="35"> <a href="javascript:jump('28879',1)">日向庄内</a> </td> <!-- 時刻 --> <td bgcolor="#ddeef7" align="center" width="72"> 07:34 着<br>07:35 発 </td> <td bgcolor="#ddeef7" align="center" width="52"> </td> <td bgcolor="#ddeef7" align="center" width="72"> </td> <td bgcolor="#ddeef7" align="center" width="52"> </td> </tr>""" ) t = parse_train(f) f.close() self.assertIsInstance(t, ComplexTrain) ts = t.trains self.assertEqual(len(ts), 2) st = ts[0].station_times self.assertEqual(len(st), 1) self.assertEqual(st[0].station, u"日向庄内") self.assertEqual(st[0].arv_time.hour, 7) self.assertEqual(st[0].arv_time.minute, 34) self.assertEqual(st[0].dep_time.hour, 7) self.assertEqual(st[0].dep_time.minute, 35) self.assertFalse(st[0].has_platform())
def test_complex_train_2nd_train_last_stop_with_platform(self): f = _create_table_html( u"""<tr> <!-- 列車番号 --> <td nowrap width="80" bgcolor="#add8e6">列車番号</td> <td colspan="2" width="124"> 5008M </td> <td colspan="2" width="124"> 3032M </td> </tr> <tr> <!-- 駅名 --> <td bgcolor="#ddeef7" height="35"> <a href="javascript:jump('28283',1)">博多</a> </td> <!-- 時刻 --> <td bgcolor="#ddeef7" align="center" width="72"> </td> <td bgcolor="#ddeef7" align="center" width="52"> </td> <td bgcolor="#ddeef7" align="center" width="72"> 14:46 着<br> </td> <td bgcolor="#ddeef7" align="center" width="52"> 5 </td> </tr>""" ) t = parse_train(f) f.close() self.assertIsInstance(t, ComplexTrain) ts = t.trains self.assertEqual(len(ts), 2) st = ts[1].station_times self.assertEqual(len(st), 1) self.assertEqual(st[0].station, u"博多") self.assertEqual(st[0].arv_time.hour, 14) self.assertEqual(st[0].arv_time.minute, 46) self.assertFalse(st[0].has_dep_time()) self.assertEqual(st[0].platform, u"5")
def test_complex_train_1st_train_middle_stop_with_platform(self): f = _create_table_html( u"""<tr> <!-- 列車番号 --> <td nowrap width="80" bgcolor="#add8e6">列車番号</td> <td colspan="2" width="124"> 3009M </td> <td colspan="2" width="124"> 5009M </td> </tr> <tr> <!-- 駅名 --> <td bgcolor="#ddeef7" height="35"> <a href="javascript:jump('28155',1)">小倉</a> </td> <!-- 時刻 --> <td bgcolor="#ddeef7" align="center" width="72"> 09:45 着<br>09:48 発 </td> <td bgcolor="#ddeef7" align="center" width="52"> 7 </td>""" ) t = parse_train(f) f.close() self.assertIsInstance(t, ComplexTrain) ts = t.trains self.assertEqual(len(ts), 2) st = ts[0].station_times self.assertEqual(len(st), 1) self.assertEqual(st[0].station, u"小倉") self.assertEqual(st[0].arv_time.hour, 9) self.assertEqual(st[0].arv_time.minute, 45) self.assertEqual(st[0].dep_time.hour, 9) self.assertEqual(st[0].dep_time.minute, 48) self.assertEqual(st[0].platform, u"7")
def test_simple_train_middle_stop_with_platform(self): f = _create_table_html( u"""<tr> <!-- 列車番号 --> <td nowrap width="80" bgcolor="#add8e6">列車番号</td> <td colspan="2" width="124"> 2520M </td> </tr> <tr> <!-- 駅名 --> <td bgcolor="#ddeef7" height="35"> <a href="javascript:jump('28155',1)">小倉</a> </td> <!-- 時刻 --> <td bgcolor="#ddeef7" align="center" width="72"> 05:42 着<br>05:55 発 </td> <td bgcolor="#ddeef7" align="center" width="52"> 4 </td> </tr>""" ) t = parse_train(f) f.close() self.assertIsInstance(t, Train) st = t.station_times self.assertEqual(len(st), 1) self.assertEqual(st[0].station, u"小倉") self.assertEqual(st[0].arv_time.hour, 5) self.assertEqual(st[0].arv_time.minute, 42) self.assertEqual(st[0].dep_time.hour, 5) self.assertEqual(st[0].dep_time.minute, 55) self.assertEqual(st[0].platform, u"4")
def test_simple_train_middle_stop(self): f = _create_table_html( u"""<tr> <!-- 列車番号 --> <td nowrap width="80" bgcolor="#add8e6">列車番号</td> <td colspan="2" width="124"> 2921D </td> </tr> <tr> <!-- 駅名 --> <td bgcolor="#FFFFFF" height="35"> <a href="javascript:jump('29028',1)">吉松</a> </td> <!-- 時刻 --> <td bgcolor="#FFFFFF" align="center" width="72"> 07:22 着<br>07:32 発 </td> <td bgcolor="#FFFFFF" align="center" width="52"> </td> </tr>""" ) t = parse_train(f) f.close() self.assertIsInstance(t, Train) st = t.station_times self.assertEqual(len(st), 1) self.assertEqual(st[0].station, u"吉松") self.assertEqual(st[0].arv_time.hour, 7) self.assertEqual(st[0].arv_time.minute, 22) self.assertEqual(st[0].dep_time.hour, 7) self.assertEqual(st[0].dep_time.minute, 32) self.assertFalse(st[0].has_platform())
def test_simple_train_first_stop_with_platform(self): f = _create_table_html( u"""<tr> <!-- 列車番号 --> <td nowrap width="80" bgcolor="#add8e6">列車番号</td> <td colspan="2" width="124"> 545M </td> </tr> <tr> <!-- 駅名 --> <td bgcolor="#FFFFFF" height="35"> <a href="javascript:jump('28155',1)">小倉</a> </td> <!-- 時刻 --> <td bgcolor="#FFFFFF" align="center" width="72"> <br>12:12 発 </td> <td bgcolor="#FFFFFF" align="center" width="52"> 1 </td> </tr>""" ) t = parse_train(f) f.close() self.assertIsInstance(t, Train) st = t.station_times self.assertEqual(len(st), 1) self.assertEqual(st[0].station, u"小倉") self.assertFalse(st[0].has_arv_time()) self.assertEqual(st[0].dep_time.hour, 12) self.assertEqual(st[0].dep_time.minute, 12) self.assertEqual(st[0].platform, u"1")
def test_simple_train_last_stop_with_platform(self): f = _create_table_html( u"""<tr> <!-- 列車番号 --> <td nowrap width="80" bgcolor="#add8e6">列車番号</td> <td colspan="2" width="124"> 51M </td> </tr> <tr> <!-- 駅名 --> <td bgcolor="#ddeef7" height="35"> <a href="javascript:jump('28283',1)">博多</a> </td> <!-- 時刻 --> <td bgcolor="#ddeef7" align="center" width="72"> 06:53 着<br> </td> <td bgcolor="#ddeef7" align="center" width="52"> 3 </td> </tr>""" ) t = parse_train(f) f.close() self.assertIsInstance(t, Train) st = t.station_times self.assertEqual(len(st), 1) self.assertEqual(st[0].station, u"博多") self.assertEqual(st[0].arv_time.hour, 6) self.assertEqual(st[0].arv_time.minute, 53) self.assertFalse(st[0].has_dep_time()) self.assertEqual(st[0].platform, u"3")