From 8729b343d0fcd4a2fc493714eb477049e041b535 Mon Sep 17 00:00:00 2001
From: Ian Campbell <ijc@hellion.org.uk>
Date: Sun, 6 Oct 2019 16:31:26 +0800
Subject: [PATCH] Fix TestIPTVRecorder after change to IPTVChannelInfo
In a60e7429a09a ("IPTVChannelInfo: explictly set IPTVTuningData protocol to
invalid") I removed `IPTVChannelInfo::IsValid()` thinking it was unused but
missed the uses in these test cases. Reintroduce the method, but make it
`protected` and a friend of the `TestIPTVRecorder` class.
The above change also changed the behaviour of `IPTVChannelInfo`'s constructors
such that the protocol is not always probed, and therefore `IsValid()` is not
necessarily true. This is the case when constructed via
`IPTVChannelFetcher::ParsePlayList`. Update `TestIPTVRecorder::ParseChanInfo` to
reflect this by now asserting that the tuning data is not valid and that the
protocol is `inValid` as expected.
---
.../channelscan/iptvchannelfetcher.h | 7 ++++
mythtv/libs/libmythtv/iptvtuningdata.h | 5 +++
.../test_iptvrecorder/test_iptvrecorder.h | 40 +++++++++++--------
3 files changed, 36 insertions(+), 16 deletions(-)
diff --git a/mythtv/libs/libmythtv/channelscan/iptvchannelfetcher.h b/mythtv/libs/libmythtv/channelscan/iptvchannelfetcher.h
index 3dd1a7894b..2909fe7158 100644
|
a
|
b
|
class IPTVChannelInfo
|
| 44 | 44 | { |
| 45 | 45 | } |
| 46 | 46 | |
| | 47 | protected: |
| | 48 | friend class TestIPTVRecorder; |
| | 49 | bool IsValid(void) const |
| | 50 | { |
| | 51 | return !m_name.isEmpty() && m_tuning.IsValid(); |
| | 52 | } |
| | 53 | |
| 47 | 54 | public: |
| 48 | 55 | QString m_name; |
| 49 | 56 | QString m_xmltvid; |
diff --git a/mythtv/libs/libmythtv/iptvtuningdata.h b/mythtv/libs/libmythtv/iptvtuningdata.h
index ae5cf3e47d..1cbe15f5e6 100644
|
a
|
b
|
class MTV_PUBLIC IPTVTuningData
|
| 218 | 218 | m_protocol = IPTVTuningData::inValid; |
| 219 | 219 | } |
| 220 | 220 | |
| | 221 | IPTVProtocol GetProtocol(void) const |
| | 222 | { |
| | 223 | return m_protocol; |
| | 224 | } |
| | 225 | |
| 221 | 226 | protected: |
| 222 | 227 | bool IsHLSPlaylist(void) const |
| 223 | 228 | { |
diff --git a/mythtv/libs/libmythtv/test/test_iptvrecorder/test_iptvrecorder.h b/mythtv/libs/libmythtv/test/test_iptvrecorder/test_iptvrecorder.h
index b83ca2e458..7ca968203d 100644
|
a
|
b
|
class TestIPTVRecorder: public QObject
|
| 163 | 163 | /* test plain old MPEG-2 TS over multicast playlist */ |
| 164 | 164 | chanmap = IPTVChannelFetcher::ParsePlaylist (rawdataUDP, nullptr); |
| 165 | 165 | QCOMPARE (chanmap["001"].m_name, QString ("La 1")); |
| 166 | | QVERIFY (chanmap["001"].IsValid ()); |
| 167 | | QVERIFY (chanmap["001"].m_tuning.IsValid ()); |
| | 166 | QVERIFY (!chanmap["001"].IsValid ()); |
| | 167 | QVERIFY (!chanmap["001"].m_tuning.IsValid ()); |
| | 168 | QCOMPARE (chanmap["001"].m_tuning.GetProtocol(), IPTVTuningData::inValid); |
| 168 | 169 | QCOMPARE (chanmap["001"].m_tuning.GetDataURL().toString(), QString ("udp://239.0.0.76:8208")); |
| 169 | 170 | |
| 170 | 171 | /* test playlist for Neutrino STBs */ |
| 171 | 172 | chanmap = IPTVChannelFetcher::ParsePlaylist (rawdataHTTP, nullptr); |
| 172 | | QVERIFY (chanmap["1"].IsValid ()); |
| 173 | | QVERIFY (chanmap["1"].m_tuning.IsValid ()); |
| | 173 | QVERIFY (!chanmap["1"].IsValid ()); |
| | 174 | QVERIFY (!chanmap["1"].m_tuning.IsValid ()); |
| 174 | 175 | QCOMPARE (chanmap["1"].m_name, QString ("SVT1 HD Mitt")); |
| 175 | 176 | QCOMPARE (chanmap["1"].m_xmltvid, QString ("svt1hd.svt.se")); |
| 176 | 177 | QCOMPARE (chanmap["1"].m_programNumber, (uint) 1330); |
| | 178 | QCOMPARE (chanmap["1"].m_tuning.GetProtocol(), IPTVTuningData::inValid); |
| 177 | 179 | QCOMPARE (chanmap["1"].m_tuning.GetDataURL().toString(), QString ("http://192.168.0.234:8001/1:0:19:532:6:22F1:EEEE0000:0:0:0:")); |
| 178 | 180 | |
| 179 | 181 | /* test playlist for FreeboxTV, last channel in playlist "wins" */ |
| 180 | 182 | chanmap = IPTVChannelFetcher::ParsePlaylist (rawdataRTSP, nullptr); |
| 181 | | QVERIFY (chanmap["2"].IsValid ()); |
| 182 | | QVERIFY (chanmap["2"].m_tuning.IsValid ()); |
| | 183 | QVERIFY (!chanmap["2"].IsValid ()); |
| | 184 | QVERIFY (!chanmap["2"].m_tuning.IsValid ()); |
| 183 | 185 | QCOMPARE (chanmap["2"].m_name, QString ("France 2 (auto)")); |
| | 186 | QCOMPARE (chanmap["2"].m_tuning.GetProtocol(), IPTVTuningData::inValid); |
| 184 | 187 | QCOMPARE (chanmap["2"].m_tuning.GetDataURL().toString(), QString ("rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201")); |
| 185 | 188 | |
| 186 | 189 | /* test playlist for SAT>IP with "#. name" instead of "# - name" */ |
| 187 | 190 | chanmap = IPTVChannelFetcher::ParsePlaylist (rawdataSATIP, nullptr); |
| 188 | | QVERIFY (chanmap["10"].IsValid ()); |
| 189 | | QVERIFY (chanmap["10"].m_tuning.IsValid ()); |
| | 191 | QVERIFY (!chanmap["10"].IsValid ()); |
| | 192 | QVERIFY (!chanmap["10"].m_tuning.IsValid ()); |
| | 193 | QCOMPARE (chanmap["10"].m_tuning.GetProtocol(), IPTVTuningData::inValid); |
| 190 | 194 | QCOMPARE (chanmap["10"].m_name, QString ("ZDFinfokanal")); |
| 191 | 195 | |
| 192 | 196 | /* test playlist from A1 TV with empty lines and tvg-num */ |
| 193 | 197 | chanmap = IPTVChannelFetcher::ParsePlaylist (rawdataA1TV, nullptr); |
| 194 | | QVERIFY (chanmap["1"].IsValid ()); |
| 195 | | QVERIFY (chanmap["1"].m_tuning.IsValid ()); |
| | 198 | QVERIFY (!chanmap["1"].IsValid ()); |
| | 199 | QVERIFY (!chanmap["1"].m_tuning.IsValid ()); |
| | 200 | QCOMPARE (chanmap["1"].m_tuning.GetProtocol(), IPTVTuningData::inValid); |
| 196 | 201 | QCOMPARE (chanmap["1"].m_name, QString ("ORFeins")); |
| 197 | 202 | |
| 198 | 203 | /* test playlist from Movistar TV with channel number in braces */ |
| 199 | 204 | chanmap = IPTVChannelFetcher::ParsePlaylist (rawdataMovistarTV, nullptr); |
| 200 | | QVERIFY (chanmap["001"].IsValid ()); |
| 201 | | QVERIFY (chanmap["001"].m_tuning.IsValid ()); |
| | 205 | QVERIFY (!chanmap["001"].IsValid ()); |
| | 206 | QVERIFY (!chanmap["001"].m_tuning.IsValid ()); |
| | 207 | QCOMPARE (chanmap["001"].m_tuning.GetProtocol(), IPTVTuningData::inValid); |
| 202 | 208 | QCOMPARE (chanmap["001"].m_name, QString ("La 1")); |
| 203 | | QVERIFY (chanmap["2275"].IsValid ()); |
| 204 | | QVERIFY (chanmap["2275"].m_tuning.IsValid ()); |
| | 209 | QVERIFY (!chanmap["2275"].IsValid ()); |
| | 210 | QVERIFY (!chanmap["2275"].m_tuning.IsValid ()); |
| | 211 | QCOMPARE (chanmap["2275"].m_tuning.GetProtocol(), IPTVTuningData::inValid); |
| 205 | 212 | QCOMPARE (chanmap["2275"].m_name, QString ("Canal Sur AndalucÃa")); |
| 206 | 213 | |
| 207 | 214 | /* test playlist from iptv.ink with channel number in duration */ |
| 208 | 215 | chanmap = IPTVChannelFetcher::ParsePlaylist (rawdataIPTVInk, nullptr); |
| 209 | | QVERIFY (chanmap["0002"].IsValid ()); |
| 210 | | QVERIFY (chanmap["0002"].m_tuning.IsValid ()); |
| | 216 | QVERIFY (!chanmap["0002"].IsValid ()); |
| | 217 | QVERIFY (!chanmap["0002"].m_tuning.IsValid ()); |
| | 218 | QCOMPARE (chanmap["0002"].m_tuning.GetProtocol(), IPTVTuningData::inValid); |
| 211 | 219 | QCOMPARE (chanmap["0002"].m_name, QString ("[COLOR gold]Das Erste[/COLOR]")); |
| 212 | 220 | } |
| 213 | 221 | |