예제 #1
0
    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")
예제 #2
0
    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])
예제 #3
0
    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号")
예제 #4
0
    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号")
예제 #5
0
    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"土曜・休日運転")
예제 #6
0
    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])
예제 #7
0
    def test_simple_train_empty(self):
        f = self.__create_simple_train_html(u"&nbsp;")
        t = parse_train(f)
        f.close()

        self.assertIsInstance(t, Train)
        self.assertEqual(t.notes, [])
예제 #8
0
    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)
예제 #9
0
    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)
예제 #10
0
    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)
예제 #11
0
    def test_simple_train_all_reserved(self):
        f = self.__create_simple_train_html(u"&nbsp;")
        t = parse_train(f)
        f.close()

        self.assertIsInstance(t, Train)
        self.assertEqual(t.equipments, [])
예제 #12
0
    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])
예제 #13
0
    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])
예제 #14
0
    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両編成)で運転"])
예제 #15
0
    def test_complex_train_empty(self):
        f = self.__create_complex_train_html((u"&nbsp;", u"&nbsp;"))
        t = parse_train(f)
        f.close()

        self.assertIsInstance(t, ComplexTrain)

        ts = t.trains
        self.assertEqual(ts[0].notes, [])
        self.assertEqual(ts[1].notes, [])
예제 #16
0
    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"毎日運転")
예제 #17
0
    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)
예제 #18
0
    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)
예제 #19
0
    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")
예제 #20
0
    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)
예제 #21
0
    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, [])
예제 #22
0
    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>&nbsp;
</td>
<td bgcolor="#ddeef7" align="center" width="52">
&nbsp;
</td>
<td bgcolor="#ddeef7" align="center" width="72">
||
</td>
<td bgcolor="#ddeef7" align="center" width="52">
&nbsp;
</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)
예제 #23
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">
&nbsp;
</td>
<td bgcolor="#FFFFFF" align="center" width="52">
&nbsp;
</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")
예제 #24
0
    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">
&nbsp;
</td>
<td bgcolor="#ddeef7" align="center" width="72">
&nbsp;
</td>
<td bgcolor="#ddeef7" align="center" width="52">
&nbsp;
</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())
예제 #25
0
    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">
&nbsp;
</td>
<td bgcolor="#ddeef7" align="center" width="52">
&nbsp;
</td>
<td bgcolor="#ddeef7" align="center" width="72">
14:46 着<br>&nbsp;
</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")
예제 #26
0
    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")
예제 #27
0
    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")
예제 #28
0
    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">
&nbsp;
</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())
예제 #29
0
    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")
예제 #30
0
    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>&nbsp;
</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")