2 * Copyright (c) 2010-2022 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.sonos.internal;
15 import static org.junit.jupiter.api.Assertions.*;
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.junit.jupiter.api.Test;
19 import org.openhab.binding.sonos.internal.handler.SonosMediaInformation;
22 * Test for class SonosMediaInformation
24 * @author Laurent Garnier - Initial contribution
27 public class SonosMediaInformationTest {
30 public void parseTuneInMediaInfoWithStreamContent() {
31 SonosMetaData trackMetaData = new SonosMetaData("yyy", "yyy", "yyy", "Mroning Live", "yyy", "yyy", "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());
42 public void parseTuneInMediaInfoWithoutStreamContent() {
43 SonosMetaData trackMetaData = new SonosMetaData("yyy", "yyy", "yyy", "", "yyy", "yyy", "yyy", "yyy", "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());
54 public void parseTuneInMediaInfoWithoutTitle() {
55 SonosMetaData trackMetaData = new SonosMetaData("yyy", "yyy", "yyy", "Mroning Live", "yyy", "yyy", "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());
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());
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",
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());
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",
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());
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());
114 public void parseRadioAppMediaInfoWithoutStreamContent() {
115 SonosMetaData trackMetaData = new SonosMetaData("yyy", "yyy", "yyy", "", "yyy", "yyy", "yyy", "yyy", "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());
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());
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());
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());
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());
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());
185 public void parseTrackWithoutTitle() {
186 SonosMetaData trackMetaData = new SonosMetaData("xxx", "xxx", "xxx", "xxx", "xxx", "", "xxx", "xxx", "Nimrod",
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());
197 public void parseTrackWithOnlyTitle() {
198 SonosMetaData trackMetaData = new SonosMetaData("", "", "", "", "", "Time Of Your Life (Good Riddance)", "", "",
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());
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());
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());
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());
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());