6 class T(unittest
.TestCase
):
9 'trivial.xml': '''<?xml version="1.0" encoding="ISO-8859-1"?>
10 <!DOCTYPE tv SYSTEM "http://iceguide.icetv.com.au/iceguide/iceguide.dtd">
13 <display-name>TwentyThree</display-name>
14 <region-name>Melbourne</region-name>
17 <programme start="20091030110000 +0000" stop="20091030113000 +0000" channel="2300">
18 <title lang="en">Spiderman</title>
19 <sub-title lang="en">The One Where Spiderman Eats Salad</sub-title>
20 <desc lang="en">Action is his reward.</desc>
21 <category lang="en">News</category>
22 <category lang="en">Sport</category>
23 <episode-num system="icetv">169-0</episode-num>
25 <programme start="20091104093500 +0000" stop="20091104110500 +0000" channel="32">
26 <title lang="en">Soccer: UEFA Champions League</title>
27 <sub-title lang="en">TBA</sub-title>
28 <category lang="en">Football</category>
29 <category lang="en">Soccer</category>
30 <category lang="en">Sport</category>
31 <episode-num system="icetv">14328-72386</episode-num>
32 <previously-shown start="20090917"/>
39 {'title': 'Spiderman',
40 'subtitle': 'The One Where Spiderman Eats Salad',
41 'desc': 'Action is his reward.',
42 'categories': ['News', 'Sport'],
44 'start': datetime
.datetime(2009, 10, 30, 11, 0),
45 'stop': datetime
.datetime(2009, 10, 30, 11, 30)}
47 def open_fake(self
, filename
):
48 from StringIO
import StringIO
49 return StringIO(self
.fake_files
[filename
])
52 self
.parser
= icetotgd
.IceToTgd()
53 self
.parser
.use_xml_file(self
.open_fake('trivial.xml'))
55 def test_can_load_channels(self
):
56 self
.assertEqual(self
.parser
.channels
,
57 {'2300': {'lcn': '23',
58 'display-name': 'TwentyThree'}})
60 def test_can_load_one_programme(self
):
61 p
= self
.parser
.programmes
[0]
62 self
.assertEqual(p
['title'], 'Spiderman')
63 self
.assertEqual(p
['subtitle'], 'The One Where Spiderman Eats Salad')
64 self
.assertEqual(p
['desc'], 'Action is his reward.')
65 self
.assertEqual(p
['categories'], ['News', 'Sport'])
66 self
.assertEqual(p
['channel'], '2300')
67 self
.assertEqual(p
['rating'], None)
68 self
.assertEqual(p
['start'], datetime
.datetime(2009, 10, 30, 11, 0))
69 self
.assertEqual(p
['stop'], datetime
.datetime(2009, 10, 30, 11, 30))
71 def test_time_to_tgd(self
):
72 start
= datetime
.datetime(2009, 10, 30, 11, 30)
73 tgd_start
= icetotgd
.tgd_time_from_timestamp(start
)
74 self
.assertEqual(tgd_start
, '2009/10/30 22:30')
76 def test_duration_to_tgd(self
):
77 start
= datetime
.datetime(2009, 10, 30, 11, 00)
78 stop
= datetime
.datetime(2009, 10, 30, 11, 30)
79 duration
= stop
- start
80 tgd_duration
= icetotgd
.tgd_duration_from_timedelta(duration
)
81 self
.assertEqual(tgd_duration
, '30')
83 def test_programme_to_tgd(self
):
84 tgd_line
= self
.parser
.programme_to_tgd(self
.programme
)
85 self
.assertEqual(tgd_line
,
86 '23\t2009/10/30 22:00\t30\tSpiderman\tThe One Where Spiderman Eats Salad [News/Sport]\tAction is his reward.\tX\tN')
88 def test_programme_xml_without_desc(self
):
89 p
= self
.parser
.programmes
[1]
90 self
.assertEqual(p
['desc'], None)
92 def test_programme_xml_without_desc(self
):
93 p
= self
.programme
.copy()
95 tgd_line
= self
.parser
.programme_to_tgd(p
)
96 self
.assertEqual(tgd_line
,
97 '23\t2009/10/30 22:00\t30\tSpiderman\tThe One Where Spiderman Eats Salad [News/Sport]\t\tX\tN')
99 def test_str_or_empty(self
):
100 from icetotgd
import str_or_empty
101 self
.assertEqual('', str_or_empty(None))
102 self
.assertEqual('', str_or_empty(''))
103 self
.assertEqual('foo', str_or_empty('foo'))
105 def test_filename_from_programme(self
):
106 filename
= icetotgd
.tgd_filename_from_programme(self
.programme
)
107 self
.assertEqual(filename
, '20091030.tgd')
109 if __name__
=='__main__':