From b7382eee137f67f959da59912d5d9b9e5587e834 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 14 Aug 2012 22:32:03 +0000 Subject: nsfe testcase and nsfe fixes --- src/plugins/Makefile.am | 9 ++- src/plugins/nsfe_extractor.c | 4 +- src/plugins/test_nsfe.c | 133 ++++++++++++++++++++++++++++++++ src/plugins/testdata/nsfe_classics.nsfe | Bin 0 -> 8406 bytes 4 files changed, 143 insertions(+), 3 deletions(-) create mode 100644 src/plugins/test_nsfe.c create mode 100644 src/plugins/testdata/nsfe_classics.nsfe diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am index 4669a11..281035c 100644 --- a/src/plugins/Makefile.am +++ b/src/plugins/Makefile.am @@ -33,7 +33,8 @@ EXTRA_DIST = template_extractor.c \ testdata/png_image.png \ testdata/odf_cg.odt \ testdata/deb_bzip2.deb \ - testdata/nsf_arkanoid.nsf + testdata/nsf_arkanoid.nsf \ + testdata/nsfe_classics.nsfe if HAVE_VORBISFILE PLUGIN_OGG=libextractor_ogg.la @@ -119,6 +120,7 @@ check_PROGRAMS = \ test_odf \ test_zip \ test_nsf \ + test_nsfe \ $(TEST_ZLIB) \ $(TEST_OGG) \ $(TEST_MIME) \ @@ -177,6 +179,11 @@ libextractor_nsfe_la_SOURCES = \ libextractor_nsfe_la_LDFLAGS = \ $(PLUGINFLAGS) +test_nsfe_SOURCES = \ + test_nsfe.c +test_nsfe_LDADD = \ + $(top_builddir)/src/plugins/libtest.la + libextractor_odf_la_SOURCES = \ odf_extractor.c diff --git a/src/plugins/nsfe_extractor.c b/src/plugins/nsfe_extractor.c index 16c4980..aa6fb0a 100644 --- a/src/plugins/nsfe_extractor.c +++ b/src/plugins/nsfe_extractor.c @@ -371,10 +371,10 @@ EXTRACTOR_nsfe_extract_method (struct EXTRACTOR_ExtractContext *ec) if (8 > ec->read (ec->cls, &data, - sizeof (struct header))) + 8)) break; chunksize = nsfeuint (data); - off += 4 + chunksize; + off += 8 + chunksize; if (0 == memcmp (data + 4, "INFO", 4)) ret = info_extract (ec, chunksize); else if (0 == memcmp (data + 4, "auth", 4)) diff --git a/src/plugins/test_nsfe.c b/src/plugins/test_nsfe.c new file mode 100644 index 0000000..7e4e5cd --- /dev/null +++ b/src/plugins/test_nsfe.c @@ -0,0 +1,133 @@ +/* + This file is part of libextractor. + (C) 2012 Vidyut Samanta and Christian Grothoff + + libextractor is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + libextractor 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 + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with libextractor; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +/** + * @file plugins/test_nsfe.c + * @brief testcase for nsfe plugin + * @author Christian Grothoff + */ +#include "platform.h" +#include "test_lib.h" + + + +/** + * Main function for the NSFE testcase. + * + * @param argc number of arguments (ignored) + * @param argv arguments (ignored) + * @return 0 on success + */ +int +main (int argc, char *argv[]) +{ + struct SolutionData nsfe_classics_sol[] = + { + { + EXTRACTOR_METATYPE_MIMETYPE, + EXTRACTOR_METAFORMAT_UTF8, + "text/plain", + "audio/x-nsfe", + strlen ("audio/x-nsfe") + 1, + 0 + }, + { + EXTRACTOR_METATYPE_SONG_COUNT, + EXTRACTOR_METAFORMAT_UTF8, + "text/plain", + "2", + strlen ("2") + 1, + 0 + }, + { + EXTRACTOR_METATYPE_STARTING_SONG, + EXTRACTOR_METAFORMAT_UTF8, + "text/plain", + "0", + strlen ("0") + 1, + 0 + }, + { + EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM, + EXTRACTOR_METAFORMAT_UTF8, + "text/plain", + "PAL", + strlen ("PAL") + 1, + 0 + }, + { + EXTRACTOR_METATYPE_ALBUM, + EXTRACTOR_METAFORMAT_UTF8, + "text/plain", + "Adventures of Dr. Franken,The", + strlen ("Adventures of Dr. Franken,The") + 1, + 0 + }, + { + EXTRACTOR_METATYPE_ARTIST, + EXTRACTOR_METAFORMAT_UTF8, + "text/plain", + "Mark Cooksey", + strlen ("Mark Cooksey") + 1, + 0 + }, + { + EXTRACTOR_METATYPE_COPYRIGHT, + EXTRACTOR_METAFORMAT_UTF8, + "text/plain", + "1993 Motivetime LTD.", + strlen ("1993 Motivetime LTD.") + 1, + 0 + }, + { + EXTRACTOR_METATYPE_RIPPER, + EXTRACTOR_METAFORMAT_UTF8, + "text/plain", + "Gil_Galad", + strlen ("Gil_Galad") + 1, + 0 + }, + { + EXTRACTOR_METATYPE_TITLE, + EXTRACTOR_METAFORMAT_UTF8, + "text/plain", + "Bach: Prelude & Fugue In C Minor", + strlen ("Bach: Prelude & Fugue In C Minor") + 1, + 0 + }, + { + EXTRACTOR_METATYPE_TITLE, + EXTRACTOR_METAFORMAT_UTF8, + "text/plain", + "Beethoven: Moonlight Sonata", + strlen ("Beethoven: Moonlight Sonata") + 1, + 0 + }, + { 0, 0, NULL, NULL, 0, -1 } + }; + struct ProblemSet ps[] = + { + { "testdata/nsfe_classics.nsfe", + nsfe_classics_sol }, + { NULL, NULL } + }; + return ET_main ("nsfe", ps); +} + +/* end of test_nsfe.c */ diff --git a/src/plugins/testdata/nsfe_classics.nsfe b/src/plugins/testdata/nsfe_classics.nsfe new file mode 100644 index 0000000..898e63f Binary files /dev/null and b/src/plugins/testdata/nsfe_classics.nsfe differ -- cgit v1.2.3