tests: adaptive: run tests against static lib

(cherry picked from commit b4c035ca97)
This commit is contained in:
Francois Cartegnie 2020-12-17 11:17:55 +01:00
parent 3c4d208ea5
commit 3568a389a4
5 changed files with 254 additions and 0 deletions

View File

@ -492,5 +492,13 @@ libadaptive_plugin_la_CXXFLAGS = $(libvlc_adaptive_la_CXXFLAGS)
libadaptive_plugin_la_LIBADD = libvlc_adaptive.la
demux_LTLIBRARIES += libadaptive_plugin.la
adaptive_test_SOURCES = \
demux/adaptive/test/playlist/TemplatedUri.cpp \
demux/adaptive/test/test.cpp \
demux/adaptive/test/test.hpp
adaptive_test_LDADD = libvlc_adaptive.la
check_PROGRAMS += adaptive_test
TESTS += adaptive_test
libnoseek_plugin_la_SOURCES = demux/filter/noseek.c
demux_LTLIBRARIES += libnoseek_plugin.la

View File

@ -0,0 +1,169 @@
/*****************************************************************************
* dashuri.cpp
*****************************************************************************
* Copyright (C) 2018 VideoLabs, VideoLAN and VLC Authors
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "../test.hpp"
#include "../../../dash/mpd/TemplatedUri.hpp"
#include <cstring>
#include <vlc_common.h>
using namespace dash::mpd;
static const struct
{
const char *src;
const char *dst;
const char *str;
const unsigned val;
} dataset[] = {
{
"",
"",
nullptr,
0,
},
{
"$",
"$",
nullptr,
0,
},
{
"/Num$$ber.m4v",
"/Num$ber.m4v",
nullptr,
0,
},
{
"/$Number$.m4v",
"/123.m4v",
nullptr,
123,
},
{
"/$$$Number$.m4v",
"/$456789123.m4v",
nullptr,
456789123,
},
{
"$Number%d$",
"123",
nullptr,
123,
},
{
"/$Number%5d$.m4v",
"/00001.m4v",
nullptr,
1,
},
{
"/$Number%2d$.m4v",
"/123456.m4v",
nullptr,
123456, /* Must not truncate */
},
{
"/$RepresentationID$.m4v",
"/foobar.m4v",
"foobar",
0,
},
{
"/$RepresentationID$.m4v",
"/$Time$.m4v",
"$Time$",
0,
},
{
"$RepresentationID$/$Number$$Time$$$",
"id/123123$",
"id",
123, /* Must not truncate */
},
};
int TemplatedUri_test()
{
try {
for(size_t i=0; i<ARRAY_SIZE(dataset); i++)
{
std::string str = std::string(dataset[i].src);
std::cerr << str << std::endl;
std::string::size_type pos = 0;
while(pos < str.length())
{
TemplatedUri::Token token;
if(str[pos] == '$' && TemplatedUri::IsDASHToken(str, pos, token))
{
std::cerr << " * token " << str.substr(pos, token.fulllength)
<< " " << token.width << std::endl;
TemplatedUri::TokenReplacement replparam;
switch(token.type)
{
case TemplatedUri::Token::TOKEN_TIME:
case TemplatedUri::Token::TOKEN_BANDWIDTH:
case TemplatedUri::Token::TOKEN_NUMBER:
replparam.value = dataset[i].val;
break;
case TemplatedUri::Token::TOKEN_REPRESENTATION:
{
Expect(dataset[i].str);
replparam.str = std::string(dataset[i].str);
break;
}
case TemplatedUri::Token::TOKEN_ESCAPE:
break;
default:
pos += token.fulllength;
continue;
}
std::string::size_type newlen =
TemplatedUri::ReplaceDASHToken(str, pos, token, replparam);
Expect(newlen != std::string::npos);
pos += newlen;
}
else pos++;
}
std::cerr << " -> " << str << std::endl;
Expect(!std::strcmp(dataset[i].dst, str.c_str()));
}
return 0;
}
catch (...)
{
return 1;
}
}

View File

@ -0,0 +1,35 @@
/*****************************************************************************
* test.cpp
*****************************************************************************
* Copyright (C) 2018-2020 VideoLabs, VideoLAN and VLC Authors
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_demux.h>
#include "test.hpp"
extern const char vlc_module_name[] = "foobar";
int main()
{
return TemplatedUri_test();
}

View File

@ -0,0 +1,41 @@
/*****************************************************************************
* test.hpp
*****************************************************************************
* Copyright (C) 2020 VideoLabs, VideoLAN and VLC Authors
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifndef ADAPTIVE_TEST_H
#define ADAPTIVE_TEST_H
#include <exception>
#include <iostream>
#define DoExpect(testcond, testcontext, testline) \
try {\
if (!(testcond)) \
throw 1;\
}\
catch (...)\
{\
std::cerr << testcontext << ": failed " \
" line " << testline << std::endl;\
std::rethrow_exception(std::current_exception());\
}
#define Expect(testcond) DoExpect((testcond), __FUNCTION__, __LINE__)
int TemplatedUri_test();
#endif

View File

@ -32,6 +32,7 @@ check_PROGRAMS = \
test_src_misc_keystore \
test_modules_packetizer_hxxx \
test_modules_keystore
if ENABLE_SOUT
check_PROGRAMS += test_modules_tls
endif