[grilo-plugins] acoustid: including tests for the lua source



commit 8a638bcc1e2739411fab7630ff914ef2e7a7bfd6
Author: Victor Toso <me victortoso com>
Date:   Wed Feb 24 00:07:20 2016 +0100

    acoustid: including tests for the lua source
    
    I'm including real fingerprint of four recordings in order to make this
    test an easy way to improve acoustid in the future. For daily tests, the
    net is mocked.
    
    It is also important to note that acoustid needs a metadata-key
    created by chromaprint which makes necessary to load grl-chromaprint
    for this test.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=732879

 tests/lua-factory/sources/Makefile.am              |   36 ++++-
 .../data/acoustid_ludovico_einaudi_primavera.txt   |    1 +
 .../data/acoustid_norah_jones_chasing_pirates.txt  |    2 +
 .../data/acoustid_philip_glass_the_passion_of.txt  |    1 +
 .../data/acoustid_trombone_shorty_buckjump.txt     |    1 +
 .../chromaprint_ludovico_einaudi_primavera.txt     |    1 +
 .../chromaprint_norah_jones_chasing_pirates.txt    |    1 +
 .../chromaprint_philip_glass_the_passion_of.txt    |    1 +
 .../data/chromaprint_trombone_shorty_buckjump.txt  |    1 +
 tests/lua-factory/sources/data/config.ini          |   13 ++
 tests/lua-factory/sources/test_lua_acoustid.c      |  204 ++++++++++++++++++++
 .../sources/test_lua_acoustid.gresource.xml        |    9 +
 12 files changed, 270 insertions(+), 1 deletions(-)
---
diff --git a/tests/lua-factory/sources/Makefile.am b/tests/lua-factory/sources/Makefile.am
index 99e3187..68797af 100644
--- a/tests/lua-factory/sources/Makefile.am
+++ b/tests/lua-factory/sources/Makefile.am
@@ -8,13 +8,34 @@
 include $(top_srcdir)/gtester.mk
 
 TEST_PROGS +=  \
+       test_lua_acoustid       \
        test_lua_metrolyrics
 
 test_lua_factory_defines =     \
        -DLUA_FACTORY_PLUGIN_PATH=\""$(abs_top_builddir)/src/lua-factory/.libs/"\"      \
+       -DCHROMAPRINT_PLUGIN_PATH=\""$(abs_top_builddir)/src/chromaprint/.libs/"\"      \
        -DLUA_FACTORY_SOURCES_PATH=\""$(abs_top_srcdir)/src/lua-factory/sources/"\" \
+       -DLUA_FACTORY_SOURCES_DATA_PATH=\""$(abs_top_builddir)/tests/lua-factory/sources/data/"\" \
        -DLUA_FACTORY_PLUGIN_TEST_DATA_PATH=\""$(abs_top_builddir)/tests/lua-factory/sources/"\"
 
+test_lua_acoustid_SOURCES =    \
+       test_lua_acoustid.c     \
+       acoustidresources.h acoustidresources.c \
+       test_lua_factory_utils.h test_lua_factory_utils.c
+
+test_lua_acoustid_LDADD =      \
+       @DEPS_LIBS@
+
+test_lua_acoustid_CFLAGS =     \
+       @DEPS_CFLAGS@                                                           \
+       $(test_lua_factory_defines)
+
+acoustid_resources_files =     \
+  data/chromaprint_ludovico_einaudi_primavera.txt      \
+  data/chromaprint_norah_jones_chasing_pirates.txt     \
+  data/chromaprint_philip_glass_the_passion_of.txt     \
+  data/chromaprint_trombone_shorty_buckjump.txt
+
 test_lua_metrolyrics_SOURCES = \
        test_lua_metrolyrics.c  \
        metrolyricsresources.h metrolyricsresources.c   \
@@ -33,6 +54,13 @@ metrolyrics_resources_files =        \
   data/lyrics_nobodys_perfect.txt      \
   data/lyrics_ring_of_fire.txt
 
+acoustidresources.h: test_lua_acoustid.gresource.xml
+       $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) $(srcdir)/test_lua_acoustid.gresource.xml \
+               --target=$@ --sourcedir=$(srcdir) --c-name _grl_lua_acoustid --generate-header
+acoustidresources.c: test_lua_acoustid.gresource.xml acoustidresources.h $(acoustid_resources_files)
+       $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) $(srcdir)/test_lua_acoustid.gresource.xml \
+               --target=$@ --sourcedir=$(srcdir) --c-name _grl_lua_acoustid --generate-source
+
 metrolyricsresources.h: test_lua_metrolyrics.gresource.xml
        $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) $(srcdir)/test_lua_metrolyrics.gresource.xml \
                --target=$@ --sourcedir=$(srcdir) --c-name _grl_lua_metrolyrics --generate-header
@@ -41,11 +69,17 @@ metrolyricsresources.c: test_lua_metrolyrics.gresource.xml metrolyricsresources.
                --target=$@ --sourcedir=$(srcdir) --c-name _grl_lua_metrolyrics --generate-source
 
 CLEANFILES = \
+       acoustidresources.h \
+       acoustidresources.c \
        metrolyricsresources.h \
        metrolyricsresources.c
 
 noinst_PROGRAMS = $(TEST_PROGS)
 
-EXTRA_DIST += $(metrolyrics_resources_files) test_lua_metrolyrics.gresource.xml
+EXTRA_DIST += \
+       $(acoustid_resources_files)     \
+       test_lua_acoustid.gresource.xml \
+       $(metrolyrics_resources_files)  \
+       test_lua_metrolyrics.gresource.xml
 
 -include $(top_srcdir)/git.mk
diff --git a/tests/lua-factory/sources/data/acoustid_ludovico_einaudi_primavera.txt 
b/tests/lua-factory/sources/data/acoustid_ludovico_einaudi_primavera.txt
new file mode 100644
index 0000000..db0601f
--- /dev/null
+++ b/tests/lua-factory/sources/data/acoustid_ludovico_einaudi_primavera.txt
@@ -0,0 +1 @@
+{"status": "ok", "results": [{"recordings": [{"artists": [{"id": "fa34b363-79df-434f-a5b8-be4e6898543f", 
"name": "Ludovico Einaudi"}], "duration": 443, "releasegroups": [{"artists": [{"id": 
"fa34b363-79df-434f-a5b8-be4e6898543f", "name": "Ludovico Einaudi"}], "type": "Album", "id": 
"39f2c673-1387-4272-9db9-5f19d48e47cb", "title": "Divenire"}], "title": "Primavera", "id": 
"70088e7c-1c01-48cb-9103-ba8b500c68a4"}, {"artists": [{"id": "fa34b363-79df-434f-a5b8-be4e6898543f", "name": 
"Ludovico Einaudi"}], "duration": 444, "releasegroups": [{"artists": [{"id": 
"fa34b363-79df-434f-a5b8-be4e6898543f", "name": "Ludovico Einaudi"}], "secondarytypes": ["Compilation"], 
"type": "Album", "id": "6c42f326-7c15-41d5-851d-e887b544e217", "title": "Einaudi essentiel"}], "title": 
"Primavera", "id": "75e72e13-cf02-47f8-a4a7-98b916b3b18c"}, {"artists": [{"id": 
"fa34b363-79df-434f-a5b8-be4e6898543f", "name": "Ludovico Einaudi"}], "duration": 443, "releasegroups": 
[{"artists": [{"id": "89ad4ac3-39f7-
 470e-963a-56509c546377", "name": "Various Artists"}], "secondarytypes": ["Compilation"], "type": "Album", 
"id": "ac615d26-df00-3053-9462-7636375603b4", "title": "The Number One Classical Album 2008"}, {"artists": 
[{"id": "89ad4ac3-39f7-470e-963a-56509c546377", "name": "Various Artists"}], "secondarytypes": 
["Compilation"], "type": "Album", "id": "7e7b5f9c-4959-360b-8ce1-895dacab472a", "title": "Classic FM: As 
Heard on TV"}, {"artists": [{"id": "fa34b363-79df-434f-a5b8-be4e6898543f", "name": "Ludovico Einaudi"}], 
"type": "Album", "id": "39f2c673-1387-4272-9db9-5f19d48e47cb", "title": "Divenire"}], "title": "Primavera", 
"id": "8f6ac978-95cf-41e8-82fb-043624652e04"}, {"artists": [{"id": "fa34b363-79df-434f-a5b8-be4e6898543f", 
"name": "Ludovico Einaudi"}], "duration": 444, "releasegroups": [{"artists": [{"id": 
"fa34b363-79df-434f-a5b8-be4e6898543f", "name": "Ludovico Einaudi"}], "secondarytypes": ["Compilation"], 
"type": "Album", "id": "e0901be3-7942-4677-ba24-013c37894344", "ti
 tle": "Islands: Essential Einaudi"}], "title": "Primavera", "id": "9efb88b2-618e-4de2-a672-9b3faec0b0c4"}], 
"score": 0.946137, "id": "843671ef-8722-4700-bd9e-0605f53180f2"}]}
diff --git a/tests/lua-factory/sources/data/acoustid_norah_jones_chasing_pirates.txt 
b/tests/lua-factory/sources/data/acoustid_norah_jones_chasing_pirates.txt
new file mode 100644
index 0000000..3886b33
--- /dev/null
+++ b/tests/lua-factory/sources/data/acoustid_norah_jones_chasing_pirates.txt
@@ -0,0 +1,2 @@
+{"status": "ok", "results": [{"recordings": [{"artists": [{"id": "985c709c-7771-4de3-9024-7bda29ebe3f9", 
"name": "Norah Jones"}], "duration": 161, "releasegroups": [{"artists": [{"id": 
"985c709c-7771-4de3-9024-7bda29ebe3f9", "name": "Norah Jones"}], "secondarytypes": ["Remix"], "type": "EP", 
"id": "8e264957-2754-4888-bbc5-9e165cd01d09", "title": "Chasing Pirates Remix EP"}], "title": "Chasing 
Pirates (original album version)", "id": "4116ff10-92cb-43e9-b45d-ea2262b186de"}, {"artists": [{"id": 
"985c709c-7771-4de3-9024-7bda29ebe3f9", "name": "Norah Jones"}], "duration": 160, "releasegroups": 
[{"artists": [{"id": "985c709c-7771-4de3-9024-7bda29ebe3f9", "name": "Norah Jones"}], "type": "Album", "id": 
"d757d920-d0e5-4931-919b-f2dd16c64dcf", "title": "The Fall"}, {"artists": [{"id": 
"985c709c-7771-4de3-9024-7bda29ebe3f9", "name": "Norah Jones"}], "secondarytypes": ["Compilation"], "type": 
"Album", "id": "a43b1fa3-4a91-401a-9d4e-6215e65d9a66", "title": "The Collection"}], "title": 
 "Chasing Pirates", "id": "6d8ba615-d8fe-4f99-b38f-0a17d657b1bb"}], "score": 0.999407, "id": 
"d898fce6-7cdd-47e0-8a12-56b4ac402a2a"}, {"recordings": [{"artists": [{"id": 
"985c709c-7771-4de3-9024-7bda29ebe3f9", "name": "Norah Jones"}], "duration": 160, "releasegroups": 
[{"artists": [{"id": "89ad4ac3-39f7-470e-963a-56509c546377", "name": "Various Artists"}], "secondarytypes": 
["Compilation"], "type": "Album", "id": "7073d7ed-313a-4205-af5b-dc64d0d7925f", "title": "Lilith 2010"}], 
"title": "Chasing Pirates", "id": "05906821-2dbd-4613-94ad-7026a3e23116"}, {"artists": [{"id": 
"985c709c-7771-4de3-9024-7bda29ebe3f9", "name": "Norah Jones"}], "duration": 161, "releasegroups": 
[{"artists": [{"id": "89ad4ac3-39f7-470e-963a-56509c546377", "name": "Various Artists"}], "secondarytypes": 
["Compilation"], "type": "Album", "id": "0b81986d-9b15-45b5-89bf-9455ce723f72", "title": "De zwarte lijst, 
Volume 1"}], "title": "Chasing Pirates", "id": "3cbb7655-f605-402d-b3b7-2eabbdbca6bd"}, {"artists"
 : [{"id": "985c709c-7771-4de3-9024-7bda29ebe3f9", "name": "Norah Jones"}], "duration": 160, "releasegroups": 
[{"artists": [{"id": "985c709c-7771-4de3-9024-7bda29ebe3f9", "name": "Norah Jones"}], "type": "Album", "id": 
"d757d920-d0e5-4931-919b-f2dd16c64dcf", "title": "The Fall"}, {"artists": [{"id": 
"985c709c-7771-4de3-9024-7bda29ebe3f9", "name": "Norah Jones"}], "secondarytypes": ["Compilation"], "type": 
"Album", "id": "a43b1fa3-4a91-401a-9d4e-6215e65d9a66", "title": "The Collection"}], "title": "Chasing 
Pirates", "id": "6d8ba615-d8fe-4f99-b38f-0a17d657b1bb"}, {"artists": [{"id": 
"985c709c-7771-4de3-9024-7bda29ebe3f9", "name": "Norah Jones"}], "duration": 159, "releasegroups": 
[{"artists": [{"id": "89ad4ac3-39f7-470e-963a-56509c546377", "name": "Various Artists"}], "secondarytypes": 
["Compilation"], "type": "Album", "id": "f5cffa96-262c-49af-9747-3f04a1d42c78", "title": "\u00d63 Greatest 
Hits 49"}], "title": "Chasing Pirates", "id": "8b986301-f9f0-4d0e-af48-84312b86b7e3"}], 
 "score": 0.996704, "id": "0bf9d00d-b972-4db4-bb08-34e4cf9d2dab"}]}
+
diff --git a/tests/lua-factory/sources/data/acoustid_philip_glass_the_passion_of.txt 
b/tests/lua-factory/sources/data/acoustid_philip_glass_the_passion_of.txt
new file mode 100644
index 0000000..9b52b24
--- /dev/null
+++ b/tests/lua-factory/sources/data/acoustid_philip_glass_the_passion_of.txt
@@ -0,0 +1 @@
+{"status": "ok", "results": [{"recordings": [{"artists": [{"id": "5ae54dee-4dba-49c0-802a-a3b3b3adfe9b", 
"name": "Philip Glass"}], "duration": 602, "releasegroups": [{"artists": [{"id": 
"5ae54dee-4dba-49c0-802a-a3b3b3adfe9b", "name": "Philip Glass"}], "type": "Album", "id": 
"52f1f9d5-5166-4ceb-9289-6fb1a87f367c", "title": "The Passion of Ramakrishna"}], "title": "Part 2", "id": 
"298e15a1-b29b-4947-9dca-ec3634f9ebde"}], "score": 0.999604, "id": "b3179c26-c4cb-45da-b750-a5f9211a54da"}]}
diff --git a/tests/lua-factory/sources/data/acoustid_trombone_shorty_buckjump.txt 
b/tests/lua-factory/sources/data/acoustid_trombone_shorty_buckjump.txt
new file mode 100644
index 0000000..3477272
--- /dev/null
+++ b/tests/lua-factory/sources/data/acoustid_trombone_shorty_buckjump.txt
@@ -0,0 +1 @@
+{"status": "ok", "results": [{"recordings": [{"artists": [{"id": "cae4fd51-4d58-4d48-92c1-6198cc2e45ed", 
"name": "Trombone Shorty"}], "duration": 245, "releasegroups": [{"artists": [{"id": 
"cae4fd51-4d58-4d48-92c1-6198cc2e45ed", "name": "Trombone Shorty"}], "type": "Album", "id": 
"c3418122-387b-4477-90cf-e5e6d110e054", "title": "For True"}], "title": "Buckjump", "id": 
"96483bdd-f219-4ae3-a94e-04feeeef22a4"}], "score": 1.0, "id": "b13c6dd3-9e27-4740-8da7-ee766917a8d9"}]}
diff --git a/tests/lua-factory/sources/data/chromaprint_ludovico_einaudi_primavera.txt 
b/tests/lua-factory/sources/data/chromaprint_ludovico_einaudi_primavera.txt
new file mode 100644
index 0000000..89ba38b
--- /dev/null
+++ b/tests/lua-factory/sources/data/chromaprint_ludovico_einaudi_primavera.txt
@@ -0,0 +1 @@
+AQADtFE0JlSiCE9CLUN-TImDL9rxG2WO48cfPLh-hHmOZB9x5Q_-41mOWkfzkLjxXMH14yOOhMnzICa5CM-DH34W4uKLPMeH5oqKUFuI5xJeJfjx5LgKc1nw4srx5MiNfIH5FH-GMw--B1cG__jxBEdzHeEV5kjO8HiOS3mCZw_67EJTMd3wHPjxFz4JHfWDJp0oPKqOZ8TxH8iTDe2eBHrhCvKUXAnw5TgiPcODYzcuOrhPfDlqPWj4GNfxH3_wBFcPX8iTTEfSN8KTnAku5UDzLEXPZ_jxAEflLEeYpLqg_wlCNBWPUzj-4zge7cOPD0WfC--DPMMD7YQfRUj245cyPDjvwErG4Dse40xw9EdzXOKQK9SC5DlxCX14w_KCPjiP40T9w3_xD43b4P6Rm5ArBc2O4zbMRy505LgWpFKmOIEm2siHOhXho1-KnmiuB4-O5ziTHE23Fz2eH6fwPcJj3CkR5kayR7iOJ0kSXCiaOsaPH1_Q5MFj9Hkw8Rq2KEeo9MJz9DuM-sSTQ5dulKfRvMEDHf9xJmGo4JTQw_rRMgoUPsiPPcdhHn_w6LhwNM_QJzrxhB_iJS-RXA_6KEdzBtdRRzuavgT8ZcGPSfpgJSd8RGcOa9th56iuQEeO4wpOBuUNqz6-HW58VD_R62heJGeWI_q-FG-OX2guHb9UVPmD48d34jn6ovlx6XgcIVLyQ_uX4j5yJZiYHOkhVjTCMdlxpzjQHKUktAjDhdB35A_u40Z7uDv6o1ly9KGNK1uUozuaBx9p5Dr0hzgn49lmhNlRZsZxNB3RH8_xow-a_DgdIjHNHDFFFj_yHEJoFW4SPPiD_2iySXi0HC9--EyQ6xaSL8HRrCPwoxat4NGFHz-cR8LcKIee6CkemcaP5ir6VCF-Fc-S4JSOx_AZXEDzEEUehfhxPfgu_GhuI1cY4cR0HCh5NJSFDy8SXsg1Bb2yBq7yw0efPTDHHFcqfE9xozn6b
 
Lh25FugL8cZHvqWorkKrUf-4MfuwNbw4Bd2bGloXCR-C0n45Cny48eD5hnCG5eyQFd-lDpxJ-vhPWCaU_gaPDj6w33gHc9G4g-uCL8Kzc5xKZmHUodPNeiL7Dj-4KgYNJV53HiMXU_w40iW50IoisSTpKGO6wYcP3iaxXjq4yLRozlyXkieD7eSo3zQPMR9PMeB6_hxXFOLp_iP88F35EnQJ_BFhM-H71KGH98xTkdJBo37BPuO44TjZMHDHMlpIs9yKcN_OMfDB08oiqgFf3hxnKKQXoWm9EIsZviO48ePP8L34niW4yjiQ6YbXDws1_ihXVuCI8cxJS--7Jhbp6iP40HzHz1-JFfEHXnn4sqP8vBD44mEZ8bxHj4p4Q8SJr4QUkKlKMyOPsCN54hdozs3wHEenCK26nhK7PgjiF-hWUFeXEdPNFz7oNISoqlxfzh6og_yKEhuicKV7MSVb-gf-D36HLeKh8eJE2F-o3-gRfeE6g-OZoqKMrEzHPnRHLWR68GhJUqI8CF-BfMXHMal7LAenDySK3mOlMeJ__iD56g9-Ef4xELSbAkT4Q0t4YlinCdqNHaP4-izHM0XCo-RDz8YXVGDLscXcOI31BfsHh_6CzuD58L54EK5ZAnRhBN-HD6PZzG0aJSMfkF-VBRFNA--HKVsNE4o4siRLO3xH02SyBeujSi2n_ATJULdA5ceVPHg4OKRRw1-wReedBj3VtAoVcQnNGVihMed6fiF_yneok7RVC6JPoPfw4-Q7FEYRI_SGV-iCt_R5MmDnjce_OAj_fiP5kzR28N5sIU5_EfUXMgv1MkPn4Z_oTiFnfjR6OhjPDj6FGmVCXp-5LJhqcpRMuWI6kczjcaTFOfRvOizH3_xHFdy5FkWaKbCBc1OGXn2FZeCksyPZomIZ9Fxf-iP5sFwJfiR_9DC6Ec54Q20H2F-vMePo7h1vJyRM4JIIVfweZPhPB96ouTRPBOe48TRS0
 
ekJzqS4xmJK080nIfVHv-PP8Hz4DqeSTj6jGju4syPP2h2VH_wNRbuDTUu-PhRiy_O4zgO_ugc5UitiSvEHyGlC4-D50ZjBowkZcGJ9kFz_MSZ4ssRv8auNcP1oE7DBc2NUz_07EF-PDwqJckZNFOHJw-OL8fJo4kSdGEeIennBG-IncKPZvEFjUouCr_wHAzJFF54VNTwHD_arkMzPfiJ8-gXNKo64sQpCz-aMTuYBs8d6NXwILxw_AGco8-MO8d1THmOPrpwQf2DKwnTGE_MFP-IBv1ySbgVPAkuHD3CnCn0B38e5OF-OMefIj--I_xhHrZ21HiU48GjC0-DPriDL_ATH_1wXiNwH40SLkb1G0eP5niOh7mRfHmEPB_O0vA3HFePa4_R9OhROLCe4peDGx4ZhCmPH82loviRD8_x40X44zah80jr4yxuafjR8yjqNA-e2PiJ53Co4jjSKz2SJwmP7xOeJPglNP9RucXTRDiP8zgAxoBgCHAKrEMKAkEcA0AQRoCSgCSEBHKMAIQIAIgYYgRgFCkkHEUKCSeBQ0AJDJRzCiEChEGCIMAAEwIxKqxASgnHGEIEEQGAoYiCwIASiAIgHALIIQqIA0YYoIAQyCFqBADCOWoY4QBAZahAShAmhFAGIcCcIAEpp5gCCAAAgGJNCQAUAYYYwBBASjlLBDCMAAAIYAQYjJBCRAIBkFJIMQAEUE4wwYRSABABGEcAAKKEsMYJygSRCCGUBACEACgEYBAAwYRz1CBjhHMAEQmQcIAIZgABhBhFAACAEAaGIox4QRhghBgggAAKIAcQcYIKBZQSACBhgNGCCYCoyIASSSxwhhGCBGXMEEeQQFACALACCCHgISMCEMQNUkwBICXgSEEDpBEEIsOAsEgQAwhRQgCCCFVCGFAEUIxpZcAQ5EDrBSAAMSQpEEQYQACQgoBkDJQKMSiIEAowBgVwA1FikIPECQAUBEggBpRABAIAgAK
 
gJKMgQ8wIwgRCBhEhjABgMAwEkg05IgRRwDCBBGPMGuiQQiJQwABqgBokKBAcsGQEdhQBQYAxAABEBEAMPgOYEkgoRokgSkIniDRUAQHBIIoBQYgSgAkJkQRMEGGEMAxUwxEixShmmRFAAAOEIUYgp5QyAhCiBIJKAKCAFc4ggJAyhhFkKFMaEEaIQwYhx4BAgCAAHBJMSEkAEIoEISgwgglAhDJAMAKEcMgIIBAgAEEBDEGGGCCAQARpIBhUBgkBjCDMAAEAcQQjhYwQHABAgFAOgYeEQAZYwoBQyglOBCBaGCExoApkgYiQhAggCBAGSOEgMkgNQwAxzAEkFBPcAC2UaIYAI4wRggFrGGEIGQQYEQIYKBkQTIBHmEGACQYBQUYKgxCRTAHGiEKMCSEQU1AAMRCgAAHCpDCEAEcARYgpgAwABhBgDFAIUQWYYYg0YgBiQFADADOCMuQMIoQIQaBLQAkrCDBkKCUcYwpSYxUAggjIjFJCEUGRdowIJJAgRCEAgJIYQA
diff --git a/tests/lua-factory/sources/data/chromaprint_norah_jones_chasing_pirates.txt 
b/tests/lua-factory/sources/data/chromaprint_norah_jones_chasing_pirates.txt
new file mode 100644
index 0000000..020f867
--- /dev/null
+++ b/tests/lua-factory/sources/data/chromaprint_norah_jones_chasing_pirates.txt
@@ -0,0 +1 @@
+AQADtEqiJY0SkcjRVEpw53gOPblwwk6WHTn6H80zIeOkhIemwwi947lSfHnwTAfXo0cYVQmO-4IePQnK5UeYhz0OHk5K3ImOtEyPD7oewksu5MwcZDkcXsiNRpMS4cgXXI9gcmTwtIb-I8zRMR-yOUmO5od2hHrxfEGXPgbX4uh1hLEUDbqEPA9-lK_h82DE45F25DqaKtCuCHmCpkL_BJfMhHiWHxWoh6hF5M7x59DIw_WD8Nkq_Gh4gyEzI055NCGVQXty5C4a90GZPUEp5Wj640wvMHsQ5sLzQFWYI8xb1OlDHP2HJioLkkH8HWKXHDmHPocX5VFw9UEj5viPpg6yHLry4M2PMHxQn8FDlDuYpGFC42kQ5kqQzBquRCGaH-VCRyjDC02M80eWhBy0I--CHyXzwUyaC5xkCz6mzTHiJjN0SUbeJMOTo6mOcsezHE9_JHQzIiKVvfhzMHnyEI8XeNJTmElJ_I2RCcm2G2OTyMe14MqIHk2oHE-UfLh0JTj87IieSFAv_OClh7hyhNmmHn2S4hSaowyHywcP50nCGRkv4xJaJWgmXQLzdNBSZaJwXEf4JGiSiSyuLDsupQz6XEKY-oEe9IeWJxcu6sKjXAjThMRZ-E3h_aiVPcGPPCHRL0eYxMdTnHuQJw827YjV0yjzoPmGWtOO5hzOHFceBd3R5EfcZtCD1cjeCPOS5EFTkyifHo8uoS-JRsljxFSOH-IzxFyE57iONfqC57iQij0eQnbB-Yrw3GCHMIxe_GhGU8eZHX04NFmLJ_2Rx4dmmcjT4jlKvQJPL7is4EGTbPiJ76iTPBGS2RfSB33hJw-FO8kjPHkUnDmSpWKG8Dt-44_wB19YXAma-njCXEeljHhw_OgjJ8iSUdCPiHpKPEqro41yBh4fnMcZWGGCE8niJkceKbHwMWhiXSi1Y0_IIh9T6CfS4-GEZxfOHCWPR88RSopG4npwH36C_cKNTzze5HgsQ
 
d1P5MV3POmEH82NPtLxDw8fRIamX_gRWszw44mcIJR8omHO40px6CTCxFmKTXOLqkO9JEJz_DmeLGUSnD8i_tDs4EJ8IRT1QD_-DmHOdMh5uOnhM4cmB1E74mL2oanDwWHyGV2YNBL6o8luHAkrHrkW4taJ8mjyENN5NMkbMDlCSocuN3hyMFaOhlMe_GDePMIUxizOlEL-BD_8DA-V4IjdKviDH7oQ18GUBH128FJxfHiyJ8F16WhEnCJyRkejH-8TaNOOJpLxMOnxZ2DyRCfKRIyQ10IoOkeTlHiWCjpy5fhyXAr6Hc1z_EjeI37xCxdJBU8U7HiP5M2RG8_hs8W3qLj2ZXiio2sQKQ904sGddMguC9P1wz8q6Rp-4YoYhImKH1p-3EW-RApxKhcePwhpM0gxvTt-fNlxncTzI82CXyl0W0KYD32iJgEffDzu8Qi3JEcTUtCfMMcXsLIVvKnw4IIdJcGpDNcx-knRNMkFzc6JFz2mjEkufD1-SEmYIPTWoO9w8kGfJ8SPR8cpoXl-lJl-xGKeGEnOF2UiKfCYDzmfFFquIw9xNMtQ8gl-Co0bXeiJiM3x85AuxUH8ozy2U0ftoNWJJpIpdOaRRMkj5OiPvaiT5MEonhGeoA_CHJcOtdJx6UrRE2Hqa3hOfHVQC36CPjF45THiRIc6JV0QZpKsDP2wH9ceCtd2zHzwo0kmHpVeCXl4Hcl-NE1z3OCTJxo87nh6PCeyiDnEOkd-HH-EPnnwJS_en6iVBY30MMFznB2uHLluSNEfhBnz4cviSdgT1IIjhhT-4rFI2InQ8kL4EI0iRcLpQDe2W0zwJFEqPPPxXIVH4ZGQnReyX8WPn6jSa2iyRGNR6mh-PCWiHU-CWBv0oYp3vNDzIPR3PMczNNeFXuGOP5izlMEvJDPCpD2uJMmOzjn8PAmo7JLQEw_ywydUZwiVHz_qKEoc4jKep6geicGPmE3wDCL06MepLkQYRv
 
nw4D_4J8hzQQtJhDxGH48uvJNRSZnI4HqP84YRBsmfFz-JR3kMh1pqdFcwJUcePhHEHdm7gqMzPDz6PPCPIt_B6oeWbFmK6ciP5qgVvDou4djzIJ9O6MclKkKYJ0L482Ahhion5MvxD9eHLrrwg3qD8AtU5D-4Kw2uFDVBLTrOG86pwM-C8Az0I3zwROgX4wceHc0irajvIOnxB9kThUEfFI-CW0i_HHpIIs-OS3pSPPmxzkePMGo2PBG-4yqDci1hzTkUdUdJBs05fElOVJQgXkOfI8eTE2MyPTg99AhT8dBz_MXzBLWEZs-O_BnaNJmEKcdN3MkDPkf3HmHCDbqRZ3pwkriPk8TxcHlx7kh_PFehMw8YJ-yMMHWOBy_SNVbwbVfwxIfmhIEn5cjToPyDZ_jxnLgyNEfZ4amV4M6H8BMNcVJyNFGS4w9-aFFY6WiXY1aS5zjFoUeYOMM3vDme5PgiUghTe1D0OPgepE-IK9pxvggP8UmSI7xwHo9yKbiUB5ORuhEqKiN-vHsyqPKDkAmmuNxx9mh-9Fl1_GQwZSlCxTr-HpodpE5yeNkREg9jfBGuC6d0okl6PBKuPXB19IQe4Z3QzCiz3HgeQr2CG9ET4roonIdfC3wUfAluHl0uCU0U4vgPfkfIPoGURBn-Ig-H_QrmUNNRwuCNrRoe-IlyhMx1JP_QNUUTJse_EWdKpOxxaXhzKBclo3mgycdDePqgHz-mH81zXDvxKJmHytDz4K8Q8ri-40xxwe_xZOrxM9h39HAQaVOWQ3uUIA0l_Ing5Uef4jqe5miOUPGCXz2UI8sjFtt0mGqKsg_-40flotF5_MGPnBeacTm0niqOXBf2gzpxhsee4T1K5Y3hjEf-HP5QOUSuH_GS8GjGQwMqACOAESEBEsAIRBgxTFEGgQFICCAQBsZ4o5QQFkFMkAIQWGCIlIAoY4UkijCDhHAACCEQA4QQgYACAiChqBCOQCMMIQg
 
Y4iAwEFiBkGBGAQKIBMYJBIgQEIgFCFKACIGQY0YgiwxDihADACBAEACYIgQABIUQhAiAjADIAgEYMeAUAQEAQjFmBBAECAGFEAAQoBwgQCilgAKEACQAYBQRQoChxiEEhBAIAMIggkopQhhy1EBCGAKEKACEYYoAQBgE0BghEAEACKEAJY4ZAplCCgBAmIVCCCyEAAgJZRCQCgkCoGbIIEIAEMhQgRAiwAhBgRCIIgiBcFAQ4gRFAigBACgBAQMEMcIYpQ1wBgDDBGAAGAUYFwgBY4Ri2AjGCEAOCKIIdQhAZ5jDwhEJCQEKIGUEJMQgQSAASDDwBBMEECmMAMgpBBhGABDKCEDAEIQQA0YIoYBRSFgiAACAECAMAEIgIIBQiADBoQEECACMAg0IYYCgAgAioCBAIIYQAQAAAYghBAFAFUaKECEEEAAYCQBBxhEhDBAKIYEQgIQgApQRxhhHkAFGESEEAYIARAAgCFBDGAAVCIMEIAAwx6BgRAhhAAJCAsYBAoAgBoRQyBFFAAIUMSEssAYg5IQywCGiDBIKEMaQkQAASQgBQICGACCCGkAAMsgapwQCwBABCBHIACkIZQARAQkCxijDlHDOIQOEEQAIAIhSQkgFKCIAAuEIUQZw4hQTkAogLDMEISQAEgoQRYRhiAEGEBLEECkKMoA5A5BiQhiETAOCAQKMQkQpBoEBCBDCAFHMAQAMoQQwERBCgAAiKHIEWEAIAEwAwwRRQCECgFLACOCIIAQIAQxAwAgCiGDAEIEUcgAARQgxzCACpEQEGUYEQAAIiIAjQFAjhRIMAYUEgBIBIokiChNgBHBECYEQABAYoBUADBrCgAMASQYIA04hgBQCQjACCCKIGiIAdsQAAJQwyFBGDCICCKCIAMoZ
diff --git a/tests/lua-factory/sources/data/chromaprint_philip_glass_the_passion_of.txt 
b/tests/lua-factory/sources/data/chromaprint_philip_glass_the_passion_of.txt
new file mode 100644
index 0000000..4f0f9a9
--- /dev/null
+++ b/tests/lua-factory/sources/data/chromaprint_philip_glass_the_passion_of.txt
@@ -0,0 +1 @@
+AQADtEuUMMmiErvxIxrk38iN97hAV0Hq4tIO5TPywsfLIuwdvPSgI0wT-pg8tPdx3MbzB-mmQ2uI_LgZY-LhODt63EeuB73x-9gJcaCJ8DHQPTDv4T_O4Eb0WcIfC99x7D5yHs6P_tSQfTi0fIj0BS38oz4eHr0kpKhHFOKPHzn8w8c3VgC2zzhu8IR_hBah_AlyNFdy1BbRwudxbDzy4JXBn_CE_fhx3Ap6QT_qRYZt2OgS7jh3fAgzSkefpfiO7zhaHs2O78N0-NmD-h3-HwfeDCF1JLweMD-O60E_NHVO8AfCB_Jj5DiXlPDxB_uIHy9OCOfRL8X_4LBM_EZ_mBEtuLHxvhmw_fiPc3vBJ0eIJMeT4PjRzqh0YYntiNjsIx9EhCkjXDi148kW5McDIY-GesnR6HiO_QGP_XDT4MejI9mOvE_w8Kgo4hM-kUGfE81x5EfyccpRw0_Q5ymep_gtPE8ifAhPo_nx8DhDNCN3PFyO5hdyM0LOpgo8HfqS4MR_5HjxPIj_oE_RXA2uSBqe5NAthNlD9Fzw4FIyPMkxyXGQhww3SLl0IR_2E3UO107wF8-J2tiRPMh-zEF5fGvxH-c2_Ni-I_QhPUqLmHzw40nwCbkuJEdX6fCjo2K0C08esB-OPTXR5EcfJN43hH8CMxtcTMcH8sH0oxmJ5FEexNyMF85dXBmTIF-O5HjWo0wG9EeOZPGSF32GH3P4gP3xYXIfpKWgHbniEz_C67AsaN_x5Ph21E8h__iHZjlmNY7BZys26MgVPEdzNuhnXDgeHeFmC_dxdN9RG2Zy9A-qB2KuFEdKWMDDHT--K4R9FT2G_EjEMRF2nHiSXEEpqyGq4weaxkfoQ__wP_CPO4eO0NFUfD1-HJ1yVFKI5iGOXDmSKz9c8Sh7uO_R7_hG4riwJcvxbEJJ2mh-PMOjI9fyovmKkkRyPA-eL_hgH6MpSsLRv_CJ4sefoj9s1GaO_kJ66ThE_
 
qgv5NFQNCe-Y7-VgNyHvcfdoD9e_PARmviJ40ToLXivwLxxHf0x-cdhPXBj1BykPTF-XMqDPTmu4-gN10Ed7QPyHOLx5Hh-aI4YHLnQ4h-OJuSOPhd-JEfIY6se_MQrwxeFXscTMFnRZ0GTO-iWHqfCVGAbURKaDz1zPMdzIc-N2jzs9siPLxs2Rc-LYx-L_vhB0jiFB8mHXAmjSInwxIyiYDqDJhd-_PiD53hw4sG0UKKRcYMeRPjxWPCPbjriSof-4LvRx_APNPXxD7-D_mjww--DBz-eC3UDO0W7zIR-LXiE5yKSCw-LWlkK0w8q58H94_ix54F_HEzOEOGR6FKKP3BVXOiPpsfhOsepHBfM58JRi3lgqg-aPXiF70JzBd1zRDySZUeZd7gPNNaPCm-OP_jxZ_iJ5vvRP8F19PDRmUGlB_tx-PCD5kSC3A9GH_2O5nxwHz_a5bB-ws-HqnkC5ND6FDlV_HAPf8iDXzgLLcnDIT_-4Qv8DA_OEzkfQcut4y2eJ8iFHzeNw71xxsEtfIBP_EcdDe_x44erB3mSHcnh4y8eP7jQnEe5L8R0Es0XlEezPDiz45OC_wzhT0POQc8j5Bp4XD_cJwHnhfLwPMcp_PiF5tSiIdnRJE96aOKR5xfeBGXaDs1rjGku3GWC67iSPChzJMuPPMUVXDyuKAzqHQ2-Ilc4QdfxE8_E40EPC5qJJzneHNpwIbzwBF8ehJZkwdeh-Ud-bMvx7miOPsgPWXmQD33QH_3RLNwjXMfRB82N65ijGLWk4JaQC8oPO1kqpJo5ZDnOFM1nHF6TxNAYDtor-DFynMjTxfih5Tt-I_9R5pngHz_8FpfRrLKCeIyy4iXUHz2a40ePr8jxskLecBApHfGyKEdzXMflgLWC8CfERkNoh_iPc8KJ-wgfSUfyJYePLuFS_Dgt_EEGHzd-9Inw6EE3PcjRJ0OYKHGOH013oZ9w9mieHc-NLn2GU4be4E
 
cO88GvI88hJV8QMifOg2_QVKhONLISVB9CNFUOPU_QzOiDZxxU8UY_vHCOsiODa5zwmFAdwSqDEw-aHn2g5Ue3H_fxJTuaEtpxDs0UQdNO_CH-YyfEy8Nz4VxEhGeM5hJyPmj2HFqjqJgHlwp0duCPNPQxj8J94QuVwS-Oq0-Q85BR6zjsZuhtPDmR3xou1hXq44f_GVd79MB_PD_KG64uTGofnKgs-OiLX_iKb09w8Yvx_OhjvEgr9Cd05OzxoxZDNJdxnHvw_Cu-ZEfYCdvWQ_-QF7uUoz9YPMlDVJkSK_iL8Dp0MsilC2eOpjYYpzFu4YfzEe9w3ULD3yiV5JFwox-RvpCeHWF-nJgfXNNQyps27Ievo18O3siHdpkDT2oNVw-k6BSuJMgjHZXh72jXCuUfNMdzJMsRPvHxRWCT3DhfHMnyWAi_44lkXEfrACeCAQYoEIjyiAgBihAOCUAQI8AhIxAjCgGgkQQIAAaQAQgpJxgwBAAABwFIKQEEEdYLYoVg1CiDCBRCAAWkEQoyIS21XggCQRDGIkINcUIAAAQwQFoliBJgMEIMUgIcJIQA1DImCCAAOiQYIUIKKAAARjFGtAMGCkCEJEcBSgDDQkADBRSEMLIMUqwwIpBAygADgBJEKIUAQUAY4ASDAiAGqAESICOZUJAYB5QgyFkrEFPMEC0UAsAyoZwgjAhiAHbECKIcM8IYBZBQgDFg0GHGKKEUNIQIQhxQBADijCEGEEyEEoQSCFhAWhBWkiLGAeEMIQIUZRkiTCSsiCHSSSQlAIYIRIAQRBgQNXMGIEIYEAAhBogRhiRkAMEGKQGeNUJIxJQSRggBYCDKCEYAcIQwQq0QCUkiCIGEAcoE-IIpgoAFVlwhCXKAAICgBIIBZZ15CCpEACLCCCCEQQISoghQAgCghAZIIKgEEeARRYGhjHRGDKTAKSIgIgoBYQUCCgALAGCIASJIA0QRI4hgVDgAsAOKCqk
 
UAAYIhYCgAgiFCBFECIEEEQpQ4YiAFBEAlHAAGymcsQgQoggUAAmlCDEIKAWUI46CIClRBhmGxBEKAOAo8AYBCxxlCAEmDNBQKINAJwQQgIRRAgygBABASgCEUIAgQAhZlgqhCVAGCAIJQIJI64hihAEEGWJEECASUURIQ4gRBgCjBAFICekEUYABQZhQiCjhhOJMqIWEAVIQAYwQAgjDjGLCCAYIEVARIwBiRAgkCHAMCQAIAQQy5ARFjDiBRBAEEgCIEAQYZKTyDhDCjAAECeGQE8AQyQwzzEmBAACAEYEQIEIAYgRyQBBFBEAICSGAIAEpYJwgCBCAFBAAEcWEYIIoI4hgAECBgCDCUFSUVIQqIAEBQBCjoDIGCEYIQMQAJYiFjAABBAEGCUAQIVQJZogghAghFDDCCQEYIUggQJhDRCACAA
diff --git a/tests/lua-factory/sources/data/chromaprint_trombone_shorty_buckjump.txt 
b/tests/lua-factory/sources/data/chromaprint_trombone_shorty_buckjump.txt
new file mode 100644
index 0000000..f5cd2eb
--- /dev/null
+++ b/tests/lua-factory/sources/data/chromaprint_trombone_shorty_buckjump.txt
@@ -0,0 +1 @@
+AQADtEmSKJmWRGmC91BzxHjCTsPVZBooPkNpCVcWJMpvpOeNUudSPBFO9Cr8onaG_EQtiKMeY64wscqhH5d0fG0Qd6CEX2iKC7mPtMfr4Qe-o5yi48sTRDqalNCXTQj7wOhDPDnya8WjJyiZHKoneCKuo5Qe_BhRavvgZzk69TnKF45Uoe2DP8EzD02dC3VyTBofbAoToU-OS0SdI-VxMTOObs7xKceXJwhzTGIIPZsQ9kGDh3hyfLmG_E9QMgpUS4En5MlR8sF_7OgyLYefOSHMHqEKPYo0XE8RZkef49oePBdC7ZmERiGhR8E9lOJFUNQhTjp-eHI-MP-g7_iD6TmaXLgfXLkWNJN69Me15ESfp7hh6Tlq6XgirP3QLkeYH0dYSg18QTtxJcO3K0FzlPioFB_Uhc_RKD_RE39x5Wjz4AzEfIfufEFZXHmw_mjcoMf74LNgNxd-PEd_fDFSNyW6Hjsv9LDr4TVyHfIWWMil7KiojMKDBuGJOoeeD_czwkqjHP1y_EWpg6IeiFUORx2kUM7xE-9D_IgUPqguXA-H5yLcP7h35LnRK4elH3qKXseTYy20KtHhI8yPRxFx7cjFYeqipIGy_Cjx8Lj04MkTVLrRyNHxHGcvlNsFOg8u5sU3SMkelXiCP2h1mCsq8niGWlEiY8ovPMIURjn67BjN1KgPi5GOtNPRiTN-1LzQ2MizD3-go82iFH-oCDf8DLU6XPuGVTkj4tSKylFwuNmN5wscCf9wSYGWJ8ezJ8jRN2hYfbhyfDuaP0K9E_kOLc-OR62x-_ClHLaEalwq6Ed_pOU04T-e41FxZWkQ1rHwH9qzHA7Fo5M-EbMoBw8_VF6Og2KSp3CoayiPPweT86iV43s4tMfzQfzR68YbOsN-NDweBT8-hOrxJTGO5lk63A_sHd2OsHzgCzrxRUsHswkVHM2Y4ZK64vksXH0iTGSILzgJbw8efSIc8XggVtLR53ieID-qK
 
3DFo-XxC_WPZtOFUHwgyhH6IFePqVqNP8jDbMOhtkEsHf6J53iSDm1UB_mFH2WXQ4zkC1O1LsEjb3gkfegJxzpYPXCmXCh1fEdTBVJ-6H-CvrjywOqPSX_wMYL2w5H2wNdxRcFj5Uh9oz26MA9uw6lwF-6GdGdxhR8UPcG54FYY_MaPnh1EP8LZwV0U-LhxSYRIhceT44d4BrUy430Q7vDkqKh87Ltw6UNqCjfx5glkuziqNsZ29LOhE0d-48sTVN9T-MebId0ipUGL0RmakVGh_UP_wHHGoySDXobV7MG4wz8Of9FwQ92Nlzm0Hj38DU8WwycJvhzehRLMFT-4UyKu49C1Gc_RE_mJ2nD249-Q3zDHFCUlCNqHhxkoHSXzCI8OzeLxErbxD-_B79A3omqE4zn0HR_Cz9h2VA0-5PGDJls4EopJ-Ag_NBd64eg7ovmYFT_R5xKaV5SQf8IOTU6UwePREceXXdDOEtePzTnOD7eh4zxO5mgi3UMvI8xbXGGKC8_h4zTi85AvhIlDpXh-eDt-7Cn86KiN8NIKLVeQ42KMbnoRxo2J28P1QaUyhHqxb2h39HrQKDgVhHlRStlxHVoqFX2UtOh1pPGDKyueRgt-GJekpfiO1LOQ6DoqZ0LtGHZ0o6JzXNyJ-8PTFCHVFFqOW0PGMMxx43pxnjgv5CtcSTl09CziLTuu4X0EZzv65eiJMFty6FqOMNFTdFuONyraqsGDw9bCGaF7aM2LdDd6ZTvuDc0ORilT4VGiJ_hy4QgvQkrGI8d3vOuQ5_ihvQjzOPjRPwnSLMpxMlCpRfCWPLC0C312XM_xmBEcSdFxhJdgRiHRdwt6WPPRRyER70ay9DpKLriCykwfGFXCPvhyoWQepP2hPch3nKgVxFqNNod-dHmEdN1xXQquIz0NT1tQasefQJsUNBEzPHiuwM-HE9Wjw68UnD3MF5_U4c5y6GxgExOZ4UOYPEXJRBnRST8u5s
 
GPnkL4HM0P1UyFPhvOBOsrXMeXQz8JfjHuLTjyiEF6_KCkC2-H4wlsfeiPX5iew8pdoT-eQYsblNKOX0G_o1axQm2OpuPQAz-uF__xo4c_icZ_rFqInIR7PFE-uJ-EwJ8HORyeY3p04cyIPvDRZUmeQJ_Qphrx4y_8D1qVLEU3w_-EN3jEBzd-qIsy-EdIZseHH7WDMCNx5biqNtAu4Xfgc8NFPDQkP8LlTbh64srh69Cl47vwDj-kJzp-XDh75Cl8Uii1HV-KJkckK3qEF7WyozcUHQ6Vo8-h43KMI_7RM2NgPBu-TBOcIaQUYhJ1-EJHbxLqF-JDHNFxJTf6HBeZo3_R3MiX43FE1M4hw_GLeuPwTEV_mPuCD3Z4uM7xHfoOMzt6Yl5O_GgeVNVITXig4-hpwZ1x9Mf3oqIP28cLLS8-aNcD50daH92Db1_QH_5QORSOHtEVwdxxHhJrEa8ifMeO45ESfMZ5fCGx4kQPWkGfHeLW4cT0Yv-IHuehx8YPEzhFiM1Rqw9ehGsIH8URad2Da0qgC5sO5wibBY11IQul4jw0MkP6E48Ob8KV-MiL5lehHpeOg14P1dGJ8vBV5JEP57jjIOV4_MObQ9-PY8c-tFKOH78OvVHQFzoPHxdbdEP1NAPVDT9Eqhf6ImfQGz9uCelICs_xQXzAnNAfHW9yAkIEIg4BAgQgDlhGDDJYEQMoQoIRYIUjhljCBFLGAKYMMg4RAARwjBkGDEEAIAdIIMgQqhhDChgABEEGACQEEIIJpwARiDAFhDLACIKEEVAxYQAiwhhABEEAGWWMAYoCBARFRAAACBAEKQIIAcZAoYxwQlBGiGEIEMOMIQgUIggwSCggFFLCIWEMAwIZRgAASBFAgILCKAUsEs4IIwQDhBnkHDWACQUUEkpAJEUSigjgCGFIEIKUAYQAgAghgxhKEBACoYCQMUQJhAQARgggEAIIAGOUQkAYIYxgxhFjqCAICEI
 
QoABYAgBhxjHjFCIBAQEIJQIAJIRgABkgKRFEOAiFMkwBQZQSBCmAFABGKQiAEEYwIaQyGgphAAAAGiMAMcoQIJAAghkKlBCAEAYcEYpoAQCDSAGAiBSAAUAIlURaIRwAAAABEBJAAAmMEyIIgUBVAAmIjFEMUMCFMEAhhojSwjBBHGCMKEUYEMgQooEBxAAnCBUCACQcZoAIAgAGRhAiBEAGIKqMYAhQAoR1zAlBiAIGMUCIAQYAYYgwQiEEhRMOICOEAAIhYJBBgBDDBABECYCIEIgIgRSoxglAkDeACISgQwIQJqAAyAFECBFCAGEUIANYQaABCgADCABEKcaQEQIJowBhhioBCAECCMAMEBhaBABhDggEmFCEOEMIIgoVgRgDZhKBgFRGCMSIM0QgxhBSACgLAEAKCKUAEIYBQRQQXHikgACAG6AEAcpwBwwCghAglANIOAYEQIApYYhQDgQhASBGcAEUUEQRZ4RghFIAqAYMGACUEMJIYJQShgvAoCJIAEeQQEZYJYxQQAQHDDGCCKCItFggAIBBJiwHIENMACQM4UQRhBwDkiNhCbSKASUMQEgKgIFjDQgFiEDCKQWEEQwiyARxAAKDEABMASGYIp4h4IUASAg
diff --git a/tests/lua-factory/sources/data/config.ini b/tests/lua-factory/sources/data/config.ini
new file mode 100644
index 0000000..5bdf0a5
--- /dev/null
+++ b/tests/lua-factory/sources/data/config.ini
@@ -0,0 +1,13 @@
+[default]
+version=1
+ignored-parameters=fingerprint
+
+# test_lua_acoustid
+[https://api.acoustid.org/v2/lookup?client=ACOUSTID_TEST_MOCK_API_KEY&meta=recordings+releasegroups&duration=445]
+data = acoustid_ludovico_einaudi_primavera.txt
+[https://api.acoustid.org/v2/lookup?client=ACOUSTID_TEST_MOCK_API_KEY&meta=recordings+releasegroups&duration=160]
+data = acoustid_norah_jones_chasing_pirates.txt
+[https://api.acoustid.org/v2/lookup?client=ACOUSTID_TEST_MOCK_API_KEY&meta=recordings+releasegroups&duration=243]
+data = acoustid_trombone_shorty_buckjump.txt
+[https://api.acoustid.org/v2/lookup?client=ACOUSTID_TEST_MOCK_API_KEY&meta=recordings+releasegroups&duration=601]
+data = acoustid_philip_glass_the_passion_of.txt
diff --git a/tests/lua-factory/sources/test_lua_acoustid.c b/tests/lua-factory/sources/test_lua_acoustid.c
new file mode 100644
index 0000000..a377460
--- /dev/null
+++ b/tests/lua-factory/sources/test_lua_acoustid.c
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2016 Grilo Project
+ *
+ * Author: Victor Toso <me victortoso com>
+ *
+ * This library 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; version 2.1 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+#include "test_lua_factory_utils.h"
+
+#define ACOUSTID_ID  "grl-acoustid"
+#define CHROMAPRINT_ID "grl-chromaprint"
+
+#define TEST_PLUGINS_PATH  LUA_FACTORY_PLUGIN_PATH ";" CHROMAPRINT_PLUGIN_PATH
+#define TEST_PLUGINS_LOAD  LUA_FACTORY_ID ":" CHROMAPRINT_ID
+
+#define ACOUSTID_OPS GRL_OP_RESOLVE
+
+#define GRESOURCE_PREFIX "resource:///org/gnome/grilo/plugins/test/acoustid/data/"
+
+#define FINGERPRINT_LUDOVICO_EI  GRESOURCE_PREFIX "chromaprint_ludovico_einaudi_primavera.txt"
+#define FINGERPRINT_NORAH_JONES  GRESOURCE_PREFIX "chromaprint_norah_jones_chasing_pirates.txt"
+#define FINGERPRINT_PHILIP_GLAS  GRESOURCE_PREFIX "chromaprint_philip_glass_the_passion_of.txt"
+#define FINGERPRINT_TROMBONE_SH  GRESOURCE_PREFIX "chromaprint_trombone_shorty_buckjump.txt"
+
+static gchar *
+resolve (GrlSource   *source,
+         const gchar *fingerprint,
+         gint         duration,
+         gchar      **out_mb_artist_id,
+         gchar      **out_artist,
+         gchar      **out_mb_album_id,
+         gchar      **out_album,
+         gchar      **out_mb_recording_id,
+         gchar      **out_title)
+{
+  GList *keys;
+  GrlMedia *audio;
+  GrlOperationOptions *options;
+  GrlRegistry *registry;
+  GrlKeyID chromaprint_key;
+  GError *error = NULL;
+
+  registry = grl_registry_get_default ();
+  chromaprint_key = grl_registry_lookup_metadata_key (registry, "chromaprint");
+  g_assert_cmpint (chromaprint_key, !=, GRL_METADATA_KEY_INVALID);
+
+  audio = grl_media_audio_new ();
+  grl_data_set_string (GRL_DATA (audio), chromaprint_key, fingerprint);
+  grl_media_set_duration (audio, duration);
+
+  keys = grl_metadata_key_list_new (GRL_METADATA_KEY_MB_ARTIST_ID,
+                                    GRL_METADATA_KEY_ARTIST,
+                                    GRL_METADATA_KEY_MB_ALBUM_ID,
+                                    GRL_METADATA_KEY_ALBUM,
+                                    GRL_METADATA_KEY_MB_RECORDING_ID,
+                                    GRL_METADATA_KEY_TITLE,
+                                    NULL);
+  options = grl_operation_options_new (NULL);
+  grl_operation_options_set_resolution_flags (options, GRL_RESOLVE_NORMAL);
+
+  grl_source_resolve_sync (source,
+                           GRL_MEDIA (audio),
+                           keys,
+                           options,
+                           &error);
+  g_assert_no_error (error);
+
+  *out_mb_artist_id = g_strdup (grl_media_get_mb_artist_id (audio));
+  *out_artist = g_strdup (grl_media_get_artist (audio));
+  *out_mb_album_id = g_strdup (grl_media_get_mb_album_id (audio));
+  *out_album = g_strdup (grl_media_get_album (audio));
+  *out_mb_recording_id = g_strdup (grl_media_get_mb_recording_id (audio));
+  *out_title = g_strdup (grl_media_get_title (audio));
+
+  g_list_free (keys);
+  g_object_unref (options);
+  g_object_unref (audio);
+  return NULL;
+}
+
+static void
+test_resolve_fingerprint (void)
+{
+  GrlSource *source;
+  guint i;
+
+  struct {
+    gchar *fingerprint_file;
+    gint   duration;
+    gchar *mb_artist_id;
+    gchar *artist;
+    gchar *mb_album_id;
+    gchar *album;
+    gchar *mb_recording_id;
+    gchar *title;
+  } audios[] = {
+   { FINGERPRINT_LUDOVICO_EI, 445,
+     "fa34b363-79df-434f-a5b8-be4e6898543f", "Ludovico Einaudi",
+     "39f2c673-1387-4272-9db9-5f19d48e47cb", "Divenire",
+     "70088e7c-1c01-48cb-9103-ba8b500c68a4", "Primavera" },
+   { FINGERPRINT_NORAH_JONES, 160,
+     "985c709c-7771-4de3-9024-7bda29ebe3f9", "Norah Jones",
+     "8e264957-2754-4888-bbc5-9e165cd01d09", "Chasing Pirates Remix EP",
+     "4116ff10-92cb-43e9-b45d-ea2262b186de", "Chasing Pirates (original album version)" },
+   { FINGERPRINT_TROMBONE_SH, 243,
+     "cae4fd51-4d58-4d48-92c1-6198cc2e45ed", "Trombone Shorty",
+     "c3418122-387b-4477-90cf-e5e6d110e054", "For True",
+     "96483bdd-f219-4ae3-a94e-04feeeef22a4", "Buckjump" },
+   { FINGERPRINT_PHILIP_GLAS, 601,
+     "5ae54dee-4dba-49c0-802a-a3b3b3adfe9b", "Philip Glass",
+     "52f1f9d5-5166-4ceb-9289-6fb1a87f367c", "The Passion of Ramakrishna",
+     "298e15a1-b29b-4947-9dca-ec3634f9ebde", "Part 2" },
+  };
+
+  source = test_lua_factory_get_source (ACOUSTID_ID, ACOUSTID_OPS);
+  for (i = 0; i < G_N_ELEMENTS (audios); i++) {
+    gchar *data;
+    GFile *file;
+    gsize size;
+    GError *error = NULL;
+    gchar *mb_artist_id, *artist, *mb_album_id, *album, *mb_recording_id, *title;
+
+    file = g_file_new_for_uri (audios[i].fingerprint_file);
+    g_file_load_contents (file, NULL, &data, &size, NULL, &error);
+    g_assert_no_error (error);
+    g_clear_pointer (&file, g_object_unref);
+
+    resolve (source, data, audios[i].duration,
+             &mb_artist_id, &artist, &mb_album_id, &album, &mb_recording_id, &title);
+    g_free (data);
+
+    g_assert_cmpstr (audios[i].title, ==, title);
+    g_free (title);
+    g_assert_cmpstr (audios[i].mb_artist_id , ==, mb_artist_id);
+    g_free (mb_artist_id);
+    g_assert_cmpstr (audios[i].artist, ==, artist);
+    g_free (artist);
+    g_assert_cmpstr (audios[i].mb_album_id, ==, mb_album_id);
+    g_free (mb_album_id);
+    g_assert_cmpstr (audios[i].album, ==, album);
+    g_free (album);
+    g_assert_cmpstr (audios[i].mb_recording_id, ==, mb_recording_id);
+    g_free (mb_recording_id);
+  }
+}
+
+static void
+test_acoustid_setup (gint *p_argc,
+                     gchar ***p_argv)
+{
+  GrlRegistry *registry;
+  GrlConfig *config;
+  GError *error = NULL;
+
+  g_setenv ("GRL_PLUGIN_PATH", TEST_PLUGINS_PATH, TRUE);
+  g_setenv ("GRL_PLUGIN_LIST", TEST_PLUGINS_LOAD, TRUE);
+  g_setenv ("GRL_LUA_SOURCES_PATH", LUA_FACTORY_SOURCES_PATH, TRUE);
+  g_setenv ("GRL_NET_MOCKED", LUA_FACTORY_SOURCES_DATA_PATH "config.ini", TRUE);
+
+  grl_init (p_argc, p_argv);
+  g_test_init (p_argc, p_argv, NULL);
+
+  /* This test uses 'chromaprint' metadata-key which is created by
+   * Chromaprint plugin. For that reason, we need to load and activate it. */
+  registry = grl_registry_get_default ();
+  grl_registry_load_plugin (registry, CHROMAPRINT_PLUGIN_PATH "/libgrlchromaprint.so", &error);
+  g_assert_no_error (error);
+  grl_registry_activate_plugin_by_id (registry, CHROMAPRINT_ID, &error);
+  g_assert_no_error (error);
+
+  config = grl_config_new (LUA_FACTORY_ID, ACOUSTID_ID);
+  grl_config_set_api_key (config, "ACOUSTID_TEST_MOCK_API_KEY");
+  test_lua_factory_setup (config);
+}
+
+gint
+main (gint argc, gchar **argv)
+{
+  test_acoustid_setup (&argc, &argv);
+
+  g_test_add_func ("/lua_factory/sources/acoustid", test_resolve_fingerprint);
+
+  gint result = g_test_run ();
+
+  test_lua_factory_shutdown ();
+  test_lua_factory_deinit ();
+
+  return result;
+}
diff --git a/tests/lua-factory/sources/test_lua_acoustid.gresource.xml 
b/tests/lua-factory/sources/test_lua_acoustid.gresource.xml
new file mode 100644
index 0000000..7d61e9d
--- /dev/null
+++ b/tests/lua-factory/sources/test_lua_acoustid.gresource.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix="/org/gnome/grilo/plugins/test/acoustid">
+    <file compressed="false">data/chromaprint_ludovico_einaudi_primavera.txt</file>
+    <file compressed="false">data/chromaprint_norah_jones_chasing_pirates.txt</file>
+    <file compressed="false">data/chromaprint_philip_glass_the_passion_of.txt</file>
+    <file compressed="false">data/chromaprint_trombone_shorty_buckjump.txt</file>
+  </gresource>
+</gresources>


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