tracker r2793 - in trunk: . src/tracker-extract tests/tracker-extract tests/tracker-extract/data/mp3



Author: mottela
Date: Wed Jan 14 19:18:02 2009
New Revision: 2793
URL: http://svn.gnome.org/viewvc/tracker?rev=2793&view=rev

Log:
Added test cases for mp3 extraction and fixed minor mp3 extraction issues

Added:
   trunk/tests/tracker-extract/data/mp3/create_mp3_perfdata   (contents, props changed)
   trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_1.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_2.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_3.data
   trunk/tests/tracker-extract/data/mp3/id3v23_tags_1.data
   trunk/tests/tracker-extract/data/mp3/id3v23_tags_2.data
   trunk/tests/tracker-extract/tracker-extract-gstreamer-test.c
   trunk/tests/tracker-extract/tracker-extract-test-utils.c
   trunk/tests/tracker-extract/tracker-extract-test-utils.h
   trunk/tests/tracker-extract/tracker-extract-testsuite-generic.c
   trunk/tests/tracker-extract/tracker-extract-testsuite-generic.h
   trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.c
   trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.h
Modified:
   trunk/ChangeLog
   trunk/src/tracker-extract/tracker-extract-mp3.c
   trunk/tests/tracker-extract/Makefile.am
   trunk/tests/tracker-extract/data/mp3/create_mp3_testdata
   trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_1.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_10.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_11.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_12.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_13.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_14.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_2.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_3.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_4.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_5.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_6.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_7.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_8.data
   trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_9.data
   trunk/tests/tracker-extract/data/mp3/id3v1_basic_1.data
   trunk/tests/tracker-extract/data/mp3/id3v23_basic_1.data
   trunk/tests/tracker-extract/data/mp3/id3v23_basic_2.data
   trunk/tests/tracker-extract/data/mp3/id3v23_basic_3.data
   trunk/tests/tracker-extract/data/mp3/id3v23_comm_1.data
   trunk/tests/tracker-extract/data/mp3/id3v23_comm_2.data
   trunk/tests/tracker-extract/data/mp3/id3v23_comm_3.data
   trunk/tests/tracker-extract/data/mp3/id3v23_trck_1.data
   trunk/tests/tracker-extract/tracker-extract-mp3-test.c

Modified: trunk/src/tracker-extract/tracker-extract-mp3.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract-mp3.c	(original)
+++ trunk/src/tracker-extract/tracker-extract-mp3.c	Wed Jan 14 19:18:02 2009
@@ -389,6 +389,8 @@
 	guint header;
 	gchar mpeg_ver = 0;
 	gchar layer_ver = 0;
+	guint spfp8 = 0;
+	guint padsize = 0;
 	gint idx_num = 0;
 	guint bitrate = 0;
 	guint avg_bps = 0;
@@ -401,14 +403,14 @@
 	size_t pos = 0;
 
 	pos = seek_pos;
-		       
+
 	memcpy (&header, &data[pos], sizeof (header));
 
 	switch (header & mpeg_ver_mask) {
-	    case 0x1000:
+	    case 0x800:
 		    mpeg_ver = MPEG_ERR;
 		    break;
-	    case 0x800:
+	    case 0x1000:
 		    g_hash_table_insert (metadata,
 					 g_strdup ("Audio:Codec"),
 					 g_strdup ("MPEG"));
@@ -416,6 +418,7 @@
 					 g_strdup ("Audio:CodecVersion"),
 					 g_strdup ("2"));
 		    mpeg_ver = MPEG_V2;
+		    spfp8 = 72;
 		    break;
 	    case 0x1800:
 		    g_hash_table_insert (metadata,
@@ -425,6 +428,7 @@
 					 g_strdup ("Audio:CodecVersion"),
 					 g_strdup ("1"));
 		    mpeg_ver = MPEG_V1;
+		    spfp8 = 144;
 		    break;
 	    case 0:
 		    g_hash_table_insert (metadata,
@@ -434,6 +438,7 @@
 					 g_strdup ("Audio:CodecVersion"),
 					 g_strdup ("2.5"));
 		    mpeg_ver = MPEG_V25;
+		    spfp8 = 72;
 		    break;
 	    default:
 		    break;
@@ -442,21 +447,24 @@
 	switch (header&mpeg_layer_mask) {
 	    case 0x400:
 		    layer_ver = LAYER_2;
+		    padsize = 1;
 		    break;
 	    case 0x200:
 		    layer_ver = LAYER_3;
+		    padsize = 1;
 		    break;
 	    case 0x600:
 		    layer_ver = LAYER_1;
+		    padsize = 4;
 		    break;
 	    case 0:
 		    layer_ver = LAYER_ERR;
 	    default:
 		    break;
 	}
-	
+
 	if (!layer_ver || !mpeg_ver) {
-		g_debug ("Unknown mpeg type: %d, %d", mpeg_ver, layer_ver);
+		//g_debug ("Unknown mpeg type: %d, %d", mpeg_ver, layer_ver);
 		/* Unknown mpeg type */
 		return FALSE;
 	}
@@ -496,7 +504,7 @@
 			return FALSE;
 		}
 
-		frame_size = 144 * bitrate / (sample_rate ? sample_rate : 1) + ((header & pad_mask) >> 17);
+		frame_size = spfp8 * bitrate / (sample_rate ? sample_rate : 1) + padsize*((header & pad_mask) >> 17);
 		avg_bps += bitrate / 1000;
 
 		pos += frame_size;
@@ -544,7 +552,7 @@
 			     tracker_escape_metadata_printf ("%d", sample_rate));
 	g_hash_table_insert (metadata,
 			     g_strdup ("Audio:Bitrate"),
-			     tracker_escape_metadata_printf ("%d", avg_bps));
+			     tracker_escape_metadata_printf ("%d", avg_bps*1000));
 
 	return TRUE;
 }
@@ -610,9 +618,9 @@
 		{"TLAN", "File:Language"},
 		{"TIT2", "Audio:Title"},
 		{"TIT3", "Audio:Comment"},
-		{"WCOP", "File:License"},
 		{"TDRL", "Audio:ReleaseDate"},
 		{"TRCK", "Audio:TrackNo"},
+		{"PCNT", "Audio:PlayCount"},
 		{NULL, 0},
 	};
 
@@ -746,6 +754,31 @@
 						g_strfreev (parts);
 					}
 
+					if (strcmp (tmap[i].text, "TCON") == 0) {
+						if (g_pattern_match_simple ("(*)*", word)) {
+							gchar *begin;
+							gchar *end;
+							guint genre;
+							gchar *new_word;
+
+							begin = strchr (word,'(');
+							if (!begin)
+								continue;
+							begin++;
+							end = strchr (begin, ')');
+							if (!end)
+								continue;
+							end[0] = '\0';
+
+							genre = (guint)strtol(begin,&end,10);
+
+							if (begin != end) {
+								g_free (word);
+								word = g_strdup (genre_names[genre]);
+							}
+						}
+					}					
+
 					g_hash_table_insert (metadata,
 							     g_strdup (tmap[i].type),
 							     tracker_escape_metadata (word));
@@ -880,9 +913,9 @@
 		{"TALB", "Audio:Album"},
 		{"TLAN", "File:Language"},
 		{"TIT2", "Audio:Title"},
-		{"WCOP", "File:License"},
 		{"TYER", "Audio:ReleaseDate"},
 		{"TRCK", "Audio:TrackNo"},
+		{"PCNT", "Audio:PlayCount"},
 		{NULL, 0},
 	};
 
@@ -1018,6 +1051,31 @@
 						g_strfreev (parts);
 					}
 
+					if (strcmp (tmap[i].text, "TCON") == 0) {
+						if (g_pattern_match_simple ("(*)*", word)) {
+							gchar *begin;
+							gchar *end;
+							guint genre;
+							gchar *new_word;
+
+							begin = strchr (word,'(');
+							if (!begin)
+								continue;
+							begin++;
+							end = strchr (begin, ')');
+							if (!end)
+								continue;
+							end[0] = '\0';
+
+							genre = (guint)strtol(begin,&end,10);
+
+							if (begin != end) {
+								g_free (word);
+								word = g_strdup (genre_names[genre]);
+							}
+						}
+					}
+
 					g_hash_table_insert (metadata,
 							     g_strdup (tmap[i].type),
 							     tracker_escape_metadata (word));
@@ -1132,7 +1190,6 @@
 		{"WAF", "DC:Location"},
 		{"WAR", "DC:Location"},
 		{"WAS", "DC:Location"},
-		{"WCP", "File:Copyright"},
 		{"WAF", "DC:Location"},
 		{"WCM", "File:License"},
 		{"TYE", "Audio:ReleaseDate"},

Modified: trunk/tests/tracker-extract/Makefile.am
==============================================================================
--- trunk/tests/tracker-extract/Makefile.am	(original)
+++ trunk/tests/tracker-extract/Makefile.am	Wed Jan 14 19:18:02 2009
@@ -2,12 +2,19 @@
 
 noinst_PROGRAMS = $(TEST_PROGS)
 
+TEST_UTILS_SOURCES = tracker-extract-test-utils.c			\
+		     tracker-extract-testsuite-generic.c		\
+		     tracker-extract-testsuite-mp3.c
+
+
+
 TEST_PROGS += 								\
-	test-tracker-extract-mp3
+	test-tracker-extract-mp3					\
+	test-tracker-extract-gstreamer
 
 INCLUDES = 								\
 	-DG_LOG_DOMAIN=\"Tracker\"					\
-	-DTEST_DATA_DIR=\""$(top_builddir)/tests/tracker-extract/data"\"\
+	-DTEST_DATA_DIR=\""$(abs_top_builddir)/tests/tracker-extract/data"\"\
 	-DTRACKER_COMPILATION						\
 	-I$(top_srcdir)/src						\
 	-I$(top_srcdir)/tests/common					\
@@ -18,7 +25,8 @@
 	$(GLIB2_CFLAGS)
 
 test_tracker_extract_mp3_SOURCES = 					\
-	tracker-extract-mp3-test.c
+	tracker-extract-mp3-test.c					\
+	$(TEST_UTILS_SOURCES)
 
 test_tracker_extract_mp3_LDADD =					\
 	$(top_builddir)/src/tracker-extract/libextract-mp3.la   	\
@@ -26,3 +34,15 @@
 	$(GMODULE_LIBS)							\
 	$(GTHREAD_LIBS)							\
 	$(GLIB2_LIBS)
+
+test_tracker_extract_gstreamer_SOURCES = 				\
+	tracker-extract-gstreamer-test.c				\
+	$(TEST_UTILS_SOURCES)
+
+test_tracker_extract_gstreamer_LDADD =					\
+	$(top_builddir)/src/tracker-extract/libextract-gstreamer.la   	\
+	$(top_builddir)/src/libtracker-common/libtracker-common.la	\
+	$(GMODULE_LIBS)							\
+	$(GTHREAD_LIBS)							\
+	$(GLIB2_LIBS)							\
+	$(GSTREAMER_LIBS)
\ No newline at end of file

Added: trunk/tests/tracker-extract/data/mp3/create_mp3_perfdata
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/create_mp3_perfdata	Wed Jan 14 19:18:02 2009
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# *** cbr id3v1 tags ***
+
+for i in $(seq 1000)
+do
+    echo Performance cbr id3v1 $i| text2wave - | lame --resample 48 - "perf_cbr_id3v1_$i.mp3"
+    id3v2 --id3v1-only -t "The title $i"  -a "The Artist" -A "The album name" -y 1969 -c "This is a basic comment"  -T 5 -g 5 "id3v1_basic_1_$i.mp3"
+done
\ No newline at end of file

Modified: trunk/tests/tracker-extract/data/mp3/create_mp3_testdata
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/create_mp3_testdata	(original)
+++ trunk/tests/tracker-extract/data/mp3/create_mp3_testdata	Wed Jan 14 19:18:02 2009
@@ -30,7 +30,7 @@
 
 #COMM
 echo Basic id3v23 tags 1| text2wave - | lame --resample 48 - "id3v23_comm_1.mp3"
-id3v2 --id3v2-only -t "The titlev23"  -a "The artistv23" -A "The album namev23" -y 1969 -c ""  -T 8  -g 8  "id3v23_comm_1.mp3"
+id3v2 --id3v2-only -t "The titlev23"  -a "The artistv23" -A "The album namev23" -y 1969 -c " - "  -T 8  -g 8  "id3v23_comm_1.mp3"
 
 echo Basic id3v23 tags 1| text2wave - | lame --resample 48 - "id3v23_comm_2.mp3"
 id3v2 --id3v2-only -t "The titlev23"  -a "The artistv23" -A "The album namev23" -y 1969 -c " "  -T 8  -g 8  "id3v23_comm_2.mp3"
@@ -38,6 +38,13 @@
 echo Basic id3v23 tags 1| text2wave - | lame --resample 48 - "id3v23_comm_3.mp3"
 id3v2 --id3v2-only -t "The titlev23"  -a "The artistv23" -A "The album namev23" -y 1969 -c "c"  -T 8  -g 8  "id3v23_comm_3.mp3"
 
+#Others
+echo Basic id3v23 tags 1| text2wave - | lame --resample 48 - "id3v23_tags_1.mp3"
+id3v2 --id3v2-only  --PCNT "4" --TALB "Album/Movie/Show" --TCON "content type" --TCOP "copyright me" --TDAT "2312" --TENC "julkaisija" --TEXT "Monday, monday.. yeah yeah.. monday" --TIT2 "Title or songname" --TLAN "fin" --TPE1 "lead performer" --TYER "2003" "id3v23_tags_1.mp3"
+
+echo Basic id3v23 tags 1| text2wave - | lame --resample 48 - "id3v23_tags_2.mp3"
+id3v2 --id3v2-only  --TIT1 "content group desc" --TOAL "original album title" --TPE2 "Orchestra" --TPUB "publisher" "id3v23_tags_2.mp3"
+
 # *** Basic header/calculated tags ***
 
 #Sampling rate
@@ -69,6 +76,6 @@
 echo Header bitrate 256| text2wave - | lame --resample 32 --cbr -b 256 - "header_bitrate_mpeg1_13.mp3"
 echo Header bitrate 320| text2wave - | lame --resample 32 --cbr -b 320 - "header_bitrate_mpeg1_14.mp3"
 
-
-
-
+echo Header vbr 1| text2wave - | lame --resample 32 --abr 64  - "header_bitrate_vbr_mpeg1_1.mp3"
+echo Header vbr 1| text2wave - | lame --resample 32 --abr 128 - "header_bitrate_vbr_mpeg1_2.mp3"
+echo Header vbr 1| text2wave - | lame --resample 32 --abr 256 - "header_bitrate_vbr_mpeg1_3.mp3"

Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_1.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_1.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_1.data	Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate     = "32"
+Audio:Bitrate     = "32000"

Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_10.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_10.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_10.data	Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate     = "160"
+Audio:Bitrate     = "160000"

Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_11.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_11.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_11.data	Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate     = "192"
+Audio:Bitrate     = "192000"

Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_12.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_12.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_12.data	Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate     = "224"
+Audio:Bitrate     = "224000"

Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_13.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_13.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_13.data	Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate     = "256"
+Audio:Bitrate     = "256000"

Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_14.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_14.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_14.data	Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate     = "320"
+Audio:Bitrate     = "320000"

Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_2.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_2.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_2.data	Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate     = "40"
+Audio:Bitrate     = "40000"

Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_3.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_3.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_3.data	Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate     = "48"
+Audio:Bitrate     = "48000"

Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_4.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_4.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_4.data	Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate     = "56"
+Audio:Bitrate     = "56000"

Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_5.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_5.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_5.data	Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate     = "64"
+Audio:Bitrate     = "64000"

Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_6.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_6.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_6.data	Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate     = "80"
+Audio:Bitrate     = "80000"

Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_7.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_7.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_7.data	Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate     = "96"
+Audio:Bitrate     = "96000"

Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_8.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_8.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_8.data	Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate     = "112"
+Audio:Bitrate     = "112000"

Modified: trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_9.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_9.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_mpeg1_9.data	Wed Jan 14 19:18:02 2009
@@ -1 +1 @@
-Audio:Bitrate     = "128"
+Audio:Bitrate     = "128000"

Added: trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_1.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_1.data	Wed Jan 14 19:18:02 2009
@@ -0,0 +1 @@
+Audio:Bitrate     = "64000"

Added: trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_2.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_2.data	Wed Jan 14 19:18:02 2009
@@ -0,0 +1 @@
+Audio:Bitrate     = "128000"

Added: trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_3.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/header_bitrate_vbr_mpeg1_3.data	Wed Jan 14 19:18:02 2009
@@ -0,0 +1 @@
+Audio:Bitrate     = "256000"

Modified: trunk/tests/tracker-extract/data/mp3/id3v1_basic_1.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v1_basic_1.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/id3v1_basic_1.data	Wed Jan 14 19:18:02 2009
@@ -1,5 +1,5 @@
 Audio:Title       = "The title"
-Audio:Artist      = "The artist"
+Audio:Artist      = "The Artist"
 Audio:Album       = "The album name"
 Audio:Comment     = "This is a basic comment"
 Audio:Genre       = "Funk"

Modified: trunk/tests/tracker-extract/data/mp3/id3v23_basic_1.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v23_basic_1.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_basic_1.data	Wed Jan 14 19:18:02 2009
@@ -2,6 +2,6 @@
 Audio:Artist      = "The artistv23"
 Audio:Album       = "The album namev23"
 Audio:Comment     = "This is a basic commentv23"
-Audio:Genre       = "(8)"
+Audio:Genre       = "Jazz"
 Audio:ReleaseDate = "1969"
-Audio:TrackNo     = "5"
+Audio:TrackNo     = "8"

Modified: trunk/tests/tracker-extract/data/mp3/id3v23_basic_2.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v23_basic_2.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_basic_2.data	Wed Jan 14 19:18:02 2009
@@ -2,6 +2,6 @@
 Audio:Artist      = "Artistv23"
 Audio:Album       = "Albumv23"
 Audio:Comment     = "Commentv23"
-Audio:Genre       = "(9)"
+Audio:Genre       = "Metal"
 Audio:ReleaseDate = "1999"
-Audio:TrackNo     = "6"
+Audio:TrackNo     = "9"

Modified: trunk/tests/tracker-extract/data/mp3/id3v23_basic_3.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v23_basic_3.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_basic_3.data	Wed Jan 14 19:18:02 2009
@@ -2,6 +2,6 @@
 Audio:Artist      = "artistiv23"
 Audio:Album       = "levyv23"
 Audio:Comment     = "jotain kommenttiav23"
-Audio:Genre       = "(10)"
+Audio:Genre       = "New Age"
 Audio:ReleaseDate = "2029"
 Audio:TrackNo     = "10"

Modified: trunk/tests/tracker-extract/data/mp3/id3v23_comm_1.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v23_comm_1.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_comm_1.data	Wed Jan 14 19:18:02 2009
@@ -1,7 +1,7 @@
 Audio:Title       = "The titlev23"
 Audio:Artist      = "The artistv23"
 Audio:Album       = "The album namev23"
-Audio:Comment     = ""
-Audio:Genre       = "(8)"
+Audio:Comment     = " - "
+Audio:Genre       = "Jazz"
 Audio:ReleaseDate = "1969"
 Audio:TrackNo     = "8"

Modified: trunk/tests/tracker-extract/data/mp3/id3v23_comm_2.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v23_comm_2.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_comm_2.data	Wed Jan 14 19:18:02 2009
@@ -2,6 +2,6 @@
 Audio:Artist      = "The artistv23"
 Audio:Album       = "The album namev23"
 Audio:Comment     = " "
-Audio:Genre       = "(8)"
+Audio:Genre       = "Jazz"
 Audio:ReleaseDate = "1969"
 Audio:TrackNo     = "8"

Modified: trunk/tests/tracker-extract/data/mp3/id3v23_comm_3.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v23_comm_3.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_comm_3.data	Wed Jan 14 19:18:02 2009
@@ -2,6 +2,6 @@
 Audio:Artist      = "The artistv23"
 Audio:Album       = "The album namev23"
 Audio:Comment     = "c"
-Audio:Genre       = "(8)"
+Audio:Genre       = "Jazz"
 Audio:ReleaseDate = "1969"
 Audio:TrackNo     = "8"

Added: trunk/tests/tracker-extract/data/mp3/id3v23_tags_1.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_tags_1.data	Wed Jan 14 19:18:02 2009
@@ -0,0 +1,12 @@
+#Audio:PlayCount   = "4"
+Audio:Album       = "Album/Movie/Show"
+Audio:ReleaseDate = "2003"
+Audio:Genre       = "content type"
+#Audio:Lyrics      = "Monday, monday.. yeah yeah.. monday"
+Audio:Title       = "Title or songname"
+Audio:Artist      = "lead performer"
+
+File:Copyright    = "copyright me"
+#File:Language     = "fin"
+
+#DC:Publishers     = "julkaisija"

Added: trunk/tests/tracker-extract/data/mp3/id3v23_tags_2.data
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_tags_2.data	Wed Jan 14 19:18:02 2009
@@ -0,0 +1,4 @@
+#Audio:Genre       = "content group desc"
+#Audio:Album       = "original album title"
+#Audio:Artist      = "Orchestra"
+#DC:Publishers     = "publisher"

Modified: trunk/tests/tracker-extract/data/mp3/id3v23_trck_1.data
==============================================================================
--- trunk/tests/tracker-extract/data/mp3/id3v23_trck_1.data	(original)
+++ trunk/tests/tracker-extract/data/mp3/id3v23_trck_1.data	Wed Jan 14 19:18:02 2009
@@ -2,6 +2,6 @@
 Audio:Artist      = "The artistv23"
 Audio:Album       = "The album namev23"
 Audio:Comment     = "This is a basic commentv23"
-Audio:Genre       = "(8)"
+Audio:Genre       = "Jazz"
 Audio:ReleaseDate = "1969"
 Audio:TrackNo     = "88"

Added: trunk/tests/tracker-extract/tracker-extract-gstreamer-test.c
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/tracker-extract-gstreamer-test.c	Wed Jan 14 19:18:02 2009
@@ -0,0 +1,70 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008, Nokia (urho konttori nokia com)
+ *
+ * This library 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 2 of the License, or (at your option) any later version.
+ *
+ * This library 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 this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA  02110-1301, USA.
+ */
+
+#include <string.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <glib.h>
+
+#include <tracker-extract/tracker-extract.h>
+
+#include "tracker-extract-test-utils.h"
+#include "tracker-extract-testsuite-generic.h"
+#include "tracker-extract-testsuite-mp3.h"
+
+int
+main (int argc, char **argv) {
+
+	gint result;
+
+	g_type_init ();
+	g_thread_init (NULL);
+	g_test_init (&argc, &argv, NULL);
+
+	TrackerExtractorData *data;
+
+	g_test_message ("Testing extractor functionality");
+	g_test_add_func ("/tracker-extract/tracker-extract-gstreamer/check-extractor-data",
+			 test_tracker_extract_check_extractor_data);
+#if 0
+	data = tracker_test_extract_get_extractor ("audio/mpeg");
+
+	g_test_add_data_func ("/tracker-extract/tracker-extract-gstreamer/id3v1_basic",
+			      data, test_tracker_extract_mp3_id3v1_basic);
+	g_test_add_data_func ("/tracker-extract/tracker-extract-gstreamer/id3v23_basic",
+			      data, test_tracker_extract_mp3_id3v23_basic);
+	g_test_add_data_func ("/tracker-extract/tracker-extract-gstreamer/id3v23_tags",
+			      data, test_tracker_extract_mp3_id3v23_tags);
+/*	g_test_add_data_func ("/tracker-extract/tracker-extract-gstreamer/header_bitrate",
+	data, test_tracker_extract_mp3_header_bitrate); Gstreamer gets these wrong. reported */
+	g_test_add_data_func ("/tracker-extract/tracker-extract-gstreamer/header_sampling",
+			      data, test_tracker_extract_mp3_header_sampling);
+
+	if (g_test_perf()) {
+		g_test_add_data_func ("/tracker-extract/tracker-extract-gstreamer/performance_cbr",
+				      data, performance_tracker_extract_mp3);	
+	}
+#endif
+
+
+	result = g_test_run ();
+
+	return result;
+}

Modified: trunk/tests/tracker-extract/tracker-extract-mp3-test.c
==============================================================================
--- trunk/tests/tracker-extract/tracker-extract-mp3-test.c	(original)
+++ trunk/tests/tracker-extract/tracker-extract-mp3-test.c	Wed Jan 14 19:18:02 2009
@@ -20,365 +20,52 @@
 
 #include <string.h>
 #include <fcntl.h>
-
+#include <stdio.h>
 #include <glib.h>
 
 #include <tracker-extract/tracker-extract.h>
 
-typedef struct {
-	gchar *filename;
-	gchar *testdata;
-} ExtractData;
-
-static GHashTable *
-parse_testdata_file (const gchar *filename)
-{
-	GHashTable *testdata;
-	GScanner *scanner;
-	GTokenType ttype;
-	GScannerConfig config = {
-		" \t\r\n",                     /* characters to skip */
-		G_CSET_a_2_z "_" G_CSET_A_2_Z, /* identifier start */
-		G_CSET_a_2_z "_.:" G_CSET_A_2_Z G_CSET_DIGITS,/* identifier cont. */
-		"#\n",                         /* single line comment */
-		TRUE,                          /* case_sensitive */
-		TRUE,                          /* skip multi-line comments */
-		TRUE,                          /* skip single line comments */
-		FALSE,                         /* scan multi-line comments */
-		TRUE,                          /* scan identifiers */
-		TRUE,                          /* scan 1-char identifiers */
-		FALSE,                         /* scan NULL identifiers */
-		FALSE,                         /* scan symbols */
-		FALSE,                         /* scan binary */
-		FALSE,                         /* scan octal */
-		TRUE,                          /* scan float */
-		TRUE,                          /* scan hex */
-		FALSE,                         /* scan hex dollar */
-		TRUE,                          /* scan single quote strings */
-		TRUE,                          /* scan double quite strings */
-		TRUE,                          /* numbers to int */
-		FALSE,                         /* int to float */
-		TRUE,                          /* identifier to string */
-		TRUE,                          /* char to token */
-		FALSE,                         /* symbol to token */
-		FALSE,                         /* scope 0 fallback */
-		FALSE                          /* store int64 */
-	};
-	gint fd;
-
-	testdata = g_hash_table_new_full (g_str_hash,
-					  g_str_equal,
-					  g_free,
-					  g_free);
-
-	fd = g_fopen (filename, O_RDONLY);
-
-	g_assert (fd >= 0);
-
-	scanner = g_scanner_new (&config);
-	g_scanner_input_file (scanner, fd);
-	scanner->input_name = filename;
-
-	for (ttype = g_scanner_get_next_token(scanner);
-	     ttype != G_TOKEN_EOF;
-	     ttype = g_scanner_get_next_token (scanner)) {
-		if (ttype = G_TOKEN_IDENTIFIER) {
-			gchar key[256];
-			strcpy (key, scanner->value.v_identifier);
-			
-			ttype = g_scanner_get_next_token(scanner);
-			g_assert (ttype == G_TOKEN_EQUAL_SIGN);
-
-			ttype = g_scanner_get_next_token(scanner);
-
-			switch (ttype) {
-			case G_TOKEN_STRING:
-				g_hash_table_insert (testdata, 
-						     g_strdup(key), 
-						     g_strdup(scanner->value.v_string));
-				break;
-				
-			default:
-				g_assert_not_reached();
-				
-			}
-			
-		}
-	}
-
-	g_scanner_destroy (scanner);
-	close (fd);
-
-	return testdata;
-}
-
-static void
-dump_metadataitem (gpointer key,
-		   gpointer value,
-		   gpointer user_data)
-{
-	gchar *value_utf8;
-
-	g_assert (key != NULL);
-	g_assert (value != NULL);
-
-	value_utf8 = g_locale_to_utf8 (value, -1, NULL, NULL, NULL);
-
-	if (value_utf8) {
-		value_utf8 = g_strstrip (value_utf8);
-		g_print ("%s=%s;\n", (gchar*) key, value_utf8);
-		g_free (value_utf8);
-	}
-}
-
-static void
-dump_metadata (GHashTable *metadata)
-{
-	g_assert (metadata != NULL);
-	g_hash_table_foreach (metadata, dump_metadataitem, NULL);
-}
-
-static void
-check_metadata (GHashTable *metadata, gchar *key, gchar *value)
-{
-	gchar *cvalue;
-	g_assert (metadata != NULL);
-	g_assert (key != NULL);
-	g_assert (value != NULL);
-	
-	cvalue = g_hash_table_lookup (metadata, key);
-	g_assert (cvalue != NULL);
-	g_assert_cmpstr (cvalue, ==, value);
-}
-
-static TrackerExtractorData *
-search_mime_extractor (const gchar *mime)
-{
-	TrackerExtractorData *data;
-
-	data = tracker_get_extractor_data ();	
-
-	while (data->mime) {
-		if (strcmp (data->mime,mime) == 0) {
-			return data;
-		}
-		data++;
-	}	
-
-	return NULL;
-}
-
-static void
-extract_file (const gchar *file, const gchar *testdatafile)
-{
-	GHashTable *metadata;
-	GHashTable *testdata;
-
-	gchar      *filename;	
-	gchar      *testdata_filename;
-
-	TrackerExtractorData *data;
-
-	GHashTableIter iter;
-	gpointer key, value;
-
-	filename = g_strconcat (TEST_DATA_DIR, file, NULL);
-	testdata_filename = g_strconcat (TEST_DATA_DIR, testdatafile, NULL);
-
-	metadata = g_hash_table_new_full (g_str_hash,
-					  g_str_equal,
-					  g_free,
-					  g_free);
-
-	data = search_mime_extractor ("audio/mpeg");
-	g_assert (data != NULL);
-	(*data->extractor) (filename, metadata);
-
-	testdata = parse_testdata_file (testdata_filename);
-
-	g_hash_table_iter_init (&iter, testdata);
-	while (g_hash_table_iter_next (&iter, &key, &value)) {
-		check_metadata (metadata, (gchar *)key, (gchar *)value);
-	}
-
-	g_hash_table_destroy (metadata);
-	g_hash_table_destroy (testdata);
-}
-
-static void
-test_extract_mp3_check_extractor_data (void)
-{
-	TrackerExtractorData *data;
-	guint extractors = 0;
-
-	data = tracker_get_extractor_data();
-
-	while (data->mime) {
-		if (data->extractor == NULL) {
-			g_error ("Extractor for mime '%s' declared NULL", data->mime);
-		}
-
-		extractors++;
-		data++;
-	}
-
-	g_assert (extractors > 1);
-}
-
-static void
-test_extract_mp3_extract_file (gconstpointer user_data)
-{
-	const ExtractData *data = user_data;
-	extract_file (data->filename, data->testdata);
-}
+#include "tracker-extract-test-utils.h"
+#include "tracker-extract-testsuite-generic.h"
+#include "tracker-extract-testsuite-mp3.h"
 
 int
 main (int argc, char **argv) {
 
 	gint result;
-	ExtractData data;
 
 	g_type_init ();
 	g_thread_init (NULL);
 	g_test_init (&argc, &argv, NULL);
 
-	g_test_message ("Testing basic extractor functionality");
-	g_test_add_func ("/tracker-extract/tracker-extract-mp3/check-extractor-data", test_extract_mp3_check_extractor_data);
+	TrackerExtractorData *data;
 
-	g_test_message ("Testing basic id3v1 metadata tags");
+	g_test_message ("Testing extractor functionality");
+	g_test_add_func ("/tracker-extract/tracker-extract-mp3/check-extractor-data",
+			 test_tracker_extract_check_extractor_data);
 
-	/* Tests fails, disabling, -mr */
 #if 0
-	data.filename = "/mp3/id3v1_basic_1.mp3";
-	data.testdata = "/mp3/id3v1_basic_1.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v1/1", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/id3v1_basic_2.mp3";
-	data.testdata = "/mp3/id3v1_basic_2.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v1/2", &data, test_extract_mp3_extract_file);	
-
-	data.filename = "/mp3/id3v1_basic_3.mp3";
-	data.testdata = "/mp3/id3v1_basic_3.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v1/3", &data, test_extract_mp3_extract_file);
-
-	g_test_message ("Testing basic id3v23 metadata tags");
-
-	data.filename = "/mp3/id3v23_basic_1.mp3";
-	data.testdata = "/mp3/id3v23_basic_1.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23/1", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/id3v23_basic_2.mp3";
-	data.testdata = "/mp3/id3v23_basic_2.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23/2", &data, test_extract_mp3_extract_file);	
-
-	data.filename = "/mp3/id3v23_basic_3.mp3";
-	data.testdata = "/mp3/id3v23_basic_3.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23/3", &data, test_extract_mp3_extract_file);
-
-	g_test_message ("Testing specific id3v23 tags");
-
-	data.filename = "/mp3/id3v23_trck_1.mp3";
-	data.testdata = "/mp3/id3v23_trck_1.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23/trck-1", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/id3v23_comm_1.mp3";
-	data.testdata = "/mp3/id3v23_comm_1.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23/comm-1", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/id3v23_comm_2.mp3";
-	data.testdata = "/mp3/id3v23_comm_2.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23/comm-2", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/id3v23_comm_3.mp3";
-	data.testdata = "/mp3/id3v23_comm_3.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23/comm-3", &data, test_extract_mp3_extract_file);
-
-	g_test_message ("Testing header/calculated metadata");
-
-	data.filename = "/mp3/header_bitrate_mpeg1_1.mp3";
-	data.testdata = "/mp3/header_bitrate_mpeg1_1.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-1", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/header_bitrate_mpeg1_2.mp3";
-	data.testdata = "/mp3/header_bitrate_mpeg1_2.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-2", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/header_bitrate_mpeg1_3.mp3";
-	data.testdata = "/mp3/header_bitrate_mpeg1_3.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-3", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/header_bitrate_mpeg1_4.mp3";
-	data.testdata = "/mp3/header_bitrate_mpeg1_4.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-4", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/header_bitrate_mpeg1_5.mp3";
-	data.testdata = "/mp3/header_bitrate_mpeg1_5.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-5", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/header_bitrate_mpeg1_6.mp3";
-	data.testdata = "/mp3/header_bitrate_mpeg1_6.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-6", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/header_bitrate_mpeg1_7.mp3";
-	data.testdata = "/mp3/header_bitrate_mpeg1_7.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-7", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/header_bitrate_mpeg1_8.mp3";
-	data.testdata = "/mp3/header_bitrate_mpeg1_8.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-8", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/header_bitrate_mpeg1_9.mp3";
-	data.testdata = "/mp3/header_bitrate_mpeg1_9.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-9", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/header_bitrate_mpeg1_10.mp3";
-	data.testdata = "/mp3/header_bitrate_mpeg1_10.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-10", &data, test_extract_mp3_extract_file);
-	data.filename = "/mp3/header_bitrate_mpeg1_11.mp3";
-	data.testdata = "/mp3/header_bitrate_mpeg1_11.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-11", &data, test_extract_mp3_extract_file);
-	data.filename = "/mp3/header_bitrate_mpeg1_12.mp3";
-	data.testdata = "/mp3/header_bitrate_mpeg1_12.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-12", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/header_bitrate_mpeg1_13.mp3";
-	data.testdata = "/mp3/header_bitrate_mpeg1_13.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-13", &data, test_extract_mp3_extract_file);
-	data.filename = "/mp3/header_bitrate_mpeg1_14.mp3";
-	data.testdata = "/mp3/header_bitrate_mpeg1_14.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/bitrate-mpeg1-14", &data, test_extract_mp3_extract_file);
-	data.filename = "/mp3/header_sampling_mpeg1_1.mp3";
-	data.testdata = "/mp3/header_sampling_mpeg1_1.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg1-1", &data, test_extract_mp3_extract_file);
-	data.filename = "/mp3/header_sampling_mpeg1_2.mp3";
-	data.testdata = "/mp3/header_sampling_mpeg1_2.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg1-2", &data, test_extract_mp3_extract_file);
-	data.filename = "/mp3/header_sampling_mpeg1_3.mp3";
-	data.testdata = "/mp3/header_sampling_mpeg1_3.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg1-3", &data, test_extract_mp3_extract_file);
-	data.filename = "/mp3/header_sampling_mpeg2_1.mp3";
-	data.testdata = "/mp3/header_sampling_mpeg2_1.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg2-1", &data, test_extract_mp3_extract_file);
-	data.filename = "/mp3/header_sampling_mpeg2_2.mp3";
-	data.testdata = "/mp3/header_sampling_mpeg2_2.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg2-2", &data, test_extract_mp3_extract_file);
-	data.filename = "/mp3/header_sampling_mpeg2_3.mp3";
-	data.testdata = "/mp3/header_sampling_mpeg2_3.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg2-3", &data, test_extract_mp3_extract_file);
-	data.filename = "/mp3/header_sampling_mpeg25_1.mp3";
-	data.testdata = "/mp3/header_sampling_mpeg25_1.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg25-1", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/header_sampling_mpeg25_2.mp3";
-	data.testdata = "/mp3/header_sampling_mpeg25_2.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg25-2", &data, test_extract_mp3_extract_file);
-
-	data.filename = "/mp3/header_sampling_mpeg25_3.mp3";
-	data.testdata = "/mp3/header_sampling_mpeg25_3.data";
-	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header/sampling-mpeg25-3", &data, test_extract_mp3_extract_file);
+	data = tracker_test_extract_get_extractor ("audio/mpeg");
+
+	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v1_basic",
+			      data, test_tracker_extract_mp3_id3v1_basic);
+	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23_basic",
+			      data, test_tracker_extract_mp3_id3v23_basic);
+	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/id3v23_tags",
+			      data, test_tracker_extract_mp3_id3v23_tags);
+	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header_bitrate",
+			      data, test_tracker_extract_mp3_header_bitrate);
+	g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/header_sampling",
+			      data, test_tracker_extract_mp3_header_sampling);
+
+
+	if (g_test_perf()) {
+		g_test_add_data_func ("/tracker-extract/tracker-extract-mp3/performance_cbr",
+				      data, performance_tracker_extract_mp3);	
+	}
+
 #endif
 
-	g_test_message ("Testing metadata ordering (priorities of sources)");
 
 	result = g_test_run ();
 

Added: trunk/tests/tracker-extract/tracker-extract-test-utils.c
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/tracker-extract-test-utils.c	Wed Jan 14 19:18:02 2009
@@ -0,0 +1,186 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2009, Nokia (urho konttori nokia com)
+ *
+ * This library 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 2 of the License, or (at your option) any later version.
+ *
+ * This library 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 this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA  02110-1301, USA.
+ */
+
+#include "tracker-extract-test-utils.h"
+
+TrackerExtractorData *
+tracker_test_extract_get_extractor (const gchar *mime)
+{
+	TrackerExtractorData *data;
+	
+	/* Search for exact match first */
+	data = tracker_get_extractor_data ();	
+	while (data->mime) {
+		if (strcmp (data->mime, mime) == 0) {
+			return data;
+		}
+		data++;
+	}
+
+	/* Search for generic */
+	data = tracker_get_extractor_data ();
+	while (data->mime) {
+		if (g_pattern_match_simple (data->mime, mime)) {
+			return data;
+		}
+		data++;
+	}
+	return NULL;
+}
+
+TrackerExtractorData *
+search_mime_extractor (const gchar *mime)
+{
+	TrackerExtractorData *data;
+
+	data = tracker_get_extractor_data ();	
+
+	while (data->mime) {
+		if (strcmp (data->mime,mime) == 0) {
+			return data;
+		}
+		data++;
+	}	
+
+	return NULL;
+}
+
+
+GHashTable *
+parse_testdata_file (const gchar *filename)
+{
+	GHashTable *testdata;
+	GScanner *scanner;
+	GTokenType ttype;
+	GScannerConfig config = {
+		" \t\r\n",                     /* characters to skip */
+		G_CSET_a_2_z "_" G_CSET_A_2_Z, /* identifier start */
+		G_CSET_a_2_z "_.:" G_CSET_A_2_Z G_CSET_DIGITS,/* identifier cont. */
+		"#\n",                         /* single line comment */
+		TRUE,                          /* case_sensitive */
+		TRUE,                          /* skip multi-line comments */
+		TRUE,                          /* skip single line comments */
+		FALSE,                         /* scan multi-line comments */
+		TRUE,                          /* scan identifiers */
+		TRUE,                          /* scan 1-char identifiers */
+		FALSE,                         /* scan NULL identifiers */
+		FALSE,                         /* scan symbols */
+		FALSE,                         /* scan binary */
+		FALSE,                         /* scan octal */
+		TRUE,                          /* scan float */
+		TRUE,                          /* scan hex */
+		FALSE,                         /* scan hex dollar */
+		TRUE,                          /* scan single quote strings */
+		TRUE,                          /* scan double quite strings */
+		TRUE,                          /* numbers to int */
+		FALSE,                         /* int to float */
+		TRUE,                          /* identifier to string */
+		TRUE,                          /* char to token */
+		FALSE,                         /* symbol to token */
+		FALSE,                         /* scope 0 fallback */
+		FALSE                          /* store int64 */
+	};
+	int fd;
+
+	testdata = g_hash_table_new_full (g_str_hash,
+					  g_str_equal,
+					  g_free,
+					  g_free);
+
+	fd = g_open (filename, O_RDONLY);
+
+	g_assert (fd >= 0);
+
+	scanner = g_scanner_new (&config);
+	g_scanner_input_file (scanner, fd);
+	scanner->input_name = filename;
+
+	for (ttype = g_scanner_get_next_token(scanner);
+	     ttype != G_TOKEN_EOF;
+	     ttype = g_scanner_get_next_token (scanner)) {
+		if (ttype = G_TOKEN_IDENTIFIER) {
+			gchar key[256];
+			strcpy (key, scanner->value.v_identifier);
+			
+			ttype = g_scanner_get_next_token(scanner);
+			g_assert (ttype == G_TOKEN_EQUAL_SIGN);
+
+			ttype = g_scanner_get_next_token(scanner);
+
+			switch (ttype) {
+			case G_TOKEN_STRING:
+				g_hash_table_insert (testdata, 
+						     g_strdup(key), 
+						     g_strdup(scanner->value.v_string));
+				break;
+				
+			default:
+				g_assert_not_reached();
+				
+			}
+			
+		}
+	}
+
+	g_scanner_destroy (scanner);
+	close (fd);
+
+	return testdata;
+}
+
+
+static void
+dump_metadataitem (gpointer key,
+		   gpointer value,
+		   gpointer user_data)
+{
+	gchar *value_utf8;
+
+	g_assert (key != NULL);
+	g_assert (value != NULL);
+
+	value_utf8 = g_locale_to_utf8 (value, -1, NULL, NULL, NULL);
+
+	if (value_utf8) {
+		value_utf8 = g_strstrip (value_utf8);
+		g_print ("%s=%s;\n", (gchar*) key, value_utf8);
+		g_free (value_utf8);
+	}
+}
+
+void
+dump_metadata (GHashTable *metadata)
+{
+	g_assert (metadata != NULL);
+	g_hash_table_foreach (metadata, dump_metadataitem, NULL);
+}
+
+void
+check_metadata (GHashTable *metadata, gchar *key, gchar *value)
+{
+	gchar *cvalue;
+	g_assert (metadata != NULL);
+	g_assert (key != NULL);
+	g_assert (value != NULL);
+	
+	cvalue = g_hash_table_lookup (metadata, key);
+	g_assert (cvalue != NULL);
+	g_assert_cmpstr (cvalue, ==, value);
+}

Added: trunk/tests/tracker-extract/tracker-extract-test-utils.h
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/tracker-extract-test-utils.h	Wed Jan 14 19:18:02 2009
@@ -0,0 +1,39 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2009, Nokia (urho konttori nokia com)
+ *
+ * This library 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 2 of the License, or (at your option) any later version.
+ *
+ * This library 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 this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA  02110-1301, USA.
+ */
+
+#ifndef __TRACKER_EXTRACT_TEST_UTILS_H__
+#define __TRACKER_EXTRACT_TEST_UTILS_H__
+
+#include <string.h>
+#include <fcntl.h>
+#include <stdio.h>
+
+#include <glib.h>
+
+#include <tracker-extract/tracker-extract.h>
+
+TrackerExtractorData *  tracker_test_extract_get_extractor (const gchar *mime);
+GHashTable *            parse_testdata_file        (const gchar *filename);
+void                    dump_metadata              (GHashTable *metadata);
+void                    check_metadata             (GHashTable *metadata,
+						    gchar *key,
+						    gchar *value);
+
+#endif

Added: trunk/tests/tracker-extract/tracker-extract-testsuite-generic.c
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-generic.c	Wed Jan 14 19:18:02 2009
@@ -0,0 +1,45 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008, Nokia (urho konttori nokia com)
+ *
+ * This library 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 2 of the License, or (at your option) any later version.
+ *
+ * This library 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 this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA  02110-1301, USA.
+ */
+
+#include "tracker-extract-testsuite-generic.h"
+
+#include <glib.h>
+
+#include "tracker-extract-test-utils.h"
+
+void
+test_tracker_extract_check_extractor_data (void)
+{
+	TrackerExtractorData *data;
+	guint extractors = 0;
+
+	data = tracker_get_extractor_data();
+
+	while (data->mime) {
+		if (data->extractor == NULL) {
+			g_error ("Extractor for mime '%s' declared NULL", data->mime);
+		}
+
+		extractors++;
+		data++;
+	}
+
+	g_assert (extractors > 1);
+}

Added: trunk/tests/tracker-extract/tracker-extract-testsuite-generic.h
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-generic.h	Wed Jan 14 19:18:02 2009
@@ -0,0 +1,28 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2009, Nokia (urho konttori nokia com)
+ *
+ * This library 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 2 of the License, or (at your option) any later version.
+ *
+ * This library 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 this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA  02110-1301, USA.
+ */
+
+#ifndef __TRACKER_EXTRACT_TESTSUITE_GENERIC_H__
+#define __TRACKER_EXTRACT_TESTSUITE_GENERIC_H__
+
+#include <tracker-extract/tracker-extract.h>
+
+void test_tracker_extract_check_extractor_data  ();
+
+#endif

Added: trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.c
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.c	Wed Jan 14 19:18:02 2009
@@ -0,0 +1,255 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2008, Nokia (urho konttori nokia com)
+ *
+ * This library 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 2 of the License, or (at your option) any later version.
+ *
+ * This library 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 this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA  02110-1301, USA.
+ */
+
+#include "tracker-extract-testsuite-mp3.h"
+
+#include <glib.h>
+
+#include "tracker-extract-test-utils.h"
+
+typedef struct {
+	gchar *filename;
+	gchar *testdata;
+} ExtractData;
+
+static const ExtractData data_id3v1_basic[] = { 
+	{ "/mp3/id3v1_basic_1.mp3", "/mp3/id3v1_basic_1.data" },
+	{ "/mp3/id3v1_basic_2.mp3", "/mp3/id3v1_basic_2.data" },
+	{ "/mp3/id3v1_basic_3.mp3", "/mp3/id3v1_basic_3.data" },
+	{ NULL, NULL }
+};
+
+static const ExtractData data_id3v23_basic[] = { 
+	{ "/mp3/id3v23_basic_1.mp3", "/mp3/id3v23_basic_1.data" },
+	{ "/mp3/id3v23_basic_2.mp3", "/mp3/id3v23_basic_2.data" },
+	{ "/mp3/id3v23_basic_3.mp3", "/mp3/id3v23_basic_3.data" },
+	{ NULL, NULL }
+};
+
+static const ExtractData data_id3v23_tags[] = { 
+	{ "/mp3/id3v23_trck_1.mp3", "/mp3/id3v23_trck_1.data" },
+	{ "/mp3/id3v23_comm_1.mp3", "/mp3/id3v23_comm_1.data" },
+	{ "/mp3/id3v23_comm_2.mp3", "/mp3/id3v23_comm_2.data" },
+	{ "/mp3/id3v23_comm_3.mp3", "/mp3/id3v23_comm_3.data" },
+	{ "/mp3/id3v23_tags_1.mp3", "/mp3/id3v23_tags_1.data" },
+	{ "/mp3/id3v23_tags_2.mp3", "/mp3/id3v23_tags_2.data" },
+	{ NULL, NULL }
+};
+
+static const ExtractData data_header_bitrate[] = { 
+	{ "/mp3/header_bitrate_mpeg1_1.mp3", "/mp3/header_bitrate_mpeg1_1.data" },
+	{ "/mp3/header_bitrate_mpeg1_2.mp3", "/mp3/header_bitrate_mpeg1_2.data" },
+	{ "/mp3/header_bitrate_mpeg1_3.mp3", "/mp3/header_bitrate_mpeg1_3.data" },
+	{ "/mp3/header_bitrate_mpeg1_4.mp3", "/mp3/header_bitrate_mpeg1_4.data" },
+	{ "/mp3/header_bitrate_mpeg1_5.mp3", "/mp3/header_bitrate_mpeg1_5.data" },
+	{ "/mp3/header_bitrate_mpeg1_6.mp3", "/mp3/header_bitrate_mpeg1_6.data" },
+	{ "/mp3/header_bitrate_mpeg1_7.mp3", "/mp3/header_bitrate_mpeg1_7.data" },
+	{ "/mp3/header_bitrate_mpeg1_8.mp3", "/mp3/header_bitrate_mpeg1_8.data" },
+	{ "/mp3/header_bitrate_mpeg1_9.mp3", "/mp3/header_bitrate_mpeg1_9.data" },
+	{ "/mp3/header_bitrate_mpeg1_10.mp3","/mp3/header_bitrate_mpeg1_10.data"},
+	{ "/mp3/header_bitrate_mpeg1_11.mp3","/mp3/header_bitrate_mpeg1_11.data"},
+	{ "/mp3/header_bitrate_mpeg1_12.mp3","/mp3/header_bitrate_mpeg1_12.data"},
+	{ "/mp3/header_bitrate_mpeg1_13.mp3","/mp3/header_bitrate_mpeg1_13.data"},
+	{ "/mp3/header_bitrate_mpeg1_14.mp3","/mp3/header_bitrate_mpeg1_14.data"},
+	{ NULL, NULL }
+};
+
+static const ExtractData data_header_bitrate_vbr[] = { 
+	{ "/mp3/header_bitrate_vbr_mpeg1_1.mp3", "/mp3/header_bitrate_vbr_mpeg1_1.data" },
+	{ "/mp3/header_bitrate_vbr_mpeg1_1.mp3", "/mp3/header_bitrate_vbr_mpeg1_1.data" },
+	{ "/mp3/header_bitrate_vbr_mpeg1_1.mp3", "/mp3/header_bitrate_vbr_mpeg1_1.data" },
+	{ NULL, NULL }
+};
+
+
+static const ExtractData data_header_sampling[] = { 
+	{ "/mp3/header_sampling_mpeg1_1.mp3", "/mp3/header_sampling_mpeg1_1.data" },
+	{ "/mp3/header_sampling_mpeg1_2.mp3", "/mp3/header_sampling_mpeg1_2.data" },
+	{ "/mp3/header_sampling_mpeg1_3.mp3", "/mp3/header_sampling_mpeg1_3.data" },
+	{ "/mp3/header_sampling_mpeg2_1.mp3", "/mp3/header_sampling_mpeg2_1.data" },
+	{ "/mp3/header_sampling_mpeg2_2.mp3", "/mp3/header_sampling_mpeg2_2.data" },
+	{ "/mp3/header_sampling_mpeg2_3.mp3", "/mp3/header_sampling_mpeg2_3.data" },
+	{ "/mp3/header_sampling_mpeg25_1.mp3", "/mp3/header_sampling_mpeg25_1.data" },
+	{ "/mp3/header_sampling_mpeg25_2.mp3", "/mp3/header_sampling_mpeg25_2.data" },
+	{ "/mp3/header_sampling_mpeg25_3.mp3", "/mp3/header_sampling_mpeg25_3.data" },
+	{ NULL, NULL }
+};
+
+void
+extract_file (const TrackerExtractorData *data, const gchar *file, const gchar *testdatafile)
+{
+	GHashTable *metadata;
+	GHashTable *testdata;
+
+	gchar      *filename;	
+	gchar      *testdata_filename;
+
+	GHashTableIter iter;
+	gpointer key, value;
+
+	g_assert (data != NULL);
+	g_assert (file != NULL);
+	g_assert (testdatafile != NULL);
+
+	filename = g_strconcat (TEST_DATA_DIR, file, NULL);
+	testdata_filename = g_strconcat (TEST_DATA_DIR, testdatafile, NULL);
+
+	metadata = g_hash_table_new_full (g_str_hash,
+					  g_str_equal,
+					  g_free,
+					  g_free);
+
+	(*data->extractor) (filename, metadata);
+
+	testdata = parse_testdata_file (testdata_filename);
+
+	g_hash_table_iter_init (&iter, testdata);
+
+/*	dump_metadata(metadata); */
+
+	while (g_hash_table_iter_next (&iter, &key, &value)) {
+		check_metadata (metadata, (gchar *)key, (gchar *)value);
+	}
+
+	g_hash_table_destroy (metadata);
+	g_hash_table_destroy (testdata);
+}
+
+void
+performance_extract_files (const TrackerExtractorData *data, const gchar *filematch, guint filecount)
+{
+	double perftime;
+	guint i;
+
+	g_assert (data != NULL);
+	g_assert (filematch != NULL);
+	g_assert (filecount >0 );
+	
+	g_test_timer_start();
+
+	for (i=1;i<=filecount;i++) {		
+		char filename[256];
+		GHashTable *metadata;
+
+		metadata = g_hash_table_new_full (g_str_hash,
+						  g_str_equal,
+						  g_free,
+						  g_free);
+
+		if (sprintf (filename, "%s%s%d.mp3",TEST_DATA_DIR,filematch,i) < 0) {
+			g_assert_not_reached();
+		}
+
+		(*data->extractor) (filename, metadata);
+
+		g_assert (g_hash_table_size (metadata) > 0);
+
+		g_hash_table_destroy (metadata);
+	}		
+
+	perftime = g_test_timer_elapsed();
+
+	g_debug ("Time was: %f", perftime);
+
+	g_test_minimized_result (perftime, "Time of the mp3 performance tests");
+}
+
+
+void test_tracker_extract_mp3_id3v1_basic(gconstpointer data)
+{
+	const TrackerExtractorData *extractor = data;
+	guint i;
+
+	for (i=0; data_id3v1_basic[i].filename; i++) {
+		extract_file (data,
+			      data_id3v1_basic[i].filename,
+			      data_id3v1_basic[i].testdata);		
+	}
+}
+
+void test_tracker_extract_mp3_id3v23_basic(gconstpointer data)
+{
+	const TrackerExtractorData *extractor = data;
+	guint i;
+
+	for (i=0; data_id3v23_basic[i].filename; i++) {
+		extract_file (data,
+			      data_id3v23_basic[i].filename,
+			      data_id3v23_basic[i].testdata);		
+	}
+}
+
+void test_tracker_extract_mp3_id3v23_tags(gconstpointer data)
+{
+	const TrackerExtractorData *extractor = data;
+	guint i;
+
+	for (i=0; data_id3v23_tags[i].filename; i++) {
+		extract_file (data,
+			      data_id3v23_tags[i].filename,
+			      data_id3v23_tags[i].testdata);		
+	}
+}
+
+void test_tracker_extract_mp3_header_bitrate(gconstpointer data)
+{
+	const TrackerExtractorData *extractor = data;
+	guint i;
+
+	for (i=0; data_header_bitrate[i].filename; i++) {
+		extract_file (data,
+			      data_header_bitrate[i].filename,
+			      data_header_bitrate[i].testdata);		
+	}
+}
+
+void test_tracker_extract_mp3_header_bitrate_vbr(gconstpointer data)
+{
+	const TrackerExtractorData *extractor = data;
+	guint i;
+
+	for (i=0; data_header_bitrate_vbr[i].filename; i++) {
+		extract_file (data,
+			      data_header_bitrate_vbr[i].filename,
+			      data_header_bitrate_vbr[i].testdata);		
+	}
+}
+
+void test_tracker_extract_mp3_header_sampling(gconstpointer data)
+{
+	const TrackerExtractorData *extractor = data;
+	guint i;
+
+	for (i=0; data_header_sampling[i].filename; i++) {
+		extract_file (data,
+			      data_header_sampling[i].filename,
+			      data_header_sampling[i].testdata);		
+	}
+}
+
+
+
+void performance_tracker_extract_mp3(gconstpointer data)
+{
+	const TrackerExtractorData *extractor = data;
+	
+	performance_extract_files (data, "/mp3/perf_cbr_id3v1_", 1000);
+}
+

Added: trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.h
==============================================================================
--- (empty file)
+++ trunk/tests/tracker-extract/tracker-extract-testsuite-mp3.h	Wed Jan 14 19:18:02 2009
@@ -0,0 +1,35 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2009, Nokia (urho konttori nokia com)
+ *
+ * This library 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 2 of the License, or (at your option) any later version.
+ *
+ * This library 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 this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA  02110-1301, USA.
+ */
+
+#ifndef __TRACKER_EXTRACT_TESTSUITE_MP3_H__
+#define __TRACKER_EXTRACT_TESTSUITE_MP3_H__
+
+#include <tracker-extract/tracker-extract.h>
+
+void test_tracker_extract_mp3_id3v1_basic       (gconstpointer data);
+void test_tracker_extract_mp3_id3v23_basic      (gconstpointer data);
+void test_tracker_extract_mp3_id3v23_tags       (gconstpointer data);
+void test_tracker_extract_mp3_header_bitrate    (gconstpointer data);
+void test_tracker_extract_mp3_header_bitrate_vbr(gconstpointer data);
+void test_tracker_extract_mp3_header_sampling   (gconstpointer data);
+
+void performance_tracker_extract_mp3            (gconstpointer data);
+
+#endif



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]