Skip to content

Commit 5ad131d

Browse files
committed
Add unit tests for reading WPL playlists
1 parent 30a68dd commit 5ad131d

File tree

3 files changed

+104
-0
lines changed

3 files changed

+104
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package listfix.io.playlists.wpl;
2+
3+
import listfix.io.IPlaylistOptions;
4+
import listfix.json.JsonAppOptions;
5+
import listfix.model.playlists.PlaylistEntry;
6+
import listfix.util.TestUtil;
7+
import org.junit.Before;
8+
import org.junit.Test;
9+
import org.junit.jupiter.api.DisplayName;
10+
11+
import java.io.File;
12+
import java.io.IOException;
13+
import java.nio.charset.StandardCharsets;
14+
import java.util.List;
15+
16+
import static org.junit.jupiter.api.Assertions.assertEquals;
17+
import static org.junit.jupiter.api.Assertions.assertNotNull;
18+
19+
public class WPLReaderTests
20+
{
21+
private IPlaylistOptions playlistOptions;
22+
23+
@Before
24+
public void initOptions() {
25+
this.playlistOptions = new JsonAppOptions();
26+
}
27+
28+
private WPLReader buildWplReader(String playlist) throws IOException
29+
{
30+
File m3uPlaylistFile = TestUtil.createFileFromResource(this, "/playlists/wpl/" + playlist);
31+
return new WPLReader(this.playlistOptions, m3uPlaylistFile.toPath());
32+
}
33+
34+
@Test
35+
@DisplayName("Read WPL Playlist: 2seq.wpl")
36+
public void read_2seq() throws IOException
37+
{
38+
WPLReader wplReader = buildWplReader("2seq.wpl");
39+
List<PlaylistEntry> wplPlaylist = wplReader.readPlaylist();
40+
assertNotNull(wplPlaylist, "PlaylistFactory should read and construct M3U playlist");
41+
assertEquals(4, wplPlaylist.size(), "M3U playlist contains 2 tracks");
42+
assertEquals(StandardCharsets.UTF_8, wplReader.getEncoding());
43+
}
44+
45+
@Test
46+
@DisplayName("Read WPL Playlist: playlist.wpl")
47+
public void read_playlist() throws IOException
48+
{
49+
WPLReader wplReader = buildWplReader("playlist.wpl");
50+
List<PlaylistEntry> wplPlaylist = wplReader.readPlaylist();
51+
assertNotNull(wplPlaylist, "PlaylistFactory should read and construct M3U playlist");
52+
assertEquals(2, wplPlaylist.size(), "M3U playlist contains 2 tracks");
53+
assertEquals(StandardCharsets.UTF_8, wplReader.getEncoding());
54+
}
55+
}
+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?wpl version="1.0"?>
2+
<smil>
3+
<head>
4+
<author />
5+
<guid>{80034981-91E5-45A6-9895-5447D7463CDE}</guid>
6+
<meta name="totalDuration" content="0" />
7+
<meta name="ItemCount" content="46" />
8+
<meta name="Generator" content="Entertainment Platform -- 3.6.2304.0" />
9+
<title>Eurowizja do nagrania</title>
10+
</head>
11+
<body>
12+
<seq>
13+
<media src="D:\Tak to Było\22-05-2010\Allisons - Are You Sure.wav" albumTitle="Nieznany album" albumArtist="Nieznany wykonawca" trackTitle="Allisons - Are You Sure" trackArtist="Nieznany wykonawca" />
14+
<media src="D:\Tak to Było\29-05-2010\ABBA - Waterloo.wav" albumTitle="Nieznany album" albumArtist="Nieznany wykonawca" trackTitle="ABBA - Waterloo" trackArtist="Nieznany wykonawca" />
15+
</seq>
16+
<seq>
17+
<smartPlaylist version="1.0.0.0">
18+
<querySet>
19+
<sourceFilter id="{4202947A-A563-4B05-A754-A1B4B5989849}" name="Muzyka w mojej bibliotece">
20+
<fragment name="Last play date">
21+
<argument name="condition">Is Before</argument>
22+
<argument name="value">Last month</argument>
23+
</fragment>
24+
</sourceFilter>
25+
</querySet>
26+
</smartPlaylist>
27+
</seq>
28+
<seq>
29+
<media src="D:\Tak to Było\29-05-2010\Bobbysocks - La Det Swinge.wav" albumTitle="Nieznany album" albumArtist="Nieznany wykonawca" trackTitle="Bobbysocks - La Det Swinge" trackArtist="Nieznany wykonawca" />
30+
<media src="D:\Tak to Było\29-05-2010\Brotherhood of Man - Save Your Kisses For Me.wav" albumTitle="Nieznany album" albumArtist="Nieznany wykonawca" trackTitle="Brotherhood of Man - Save Your Kisses For Me" trackArtist="Nieznany wykonawca" />
31+
</seq>
32+
</body>
33+
</smil>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?wpl version="1.0"?>
2+
<smil>
3+
<head>
4+
<guid>{DAFEF239-50AF-4527-8B24-F67E8DB1E15E}</guid>
5+
<meta name="Generator" content="Entertainment Platform -- 10.16092.1031.0" />
6+
<meta name="ItemCount" content="41" />
7+
<meta name="totalDuration" content="7586973" />
8+
<title>Eurowizja</title>
9+
</head>
10+
<body>
11+
<seq>
12+
<media src="D:\Muzyka\Eurowizja\Eurowizja 2014\Can-linn &amp; Kasey Smith - Heartbeat(Irlandia).mp3" trackTitle="Heartbeat" trackArtist="Can-linn &amp; Kasey Smith" duration="185364" />
13+
<media src="D:\Muzyka\Eurowizja\Eurowizja 2014\Elaiza - Is It Right.mp3" albumTitle="Eurovision Song Contest 2014" albumArtist="Elaiza" trackTitle="Is It Right" trackArtist="Elaiza" />
14+
</seq>
15+
</body>
16+
</smil>

0 commit comments

Comments
 (0)