xspf 0.3 → 0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/AUTHORS +1 -1
- data/ChangeLog +15 -0
- data/README +6 -9
- data/USAGE +350 -0
- data/coverage/index.html +17 -17
- data/coverage/lib-xspf_rb.html +466 -305
- data/doc/created.rid +1 -1
- data/doc/fr_file_index.html +4 -0
- data/doc/fr_method_index.html +88 -44
- data/doc/index.html +1 -1
- data/examples/parse_and_generate_right.rb +25 -0
- data/examples/parse_and_generate_right_too.rb +27 -0
- data/examples/parse_and_generate_wrong.rb +25 -0
- data/examples/{example.rb → parse_from_file.rb} +15 -16
- data/examples/parse_from_string.rb +70 -0
- data/examples/playlist-tiersen.xspf +100 -0
- data/lib/xspf.rb +335 -174
- data/test/tc_dogfood.rb +106 -0
- data/test/tc_generate_output_formats.rb +352 -0
- data/test/tc_generate_playlist.rb +196 -0
- data/test/tc_generate_track.rb +38 -0
- data/test/tc_generate_tracklist.rb +72 -0
- data/test/tc_generate_xspf.rb +90 -0
- data/test/{tc_output_formats.rb → tc_parse_output_formats.rb} +124 -9
- data/test/{tc_playlist.rb → tc_parse_playlist.rb} +9 -1
- data/test/{tc_track.rb → tc_parse_track.rb} +1 -1
- data/test/{tc_tracklist.rb → tc_parse_tracklist.rb} +1 -1
- data/test/{tc_xspf.rb → tc_parse_xspf.rb} +4 -3
- data/test/ts_xspf.rb +12 -5
- data/xspf-expanded.rb +644 -76
- metadata +30 -16
@@ -0,0 +1,196 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
2
|
+
|
3
|
+
require 'xspf'
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
class TestGeneratePlaylistWithDefaults < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@playlist = XSPF::Playlist.new
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_class
|
13
|
+
assert_instance_of(XSPF::Playlist, @playlist)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_version
|
17
|
+
assert_equal("1", @playlist.version)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_xmlns
|
21
|
+
assert_equal("http://xspf.org/ns/0/", @playlist.xmlns)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
class TestGeneratePlaylistWithParameters < Test::Unit::TestCase
|
27
|
+
|
28
|
+
def setup
|
29
|
+
@playlist = XSPF::Playlist.new( {:xmlns => 'http://xspf.org/ns/0/', :title => 'Tout est calme', :creator => 'Yann Tiersen', :license => 'Redistribution or sharing not allowed', :info => 'http://www.yanntiersen.com/' } )
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_class
|
33
|
+
assert_instance_of(XSPF::Playlist, @playlist)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_version
|
37
|
+
assert_equal('1', @playlist.version)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_xmlns
|
41
|
+
assert_equal('http://xspf.org/ns/0/', @playlist.xmlns)
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_title
|
45
|
+
assert_equal('Tout est calme', @playlist.title)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_creator
|
49
|
+
assert_equal('Yann Tiersen', @playlist.creator)
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_license
|
53
|
+
assert_equal('Redistribution or sharing not allowed', @playlist.license)
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_info
|
57
|
+
assert_equal('http://www.yanntiersen.com/', @playlist.info)
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_tracklist
|
61
|
+
|
62
|
+
track1 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file1.ogg', :identifier => 'http://musicbrainz.org/track/9f342af1-982d-4c26-9f61-3ac258957a83', :title => 'Plus au sud', :creator => 'Yann Tiersen', :tracknum => '1', :album => 'Tout est calme' } )
|
63
|
+
|
64
|
+
track2 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file2.ogg', :identifier => 'http://musicbrainz.org/track/eba1a9a9-1810-41f1-8cc9-2a00dda0a68c', :title => 'Les Grandes Marées', :creator => 'Yann Tiersen', :tracknum => '2', :album => 'Tout est calme' } )
|
65
|
+
|
66
|
+
track3 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file3.ogg', :identifier => 'http://musicbrainz.org/track/0c18ef8c-04fa-47d5-b078-66ab6a819a83', :title => 'La Crise', :creator => 'Yann Tiersen', :tracknum => '3', :album => 'Tout est calme' } )
|
67
|
+
|
68
|
+
track4 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file4.ogg', :identifier => ' http://musicbrainz.org/track/0f66dd52-bda0-4526-979d-af95ac637cc4', :title => 'Tout est calme', :creator => 'Yann Tiersen', :tracknum => '4', :album => 'Tout est calme' } )
|
69
|
+
|
70
|
+
track5 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file5.ogg', :identifier => ' http://musicbrainz.org/track/a06ef58e-019e-409a-bf72-9bd080012ac3', :title => 'La Rupture', :creator => 'Yann Tiersen', :tracknum => '5', :album => 'Tout est calme' } )
|
71
|
+
|
72
|
+
track6 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file6.ogg', :identifier => 'http://musicbrainz.org/track/f82c0a06-d4a8-41a5-9238-029e38fa9d7c', :title => 'La Relève', :creator => 'Yann Tiersen', :tracknum => '6', :album => 'Tout est calme' } )
|
73
|
+
|
74
|
+
track7 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file7.ogg', :identifier => 'http://musicbrainz.org/track/97591e2b-967e-47eb-b2b3-9a450cd33352', :title => 'La Pharmacie', :creator => 'Yann Tiersen', :tracknum => '7', :album => 'Tout est calme' } )
|
75
|
+
|
76
|
+
track8 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file8.ogg', :identifier => 'http://musicbrainz.org/track/ae7f8502-778d-4f5e-9dba-6fc5d553ad0e', :title => 'La Terrasse', :creator => 'Yann Tiersen', :tracknum => '8', :album => 'Tout est calme' } )
|
77
|
+
|
78
|
+
track9 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file9.ogg', :identifier => 'http://musicbrainz.org/track/6e937503-9d01-428c-84b5-1200bab9d1c6', :title => "L''Étal", :creator => 'Yann Tiersen', :tracknum => '9', :album => 'Tout est calme' } )
|
79
|
+
|
80
|
+
track10 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file10.ogg', :identifier => 'http://musicbrainz.org/track/2c4c845c-907a-4d96-940a-bbe8b2d0f126', :title => 'La Découverte', :creator => 'Yann Tiersen', :tracknum => '10', :album => 'Tout est calme' } )
|
81
|
+
|
82
|
+
tracklist = XSPF::Tracklist.new
|
83
|
+
|
84
|
+
tracklist << track1
|
85
|
+
tracklist << track2
|
86
|
+
tracklist << track3
|
87
|
+
tracklist << track4
|
88
|
+
tracklist << track5
|
89
|
+
tracklist << track6
|
90
|
+
tracklist << track7
|
91
|
+
tracklist << track8
|
92
|
+
tracklist << track9
|
93
|
+
tracklist << track10
|
94
|
+
|
95
|
+
@playlist.tracklist = tracklist
|
96
|
+
|
97
|
+
assert_instance_of(XSPF::Tracklist, @playlist.tracklist)
|
98
|
+
assert_equal(tracklist, @playlist.tracklist)
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_nil
|
102
|
+
assert_nil(@playlist.image)
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_error
|
106
|
+
assert_raise(NoMethodError) { @playlist.inexistent_method }
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
class TestGeneratePlaylistWithTracklist < Test::Unit::TestCase
|
112
|
+
|
113
|
+
def setup
|
114
|
+
track1 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file1.ogg', :identifier => 'http://musicbrainz.org/track/9f342af1-982d-4c26-9f61-3ac258957a83', :title => 'Plus au sud', :creator => 'Yann Tiersen', :tracknum => '1', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
115
|
+
|
116
|
+
track2 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file2.ogg', :identifier => 'http://musicbrainz.org/track/eba1a9a9-1810-41f1-8cc9-2a00dda0a68c', :title => 'Les Grandes Marées', :creator => 'Yann Tiersen', :tracknum => '2', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
117
|
+
|
118
|
+
track3 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file3.ogg', :identifier => 'http://musicbrainz.org/track/0c18ef8c-04fa-47d5-b078-66ab6a819a83', :title => 'La Crise', :creator => 'Yann Tiersen', :tracknum => '3', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
119
|
+
|
120
|
+
track4 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file4.ogg', :identifier => ' http://musicbrainz.org/track/0f66dd52-bda0-4526-979d-af95ac637cc4', :title => 'Tout est calme', :creator => 'Yann Tiersen', :tracknum => '4', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
121
|
+
|
122
|
+
track5 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file5.ogg', :identifier => ' http://musicbrainz.org/track/a06ef58e-019e-409a-bf72-9bd080012ac3', :title => 'La Rupture', :creator => 'Yann Tiersen', :tracknum => '5', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
123
|
+
|
124
|
+
track6 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file6.ogg', :identifier => 'http://musicbrainz.org/track/f82c0a06-d4a8-41a5-9238-029e38fa9d7c', :title => 'La Relève', :creator => 'Yann Tiersen', :tracknum => '6', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
125
|
+
|
126
|
+
track7 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file7.ogg', :identifier => 'http://musicbrainz.org/track/97591e2b-967e-47eb-b2b3-9a450cd33352', :title => 'La Pharmacie', :creator => 'Yann Tiersen', :tracknum => '7', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
127
|
+
|
128
|
+
track8 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file8.ogg', :identifier => 'http://musicbrainz.org/track/ae7f8502-778d-4f5e-9dba-6fc5d553ad0e', :title => 'La Terrasse', :creator => 'Yann Tiersen', :tracknum => '8', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
129
|
+
|
130
|
+
track9 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file9.ogg', :identifier => 'http://musicbrainz.org/track/6e937503-9d01-428c-84b5-1200bab9d1c6', :title => "L''Étal", :creator => 'Yann Tiersen', :tracknum => '9', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
131
|
+
|
132
|
+
track10 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file10.ogg', :identifier => 'http://musicbrainz.org/track/2c4c845c-907a-4d96-940a-bbe8b2d0f126', :title => 'La Découverte', :creator => 'Yann Tiersen', :tracknum => '10', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
133
|
+
|
134
|
+
tracklist = XSPF::Tracklist.new
|
135
|
+
|
136
|
+
tracklist << track1
|
137
|
+
tracklist << track2
|
138
|
+
tracklist << track3
|
139
|
+
tracklist << track4
|
140
|
+
tracklist << track5
|
141
|
+
tracklist << track6
|
142
|
+
tracklist << track7
|
143
|
+
tracklist << track8
|
144
|
+
tracklist << track9
|
145
|
+
tracklist << track10
|
146
|
+
|
147
|
+
@playlist = XSPF::Playlist.new( {:xmlns => 'http://xspf.org/ns/0/', :title => 'Tout est calme', :creator => 'Yann Tiersen', :license => 'Redistribution or sharing not allowed', :info => 'http://www.yanntiersen.com/', :tracklist => tracklist, :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_class
|
151
|
+
assert_instance_of(XSPF::Playlist, @playlist)
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_tracklist_class
|
155
|
+
assert_instance_of(XSPF::Tracklist, @playlist.tracklist)
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_xmlns
|
159
|
+
assert_equal('http://xspf.org/ns/0/', @playlist.xmlns)
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_title
|
163
|
+
assert_equal('Tout est calme', @playlist.title)
|
164
|
+
end
|
165
|
+
|
166
|
+
def test_creator
|
167
|
+
assert_equal('Yann Tiersen', @playlist.creator)
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_license
|
171
|
+
assert_equal('Redistribution or sharing not allowed', @playlist.license)
|
172
|
+
end
|
173
|
+
|
174
|
+
def test_info
|
175
|
+
assert_equal('http://www.yanntiersen.com/', @playlist.info)
|
176
|
+
end
|
177
|
+
|
178
|
+
def test_nil
|
179
|
+
assert_nil(@playlist.image)
|
180
|
+
end
|
181
|
+
|
182
|
+
def test_error
|
183
|
+
assert_raise(NoMethodError) { @playlist.inexistent_method }
|
184
|
+
end
|
185
|
+
|
186
|
+
def test_meta
|
187
|
+
assert_equal('http://www.example.org/key', @playlist.meta_rel)
|
188
|
+
assert_equal('value', @playlist.meta_content)
|
189
|
+
end
|
190
|
+
|
191
|
+
def test_to_xml
|
192
|
+
xml = "<playlist version='1' xmlns='http://xspf.org/ns/0/'><title>Tout est calme</title><creator>Yann Tiersen</creator><info>http://www.yanntiersen.com/</info><license>Redistribution or sharing not allowed</license><meta rel='http://www.example.org/key'>value</meta><trackList><track><location>http://some.nifty.locati.on/file1.ogg</location><identifier>http://musicbrainz.org/track/9f342af1-982d-4c26-9f61-3ac258957a83</identifier><title>Plus au sud</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>1</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file2.ogg</location><identifier>http://musicbrainz.org/track/eba1a9a9-1810-41f1-8cc9-2a00dda0a68c</identifier><title>Les Grandes Marées</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>2</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file3.ogg</location><identifier>http://musicbrainz.org/track/0c18ef8c-04fa-47d5-b078-66ab6a819a83</identifier><title>La Crise</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>3</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file4.ogg</location><identifier> http://musicbrainz.org/track/0f66dd52-bda0-4526-979d-af95ac637cc4</identifier><title>Tout est calme</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>4</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file5.ogg</location><identifier> http://musicbrainz.org/track/a06ef58e-019e-409a-bf72-9bd080012ac3</identifier><title>La Rupture</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>5</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file6.ogg</location><identifier>http://musicbrainz.org/track/f82c0a06-d4a8-41a5-9238-029e38fa9d7c</identifier><title>La Relève</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>6</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file7.ogg</location><identifier>http://musicbrainz.org/track/97591e2b-967e-47eb-b2b3-9a450cd33352</identifier><title>La Pharmacie</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>7</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file8.ogg</location><identifier>http://musicbrainz.org/track/ae7f8502-778d-4f5e-9dba-6fc5d553ad0e</identifier><title>La Terrasse</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>8</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file9.ogg</location><identifier>http://musicbrainz.org/track/6e937503-9d01-428c-84b5-1200bab9d1c6</identifier><title>L\303\211tal</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>9</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file10.ogg</location><identifier>http://musicbrainz.org/track/2c4c845c-907a-4d96-940a-bbe8b2d0f126</identifier><title>La Découverte</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>10</trackNum><meta rel='http://www.example.org/key'>value</meta></track></trackList></playlist>"
|
193
|
+
assert_equal(xml, @playlist.to_xml)
|
194
|
+
end
|
195
|
+
|
196
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
2
|
+
|
3
|
+
require 'xspf'
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
class TestGenerateTrack < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@track = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file.ogg', :identifier => 'http://musicbrainz.org/track/860287b7-ff56-4c12-a346-da2722414aed', :title => 'Democracy', :creator => 'Leonard Cohen', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_class
|
13
|
+
assert_instance_of(XSPF::Track, @track)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_creation_with_arguments
|
17
|
+
assert_equal('http://musicbrainz.org/track/860287b7-ff56-4c12-a346-da2722414aed', @track.identifier)
|
18
|
+
assert_equal('http://some.nifty.locati.on/file.ogg', @track.location)
|
19
|
+
assert_equal('Leonard Cohen', @track.creator)
|
20
|
+
assert_equal('Democracy', @track.title)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_to_xml
|
24
|
+
|
25
|
+
xml = "<track><location>http://some.nifty.locati.on/file.ogg</location><identifier>http://musicbrainz.org/track/860287b7-ff56-4c12-a346-da2722414aed</identifier><title>Democracy</title><creator>Leonard Cohen</creator><meta rel='http://www.example.org/key'>value</meta></track>"
|
26
|
+
|
27
|
+
assert_equal(xml, @track.to_xml)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_nil
|
31
|
+
assert_nil(@track.album)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_error
|
35
|
+
assert_raise(NoMethodError) { @track.inexistent_method }
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
2
|
+
|
3
|
+
require 'xspf'
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
class TestGenerateTracklist < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@track1 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file1.ogg', :identifier => 'http://musicbrainz.org/track/9f342af1-982d-4c26-9f61-3ac258957a83', :title => 'Plus au sud', :creator => 'Yann Tiersen', :tracknum => '1', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
10
|
+
|
11
|
+
@track2 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file2.ogg', :identifier => 'http://musicbrainz.org/track/eba1a9a9-1810-41f1-8cc9-2a00dda0a68c', :title => 'Les Grandes Marées', :creator => 'Yann Tiersen', :tracknum => '2', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
12
|
+
|
13
|
+
@track3 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file3.ogg', :identifier => 'http://musicbrainz.org/track/0c18ef8c-04fa-47d5-b078-66ab6a819a83', :title => 'La Crise', :creator => 'Yann Tiersen', :tracknum => '3', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
14
|
+
|
15
|
+
@track4 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file4.ogg', :identifier => ' http://musicbrainz.org/track/0f66dd52-bda0-4526-979d-af95ac637cc4', :title => 'Tout est calme', :creator => 'Yann Tiersen', :tracknum => '4', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
16
|
+
|
17
|
+
@track5 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file5.ogg', :identifier => ' http://musicbrainz.org/track/a06ef58e-019e-409a-bf72-9bd080012ac3', :title => 'La Rupture', :creator => 'Yann Tiersen', :tracknum => '5', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
18
|
+
|
19
|
+
@track6 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file6.ogg', :identifier => 'http://musicbrainz.org/track/f82c0a06-d4a8-41a5-9238-029e38fa9d7c', :title => 'La Relève', :creator => 'Yann Tiersen', :tracknum => '6', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
20
|
+
|
21
|
+
@track7 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file7.ogg', :identifier => 'http://musicbrainz.org/track/97591e2b-967e-47eb-b2b3-9a450cd33352', :title => 'La Pharmacie', :creator => 'Yann Tiersen', :tracknum => '7', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
22
|
+
|
23
|
+
@track8 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file8.ogg', :identifier => 'http://musicbrainz.org/track/ae7f8502-778d-4f5e-9dba-6fc5d553ad0e', :title => 'La Terrasse', :creator => 'Yann Tiersen', :tracknum => '8', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
24
|
+
|
25
|
+
@track9 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file9.ogg', :identifier => 'http://musicbrainz.org/track/6e937503-9d01-428c-84b5-1200bab9d1c6', :title => "L''Étal", :creator => 'Yann Tiersen', :tracknum => '9', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
26
|
+
|
27
|
+
@track10 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file10.ogg', :identifier => 'http://musicbrainz.org/track/2c4c845c-907a-4d96-940a-bbe8b2d0f126', :title => 'La Découverte', :creator => 'Yann Tiersen', :tracknum => '10', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
28
|
+
|
29
|
+
@tracklist = XSPF::Tracklist.new({})
|
30
|
+
|
31
|
+
@tracklist << @track1
|
32
|
+
@tracklist << @track2
|
33
|
+
@tracklist << @track3
|
34
|
+
@tracklist << @track4
|
35
|
+
@tracklist << @track5
|
36
|
+
@tracklist << @track6
|
37
|
+
@tracklist << @track7
|
38
|
+
@tracklist << @track8
|
39
|
+
@tracklist << @track9
|
40
|
+
@tracklist << @track10
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_tracklist_class
|
45
|
+
assert_instance_of(XSPF::Tracklist, @tracklist)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_tracklist_creation_from_nil
|
49
|
+
tl = XSPF::Tracklist.new
|
50
|
+
assert_instance_of(XSPF::Tracklist, tl)
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_number_of_tracks
|
54
|
+
assert_equal(@tracklist.tracks.size, 10)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_track_class
|
58
|
+
@tracklist.tracks.each do |t|
|
59
|
+
assert_instance_of(XSPF::Track, t)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_error
|
64
|
+
assert_raise(NoMethodError) { @tracklist.inexistent_method }
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_to_xml
|
68
|
+
xml = "<trackList><track><location>http://some.nifty.locati.on/file1.ogg</location><identifier>http://musicbrainz.org/track/9f342af1-982d-4c26-9f61-3ac258957a83</identifier><title>Plus au sud</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>1</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file2.ogg</location><identifier>http://musicbrainz.org/track/eba1a9a9-1810-41f1-8cc9-2a00dda0a68c</identifier><title>Les Grandes Mar\303\251es</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>2</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file3.ogg</location><identifier>http://musicbrainz.org/track/0c18ef8c-04fa-47d5-b078-66ab6a819a83</identifier><title>La Crise</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>3</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file4.ogg</location><identifier> http://musicbrainz.org/track/0f66dd52-bda0-4526-979d-af95ac637cc4</identifier><title>Tout est calme</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>4</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file5.ogg</location><identifier> http://musicbrainz.org/track/a06ef58e-019e-409a-bf72-9bd080012ac3</identifier><title>La Rupture</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>5</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file6.ogg</location><identifier>http://musicbrainz.org/track/f82c0a06-d4a8-41a5-9238-029e38fa9d7c</identifier><title>La Rel\303\250ve</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>6</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file7.ogg</location><identifier>http://musicbrainz.org/track/97591e2b-967e-47eb-b2b3-9a450cd33352</identifier><title>La Pharmacie</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>7</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file8.ogg</location><identifier>http://musicbrainz.org/track/ae7f8502-778d-4f5e-9dba-6fc5d553ad0e</identifier><title>La Terrasse</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>8</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file9.ogg</location><identifier>http://musicbrainz.org/track/6e937503-9d01-428c-84b5-1200bab9d1c6</identifier><title>L\303\211tal</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>9</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file10.ogg</location><identifier>http://musicbrainz.org/track/2c4c845c-907a-4d96-940a-bbe8b2d0f126</identifier><title>La D\303\251couverte</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>10</trackNum><meta rel='http://www.example.org/key'>value</meta></track></trackList>"
|
69
|
+
assert_equal( xml, @tracklist.to_xml )
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
2
|
+
|
3
|
+
require 'xspf'
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
class TestGenerateXSPF < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_defaults
|
9
|
+
xspf = XSPF.new
|
10
|
+
assert_instance_of(XSPF, xspf)
|
11
|
+
assert_equal('1.0', xspf.version)
|
12
|
+
assert_equal('UTF-8', xspf.encoding)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_custom_encoding
|
16
|
+
xspf = XSPF.new( { :encoding => 'ASCII' } )
|
17
|
+
assert_equal('1.0', xspf.version)
|
18
|
+
assert_equal('ASCII', xspf.encoding)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_custom_version
|
22
|
+
xspf = XSPF.new( { :version => '1.1' } )
|
23
|
+
assert_equal('1.1', xspf.version)
|
24
|
+
assert_equal('UTF-8', xspf.encoding)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_error
|
28
|
+
xspf = XSPF.new
|
29
|
+
assert_raise(NoMethodError) {xspf.inexistent_method }
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_xml_generation_empty_xspf
|
33
|
+
xspf = XSPF.new
|
34
|
+
assert_equal("<?xml version='1.0' encoding='UTF-8'?>", xspf.to_xml)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_xml_generation_valid_xspf
|
38
|
+
|
39
|
+
xspf_document = "<?xml version='1.0' encoding='UTF-8'?><playlist version='1' xmlns='http://xspf.org/ns/0/'><title>Tout est calme</title><creator>Yann Tiersen</creator><info>http://www.yanntiersen.com/</info><license>Redistribution or sharing not allowed</license><meta rel='http://www.example.org/key'>value</meta><trackList><track><location>http://some.nifty.locati.on/file1.ogg</location><identifier>http://musicbrainz.org/track/9f342af1-982d-4c26-9f61-3ac258957a83</identifier><title>Plus au sud</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>1</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file2.ogg</location><identifier>http://musicbrainz.org/track/eba1a9a9-1810-41f1-8cc9-2a00dda0a68c</identifier><title>Les Grandes Marées</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>2</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file3.ogg</location><identifier>http://musicbrainz.org/track/0c18ef8c-04fa-47d5-b078-66ab6a819a83</identifier><title>La Crise</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>3</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file4.ogg</location><identifier> http://musicbrainz.org/track/0f66dd52-bda0-4526-979d-af95ac637cc4</identifier><title>Tout est calme</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>4</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file5.ogg</location><identifier> http://musicbrainz.org/track/a06ef58e-019e-409a-bf72-9bd080012ac3</identifier><title>La Rupture</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>5</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file6.ogg</location><identifier>http://musicbrainz.org/track/f82c0a06-d4a8-41a5-9238-029e38fa9d7c</identifier><title>La Relève</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>6</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file7.ogg</location><identifier>http://musicbrainz.org/track/97591e2b-967e-47eb-b2b3-9a450cd33352</identifier><title>La Pharmacie</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>7</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file8.ogg</location><identifier>http://musicbrainz.org/track/ae7f8502-778d-4f5e-9dba-6fc5d553ad0e</identifier><title>La Terrasse</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>8</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file9.ogg</location><identifier>http://musicbrainz.org/track/6e937503-9d01-428c-84b5-1200bab9d1c6</identifier><title>L\303\211tal</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>9</trackNum><meta rel='http://www.example.org/key'>value</meta></track><track><location>http://some.nifty.locati.on/file10.ogg</location><identifier>http://musicbrainz.org/track/2c4c845c-907a-4d96-940a-bbe8b2d0f126</identifier><title>La Découverte</title><creator>Yann Tiersen</creator><album>Tout est calme</album><trackNum>10</trackNum><meta rel='http://www.example.org/key'>value</meta></track></trackList></playlist>"
|
40
|
+
|
41
|
+
track1 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file1.ogg', :identifier => 'http://musicbrainz.org/track/9f342af1-982d-4c26-9f61-3ac258957a83', :title => 'Plus au sud', :creator => 'Yann Tiersen', :tracknum => '1', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
42
|
+
|
43
|
+
track2 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file2.ogg', :identifier => 'http://musicbrainz.org/track/eba1a9a9-1810-41f1-8cc9-2a00dda0a68c', :title => 'Les Grandes Marées', :creator => 'Yann Tiersen', :tracknum => '2', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
44
|
+
|
45
|
+
track3 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file3.ogg', :identifier => 'http://musicbrainz.org/track/0c18ef8c-04fa-47d5-b078-66ab6a819a83', :title => 'La Crise', :creator => 'Yann Tiersen', :tracknum => '3', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
46
|
+
|
47
|
+
track4 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file4.ogg', :identifier => ' http://musicbrainz.org/track/0f66dd52-bda0-4526-979d-af95ac637cc4', :title => 'Tout est calme', :creator => 'Yann Tiersen', :tracknum => '4', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
48
|
+
|
49
|
+
track5 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file5.ogg', :identifier => ' http://musicbrainz.org/track/a06ef58e-019e-409a-bf72-9bd080012ac3', :title => 'La Rupture', :creator => 'Yann Tiersen', :tracknum => '5', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
50
|
+
|
51
|
+
track6 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file6.ogg', :identifier => 'http://musicbrainz.org/track/f82c0a06-d4a8-41a5-9238-029e38fa9d7c', :title => 'La Relève', :creator => 'Yann Tiersen', :tracknum => '6', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
52
|
+
|
53
|
+
track7 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file7.ogg', :identifier => 'http://musicbrainz.org/track/97591e2b-967e-47eb-b2b3-9a450cd33352', :title => 'La Pharmacie', :creator => 'Yann Tiersen', :tracknum => '7', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
54
|
+
|
55
|
+
track8 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file8.ogg', :identifier => 'http://musicbrainz.org/track/ae7f8502-778d-4f5e-9dba-6fc5d553ad0e', :title => 'La Terrasse', :creator => 'Yann Tiersen', :tracknum => '8', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
56
|
+
|
57
|
+
track9 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file9.ogg', :identifier => 'http://musicbrainz.org/track/6e937503-9d01-428c-84b5-1200bab9d1c6', :title => "L''Étal", :creator => 'Yann Tiersen', :tracknum => '9', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
58
|
+
|
59
|
+
track10 = XSPF::Track.new( { :location => 'http://some.nifty.locati.on/file10.ogg', :identifier => 'http://musicbrainz.org/track/2c4c845c-907a-4d96-940a-bbe8b2d0f126', :title => 'La Découverte', :creator => 'Yann Tiersen', :tracknum => '10', :album => 'Tout est calme', :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
60
|
+
|
61
|
+
tracklist = XSPF::Tracklist.new
|
62
|
+
|
63
|
+
tracklist << track1
|
64
|
+
tracklist << track2
|
65
|
+
tracklist << track3
|
66
|
+
tracklist << track4
|
67
|
+
tracklist << track5
|
68
|
+
tracklist << track6
|
69
|
+
tracklist << track7
|
70
|
+
tracklist << track8
|
71
|
+
tracklist << track9
|
72
|
+
tracklist << track10
|
73
|
+
|
74
|
+
playlist = XSPF::Playlist.new( {:xmlns => 'http://xspf.org/ns/0/', :title => 'Tout est calme', :creator => 'Yann Tiersen', :license => 'Redistribution or sharing not allowed', :info => 'http://www.yanntiersen.com/', :tracklist => tracklist, :meta_rel => 'http://www.example.org/key', :meta_content => 'value' } )
|
75
|
+
|
76
|
+
xspf = XSPF.new( { :playlist => playlist } )
|
77
|
+
|
78
|
+
assert_equal(xspf_document, xspf.to_xml)
|
79
|
+
assert_instance_of(XSPF::Playlist, xspf.playlist)
|
80
|
+
assert_raise(TypeError) { xspf.playlist = 'error' }
|
81
|
+
assert_nothing_raised(Exception) { xspf.playlist = playlist }
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_error_on_xspf_creation
|
85
|
+
ary = Array.new(3) { |i| i*i }
|
86
|
+
assert_raise(TypeError) { XSPF.new( { :playlist => ary } ) }
|
87
|
+
assert_raise(TypeError) { XSPF.new(ary) }
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
@@ -3,7 +3,7 @@ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
|
3
3
|
require 'xspf'
|
4
4
|
require 'test/unit'
|
5
5
|
|
6
|
-
class
|
6
|
+
class TestOuputFormats < Test::Unit::TestCase
|
7
7
|
|
8
8
|
def setup
|
9
9
|
@playlist_document = <<END_OF_PLAYLIST
|
@@ -52,6 +52,7 @@ END_OF_PLAYLIST
|
|
52
52
|
</smil>
|
53
53
|
END_OF_SMIL
|
54
54
|
|
55
|
+
# This @expected_html_ouput is not 100% correct because we do not parse the <attribution> element, therefore XSPF for Ruby does not generate the same HTML xsltproc does.
|
55
56
|
@expected_html_ouput = <<END_OF_HTML
|
56
57
|
<html xmlns:xspf="http://xspf.org/ns/0/">
|
57
58
|
<head>
|
@@ -126,10 +127,7 @@ dl {
|
|
126
127
|
<dt class="identifier">identifier</dt>
|
127
128
|
<dd class="identifier">http://mayhem-chaos.net/xspf/xspf_it_up/1.0</dd>
|
128
129
|
<dt class="attribution">attribution</dt>
|
129
|
-
<dd class="attribution"><ol
|
130
|
-
<dt class="location">location</dt>
|
131
|
-
<dd class="location"><a href="http://mayhem-chaos.net/xspf/xspf_it_up.html">http://mayhem-chaos.net/xspf/xspf_it_up.html</a></dd>
|
132
|
-
</li></ol></dd>
|
130
|
+
<dd class="attribution"><ol></ol></dd>
|
133
131
|
<dt class="trackList">trackList</dt>
|
134
132
|
<dd class="trackList"><ol>
|
135
133
|
<li><dl class="track">
|
@@ -168,6 +166,123 @@ dl {
|
|
168
166
|
</html>
|
169
167
|
END_OF_HTML
|
170
168
|
|
169
|
+
# This @expected_html_output is the output of xsltproc and is 100% correct. This should be the @expected_html_output in the future, when XSPF for Ruby will parse the <attribution> element.
|
170
|
+
# @expected_html_ouput = <<END_OF_HTML
|
171
|
+
# <html xmlns:xspf="http://xspf.org/ns/0/">
|
172
|
+
# <head>
|
173
|
+
# <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
174
|
+
# <title>XSPlF it up!</title>
|
175
|
+
# <link href="http://www.w3.org/StyleSheets/Core/Modernist" rel="stylesheet" type="text/css" media="screen">
|
176
|
+
# <style type="text/css">
|
177
|
+
# dl {
|
178
|
+
# margin-bottom: 5px;
|
179
|
+
# }
|
180
|
+
#
|
181
|
+
# .track {
|
182
|
+
# }
|
183
|
+
#
|
184
|
+
# .location {
|
185
|
+
# }
|
186
|
+
#
|
187
|
+
# .creator {
|
188
|
+
# }
|
189
|
+
#
|
190
|
+
# .top {
|
191
|
+
# }
|
192
|
+
#
|
193
|
+
# .duration {
|
194
|
+
# }
|
195
|
+
#
|
196
|
+
# .trackList {
|
197
|
+
# }
|
198
|
+
#
|
199
|
+
# .info {
|
200
|
+
# }
|
201
|
+
#
|
202
|
+
# .annotation {
|
203
|
+
# }
|
204
|
+
#
|
205
|
+
# .attribution {
|
206
|
+
# }
|
207
|
+
#
|
208
|
+
# .image {
|
209
|
+
# }
|
210
|
+
#
|
211
|
+
# .meta {
|
212
|
+
# }
|
213
|
+
#
|
214
|
+
# .license {
|
215
|
+
# }
|
216
|
+
#
|
217
|
+
# .trackNum {
|
218
|
+
# }
|
219
|
+
#
|
220
|
+
# .date {
|
221
|
+
# }
|
222
|
+
#
|
223
|
+
# .identifier {
|
224
|
+
# }
|
225
|
+
#
|
226
|
+
# .link {
|
227
|
+
# }
|
228
|
+
#
|
229
|
+
#
|
230
|
+
# </style>
|
231
|
+
# </head>
|
232
|
+
# <body>
|
233
|
+
# <h1>XSPlF it up!</h1>
|
234
|
+
# <dl class="top">
|
235
|
+
# <dt class="creator">creator</dt>
|
236
|
+
# <dd class="creator">Mayhem & Chaos Coordinator</dd>
|
237
|
+
# <dt class="annotation">annotation</dt>
|
238
|
+
# <dd class="annotation">Just a few songs to enjoy while you XSPlF it up!</dd>
|
239
|
+
# <dt class="info">info</dt>
|
240
|
+
# <dd class="info"><a href="http://mayhem-chaos.net/xspf/xspf_it_up.html">http://mayhem-chaos.net/xspf/xspf_it_up.html</a></dd>
|
241
|
+
# <dt class="identifier">identifier</dt>
|
242
|
+
# <dd class="identifier">http://mayhem-chaos.net/xspf/xspf_it_up/1.0</dd>
|
243
|
+
# <dt class="attribution">attribution</dt>
|
244
|
+
# <dd class="attribution"><ol><li>
|
245
|
+
# <dt class="location">location</dt>
|
246
|
+
# <dd class="location"><a href="http://mayhem-chaos.net/xspf/xspf_it_up.html">http://mayhem-chaos.net/xspf/xspf_it_up.html</a></dd>
|
247
|
+
# </li></ol></dd>
|
248
|
+
# <dt class="trackList">trackList</dt>
|
249
|
+
# <dd class="trackList"><ol>
|
250
|
+
# <li><dl class="track">
|
251
|
+
# <dt class="identifier">identifier</dt>
|
252
|
+
# <dd class="identifier">http://musicbrainz.org/track/bdab6db0-2fd6-4166-a5fa-fbf2ff213793</dd>
|
253
|
+
# <dt class="creator">creator</dt>
|
254
|
+
# <dd class="creator">Cypress Hill</dd>
|
255
|
+
# <dt class="duration">duration</dt>
|
256
|
+
# <dd class="duration">174613</dd>
|
257
|
+
# <dt class="meta">meta</dt>
|
258
|
+
# <dd class="meta"><a href="http://musicbrainz.org/mm-2.1/track/bdab6db0-2fd6-4166-a5fa-fbf2ff213793">http://musicbrainz.org/mm-2.1/track/bdab6db0-2fd6-4166-a5fa-fbf2ff213793</a></dd>
|
259
|
+
# </dl></li>
|
260
|
+
# <li><dl class="track">
|
261
|
+
# <dt class="identifier">identifier</dt>
|
262
|
+
# <dd class="identifier">bdc846e7-6c26-4193-82a6-8d1b5a4d3429</dd>
|
263
|
+
# <dt class="creator">creator</dt>
|
264
|
+
# <dd class="creator">Sublime</dd>
|
265
|
+
# <dt class="duration">duration</dt>
|
266
|
+
# <dd class="duration">175466</dd>
|
267
|
+
# <dt class="meta">meta</dt>
|
268
|
+
# <dd class="meta"><a href="http://musicbrainz.org/mm-2.1/track/bdc846e7-6c26-4193-82a6-8d1b5a4d3429">http://musicbrainz.org/mm-2.1/track/bdc846e7-6c26-4193-82a6-8d1b5a4d3429</a></dd>
|
269
|
+
# </dl></li>
|
270
|
+
# <li><dl class="track">
|
271
|
+
# <dt class="identifier">identifier</dt>
|
272
|
+
# <dd class="identifier">http://musicbrainz.org/track/7d9776f7-d428-40dc-a425-3c6e3dce4d58</dd>
|
273
|
+
# <dt class="creator">creator</dt>
|
274
|
+
# <dd class="creator">Weezer</dd>
|
275
|
+
# <dt class="duration">duration</dt>
|
276
|
+
# <dd class="duration">186533</dd>
|
277
|
+
# <dt class="meta">meta</dt>
|
278
|
+
# <dd class="meta"><a href="http://musicbrainz.org/mm-2.1/track/7d9776f7-d428-40dc-a425-3c6e3dce4d58">http://musicbrainz.org/mm-2.1/track/7d9776f7-d428-40dc-a425-3c6e3dce4d58</a></dd>
|
279
|
+
# </dl></li>
|
280
|
+
# </ol></dd>
|
281
|
+
# </dl>
|
282
|
+
# </body>
|
283
|
+
# </html>
|
284
|
+
# END_OF_HTML
|
285
|
+
|
171
286
|
@expected_soundblox_ouput = <<END_OF_SOUNDBLOX
|
172
287
|
<?xml version="1.0"?>
|
173
288
|
<soundbloxdata xmlns:xspf="http://xspf.org/ns/0/">
|
@@ -188,18 +303,18 @@ END_OF_SOUNDBLOX
|
|
188
303
|
end
|
189
304
|
|
190
305
|
def test_smil
|
191
|
-
assert_equal(@xspf.to_smil
|
306
|
+
assert_equal(@expected_smil_output, @xspf.to_smil)
|
192
307
|
end
|
193
308
|
|
194
309
|
def test_html
|
195
|
-
assert_equal(@xspf.to_html
|
310
|
+
assert_equal(@expected_html_ouput, @xspf.to_html)
|
196
311
|
end
|
197
312
|
|
198
313
|
def test_soundblox
|
199
|
-
assert_equal(@xspf.to_soundblox
|
314
|
+
assert_equal(@expected_soundblox_ouput, @xspf.to_soundblox)
|
200
315
|
end
|
201
316
|
|
202
317
|
def test_error
|
203
|
-
assert_raise(NoMethodError) {@xspf.to_other_format }
|
318
|
+
assert_raise(NoMethodError) { @xspf.to_other_format }
|
204
319
|
end
|
205
320
|
end
|