commit b7382eee137f67f959da59912d5d9b9e5587e834
parent dc0861ada7e0bdd8754b86bcb0dc533ca1df02d2
Author: Christian Grothoff <christian@grothoff.org>
Date: Tue, 14 Aug 2012 22:32:03 +0000
nsfe testcase and nsfe fixes
Diffstat:
4 files changed, 143 insertions(+), 3 deletions(-)
diff --git 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
@@ -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
@@ -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
Binary files differ.