From 55949e3e51890de36574d8b5c27889b44108a839 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= Date: Sat, 29 Jul 2017 20:56:55 +0200 Subject: [PATCH] lavc/tests: add htmlsubtitles --- libavcodec/Makefile | 1 + libavcodec/tests/.gitignore | 1 + libavcodec/tests/htmlsubtitles.c | 49 +++++++++++++++++++++++++ tests/fate/libavcodec.mak | 4 ++ tests/ref/fate/libavcodec-htmlsubtitles | 7 ++++ 5 files changed, 62 insertions(+) create mode 100644 libavcodec/tests/htmlsubtitles.c create mode 100644 tests/ref/fate/libavcodec-htmlsubtitles diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 74de41ab0f..b0c39ac040 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -1041,6 +1041,7 @@ SKIPHEADERS-$(CONFIG_VIDEOTOOLBOX) += videotoolbox.h vda_vt_internal.h TESTPROGS = avpacket \ celp_math \ + htmlsubtitles \ imgconvert \ jpeg2000dwt \ mathops \ diff --git a/libavcodec/tests/.gitignore b/libavcodec/tests/.gitignore index f22ac821cb..31947bf9bb 100644 --- a/libavcodec/tests/.gitignore +++ b/libavcodec/tests/.gitignore @@ -6,6 +6,7 @@ /fft-fixed /fft-fixed32 /golomb +/htmlsubtitles /iirfilter /imgconvert /jpeg2000dwt diff --git a/libavcodec/tests/htmlsubtitles.c b/libavcodec/tests/htmlsubtitles.c new file mode 100644 index 0000000000..d0b55a45d3 --- /dev/null +++ b/libavcodec/tests/htmlsubtitles.c @@ -0,0 +1,49 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg 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. + * + * FFmpeg 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 FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "libavutil/common.h" +#include "libavcodec/htmlsubtitles.c" + +static const char * const test_cases[] = { + /* latin guillemets and other < > garbage */ + "<>", // guillemets + "<<hello>>", // guillemets + tags + "< hello < 2000 > world >", // unlikely tags due to spaces + "

TITLE

", // likely unhandled tags + "< font color=red >red", // invalid format of valid tag + "Foo ", // not a tag (not alnum) + + " foo bar bla ", // broken nesting +}; + +int main(void) +{ + int i; + AVBPrint dst; + + av_bprint_init(&dst, 0, AV_BPRINT_SIZE_UNLIMITED); + for (i = 0; i < FF_ARRAY_ELEMS(test_cases); i++) { + int ret = ff_htmlmarkup_to_ass(NULL, &dst, test_cases[i]); + if (ret < 0) + return ret; + printf("%s --> %s\n", test_cases[i], dst.str); + av_bprint_clear(&dst); + } + av_bprint_finalize(&dst, NULL); + return 0; +} diff --git a/tests/fate/libavcodec.mak b/tests/fate/libavcodec.mak index b1e3446d68..fc8075c532 100644 --- a/tests/fate/libavcodec.mak +++ b/tests/fate/libavcodec.mak @@ -82,5 +82,9 @@ fate-libavcodec-huffman: CMD = run libavcodec/tests/mjpegenc_huffman fate-libavcodec-huffman: CMP = null fate-libavcodec-huffman: REF = /dev/null +FATE_LIBAVCODEC-yes += fate-libavcodec-htmlsubtitles +fate-libavcodec-htmlsubtitles: libavcodec/tests/htmlsubtitles$(EXESUF) +fate-libavcodec-htmlsubtitles: CMD = run libavcodec/tests/htmlsubtitles + FATE-$(CONFIG_AVCODEC) += $(FATE_LIBAVCODEC-yes) fate-libavcodec: $(FATE_LIBAVCODEC-yes) diff --git a/tests/ref/fate/libavcodec-htmlsubtitles b/tests/ref/fate/libavcodec-htmlsubtitles new file mode 100644 index 0000000000..702f0b7ea3 --- /dev/null +++ b/tests/ref/fate/libavcodec-htmlsubtitles @@ -0,0 +1,7 @@ +<> --> <> +<<hello>> --> <<{\b1}hello{\b0}>> +< hello < 2000 > world > --> < hello < 2000 > world > +

TITLE

--> TITLE +< font color=red >red --> {\c&HFF&}red{\c} +Foo --> Foo + foo bar bla --> {\b1} foo {\i1} bar {\b0} bla {\i0}