]> git.basschouten.com Git - openhab-addons.git/blob
a9e48681e7016f229659103a1be298ec4b05ec15
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2022 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.sonos.internal;
14
15 import static org.junit.jupiter.api.Assertions.*;
16
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.junit.jupiter.api.Test;
19 import org.openhab.binding.sonos.internal.handler.SonosMediaInformation;
20
21 /**
22  * Test for class SonosMediaInformation
23  *
24  * @author Laurent Garnier - Initial contribution
25  */
26 @NonNullByDefault
27 public class SonosMediaInformationTest {
28
29     @Test
30     public void parseTuneInMediaInfoWithStreamContent() {
31         SonosMetaData trackMetaData = new SonosMetaData("yyy", "yyy", "yyy", "Mroning Live", "yyy", "yyy", "yyy", "yyy",
32                 "yyy", "yyy");
33         SonosMediaInformation result = SonosMediaInformation.parseTuneInMediaInfo(null, "Radio One", trackMetaData);
34         assertNull(result.getArtist());
35         assertNull(result.getAlbum());
36         assertEquals("Radio One", result.getTitle());
37         assertEquals("Radio One - Mroning Live", result.getCombinedInfo());
38         assertEquals(true, result.needsUpdate());
39     }
40
41     @Test
42     public void parseTuneInMediaInfoWithoutStreamContent() {
43         SonosMetaData trackMetaData = new SonosMetaData("yyy", "yyy", "yyy", "", "yyy", "yyy", "yyy", "yyy", "yyy",
44                 "yyy");
45         SonosMediaInformation result = SonosMediaInformation.parseTuneInMediaInfo(null, "Radio One", trackMetaData);
46         assertNull(result.getArtist());
47         assertNull(result.getAlbum());
48         assertEquals("Radio One", result.getTitle());
49         assertEquals("Radio One", result.getCombinedInfo());
50         assertEquals(true, result.needsUpdate());
51     }
52
53     @Test
54     public void parseTuneInMediaInfoWithoutTitle() {
55         SonosMetaData trackMetaData = new SonosMetaData("yyy", "yyy", "yyy", "Mroning Live", "yyy", "yyy", "yyy", "yyy",
56                 "yyy", "yyy");
57         SonosMediaInformation result = SonosMediaInformation.parseTuneInMediaInfo(null, "", trackMetaData);
58         assertNull(result.getArtist());
59         assertNull(result.getAlbum());
60         assertNull(result.getTitle());
61         assertNull(result.getCombinedInfo());
62         assertEquals(false, result.needsUpdate());
63     }
64
65     @Test
66     public void parseTuneInMediaInfoWithNullParams() {
67         SonosMediaInformation result = SonosMediaInformation.parseTuneInMediaInfo(null, null, null);
68         assertNull(result.getArtist());
69         assertNull(result.getAlbum());
70         assertNull(result.getTitle());
71         assertNull(result.getCombinedInfo());
72         assertEquals(false, result.needsUpdate());
73     }
74
75     @Test
76     public void parseRadioAppMediaInfoWithSongTitle() {
77         SonosMetaData trackMetaData = new SonosMetaData("yyy", "yyy", "yyy",
78                 "TYPE=SNG|TITLE Green Day - Time Of Your Life (Good Riddance)|ARTIST |ALBUM ", "yyy", "yyy", "yyy",
79                 "yyy", "yyy", "yyy");
80         SonosMediaInformation result = SonosMediaInformation.parseRadioAppMediaInfo("Radio Two", trackMetaData);
81         assertEquals("Green Day", result.getArtist());
82         assertEquals("", result.getAlbum());
83         assertEquals("Time Of Your Life (Good Riddance)", result.getTitle());
84         assertEquals("Radio Two - Green Day - Time Of Your Life (Good Riddance)", result.getCombinedInfo());
85         assertEquals(true, result.needsUpdate());
86     }
87
88     @Test
89     public void parseRadioAppMediaInfoWithSongTitleArtistAlbum() {
90         SonosMetaData trackMetaData = new SonosMetaData("yyy", "yyy", "yyy",
91                 "TYPE=SNG|TITLE Time Of Your Life (Good Riddance)|ARTIST Green Day|ALBUM Nimrod", "yyy", "yyy", "yyy",
92                 "yyy", "yyy", "yyy");
93         SonosMediaInformation result = SonosMediaInformation.parseRadioAppMediaInfo("Radio Two", trackMetaData);
94         assertEquals("Green Day", result.getArtist());
95         assertEquals("Nimrod", result.getAlbum());
96         assertEquals("Time Of Your Life (Good Riddance)", result.getTitle());
97         assertEquals("Radio Two - Green Day - Nimrod - Time Of Your Life (Good Riddance)", result.getCombinedInfo());
98         assertEquals(true, result.needsUpdate());
99     }
100
101     @Test
102     public void parseRadioAppMediaInfoWithdvertisement() {
103         SonosMetaData trackMetaData = new SonosMetaData("yyy", "yyy", "yyy",
104                 "TYPE=SNG|TITLE Advertisement_Stop|ARTIST |ALBUM ", "yyy", "yyy", "yyy", "yyy", "yyy", "yyy");
105         SonosMediaInformation result = SonosMediaInformation.parseRadioAppMediaInfo("Radio Two", trackMetaData);
106         assertEquals("", result.getArtist());
107         assertEquals("", result.getAlbum());
108         assertEquals("Radio Two", result.getTitle());
109         assertEquals("Radio Two", result.getCombinedInfo());
110         assertEquals(true, result.needsUpdate());
111     }
112
113     @Test
114     public void parseRadioAppMediaInfoWithoutStreamContent() {
115         SonosMetaData trackMetaData = new SonosMetaData("yyy", "yyy", "yyy", "", "yyy", "yyy", "yyy", "yyy", "yyy",
116                 "yyy");
117         SonosMediaInformation result = SonosMediaInformation.parseRadioAppMediaInfo("Radio Two", trackMetaData);
118         assertNull(result.getArtist());
119         assertNull(result.getAlbum());
120         assertEquals("Radio Two", result.getTitle());
121         assertEquals("Radio Two", result.getCombinedInfo());
122         assertEquals(true, result.needsUpdate());
123     }
124
125     @Test
126     public void parseRadioAppMediaInfoWithoutTitle() {
127         SonosMetaData trackMetaData = new SonosMetaData("yyy", "yyy", "yyy",
128                 "TYPE=SNG|TITLE Green Day - Time Of Your Life (Good Riddance)|ARTIST |ALBUM ", "yyy", "yyy", "yyy",
129                 "yyy", "yyy", "yyy");
130         SonosMediaInformation result = SonosMediaInformation.parseRadioAppMediaInfo("", trackMetaData);
131         assertNull(result.getArtist());
132         assertNull(result.getAlbum());
133         assertNull(result.getTitle());
134         assertNull(result.getCombinedInfo());
135         assertEquals(false, result.needsUpdate());
136     }
137
138     @Test
139     public void parseRadioAppMediaInfoWithNullParams() {
140         SonosMediaInformation result = SonosMediaInformation.parseRadioAppMediaInfo(null, null);
141         assertNull(result.getArtist());
142         assertNull(result.getAlbum());
143         assertNull(result.getTitle());
144         assertNull(result.getCombinedInfo());
145         assertEquals(false, result.needsUpdate());
146     }
147
148     @Test
149     public void parseTrack() {
150         SonosMetaData trackMetaData = new SonosMetaData("xxx", "xxx", "xxx", "xxx", "xxx",
151                 "Time Of Your Life (Good Riddance)", "xxx", "xxx", "Nimrod", "Green Day");
152         SonosMediaInformation result = SonosMediaInformation.parseTrack(trackMetaData);
153         assertEquals("Green Day", result.getArtist());
154         assertEquals("Nimrod", result.getAlbum());
155         assertEquals("Time Of Your Life (Good Riddance)", result.getTitle());
156         assertEquals("Green Day - Nimrod - Time Of Your Life (Good Riddance)", result.getCombinedInfo());
157         assertEquals(true, result.needsUpdate());
158     }
159
160     @Test
161     public void parseTrackWithoutArtist() {
162         SonosMetaData trackMetaData = new SonosMetaData("xxx", "xxx", "xxx", "xxx", "xxx",
163                 "Time Of Your Life (Good Riddance)", "xxx", "", "Nimrod", "");
164         SonosMediaInformation result = SonosMediaInformation.parseTrack(trackMetaData);
165         assertEquals("", result.getArtist());
166         assertEquals("Nimrod", result.getAlbum());
167         assertEquals("Time Of Your Life (Good Riddance)", result.getTitle());
168         assertEquals("Nimrod - Time Of Your Life (Good Riddance)", result.getCombinedInfo());
169         assertEquals(true, result.needsUpdate());
170     }
171
172     @Test
173     public void parseTrackWithoutAlbum() {
174         SonosMetaData trackMetaData = new SonosMetaData("xxx", "xxx", "xxx", "xxx", "xxx",
175                 "Time Of Your Life (Good Riddance)", "xxx", "Green Day", "", "");
176         SonosMediaInformation result = SonosMediaInformation.parseTrack(trackMetaData);
177         assertEquals("Green Day", result.getArtist());
178         assertEquals("", result.getAlbum());
179         assertEquals("Time Of Your Life (Good Riddance)", result.getTitle());
180         assertEquals("Green Day - Time Of Your Life (Good Riddance)", result.getCombinedInfo());
181         assertEquals(true, result.needsUpdate());
182     }
183
184     @Test
185     public void parseTrackWithoutTitle() {
186         SonosMetaData trackMetaData = new SonosMetaData("xxx", "xxx", "xxx", "xxx", "xxx", "", "xxx", "xxx", "Nimrod",
187                 "Green Day");
188         SonosMediaInformation result = SonosMediaInformation.parseTrack(trackMetaData);
189         assertEquals("Green Day", result.getArtist());
190         assertEquals("Nimrod", result.getAlbum());
191         assertEquals("", result.getTitle());
192         assertEquals("Green Day - Nimrod", result.getCombinedInfo());
193         assertEquals(true, result.needsUpdate());
194     }
195
196     @Test
197     public void parseTrackWithOnlyTitle() {
198         SonosMetaData trackMetaData = new SonosMetaData("", "", "", "", "", "Time Of Your Life (Good Riddance)", "", "",
199                 "", "");
200         SonosMediaInformation result = SonosMediaInformation.parseTrack(trackMetaData);
201         assertEquals("", result.getArtist());
202         assertEquals("", result.getAlbum());
203         assertEquals("Time Of Your Life (Good Riddance)", result.getTitle());
204         assertEquals("Time Of Your Life (Good Riddance)", result.getCombinedInfo());
205         assertEquals(true, result.needsUpdate());
206     }
207
208     @Test
209     public void parseTrackWithEmptyMetaData() {
210         SonosMetaData trackMetaData = new SonosMetaData("", "", "", "", "", "", "", "", "", "");
211         SonosMediaInformation result = SonosMediaInformation.parseTrack(trackMetaData);
212         assertEquals("", result.getArtist());
213         assertEquals("", result.getAlbum());
214         assertEquals("", result.getTitle());
215         assertEquals("", result.getCombinedInfo());
216         assertEquals(true, result.needsUpdate());
217     }
218
219     @Test
220     public void parseTrackWithNullParam() {
221         SonosMediaInformation result = SonosMediaInformation.parseTrack(null);
222         assertNull(result.getArtist());
223         assertNull(result.getAlbum());
224         assertNull(result.getTitle());
225         assertNull(result.getCombinedInfo());
226         assertEquals(false, result.needsUpdate());
227     }
228
229     @Test
230     public void parseTrackTitle() {
231         SonosMetaData trackMetaData = new SonosMetaData("xxx", "xxx", "xxx", "xxx", "xxx",
232                 "Time Of Your Life (Good Riddance)", "xxx", "xxx", "Nimrod", "Green Day");
233         SonosMediaInformation result = SonosMediaInformation.parseTrackTitle(trackMetaData);
234         assertNull(result.getArtist());
235         assertNull(result.getAlbum());
236         assertEquals("Time Of Your Life (Good Riddance)", result.getTitle());
237         assertEquals("Time Of Your Life (Good Riddance)", result.getCombinedInfo());
238         assertEquals(true, result.needsUpdate());
239     }
240
241     @Test
242     public void parseTrackTitleWithNullParam() {
243         SonosMediaInformation result = SonosMediaInformation.parseTrackTitle(null);
244         assertNull(result.getArtist());
245         assertNull(result.getAlbum());
246         assertNull(result.getTitle());
247         assertNull(result.getCombinedInfo());
248         assertEquals(false, result.needsUpdate());
249     }
250 }