From fdb6ff7bb2d5d315c56729b47457cadda6e3967b Mon Sep 17 00:00:00 2001 From: "adrian.sampson" Date: Wed, 11 Jun 2008 07:09:39 +0000 Subject: [PATCH] added tests for query parser and library.get --HG-- extra : convert_revision : svn%3A41726ec3-264d-0410-9c23-a9f1637257cc/trunk%4012 --- test/library.py | 135 ++++++++++++++++++++++++++++++++++++++++++++++ test/rsrc/get.blb | Bin 0 -> 4096 bytes test/tagtest.py | 2 +- 3 files changed, 136 insertions(+), 1 deletion(-) create mode 100755 test/library.py create mode 100644 test/rsrc/get.blb diff --git a/test/library.py b/test/library.py new file mode 100755 index 000000000..f4c34f5e1 --- /dev/null +++ b/test/library.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python +import unittest, sys, os +sys.path.append('..') +import beets.library + +parse_query = beets.library.AndQueryElement._parse_query + +class QueryParseTest(unittest.TestCase): + def test_one_basic_term(self): + q = 'test' + r = [(None, 'test')] + self.assertEqual(parse_query(q), r) + + def test_three_basic_terms(self): + q = 'test one two' + r = [(None, 'test'), (None, 'one'), (None, 'two')] + self.assertEqual(parse_query(q), r) + + def test_one_keyed_term(self): + q = 'test:val' + r = [('test', 'val')] + self.assertEqual(parse_query(q), r) + + def test_one_keyed_one_basic(self): + q = 'test:val one' + r = [('test', 'val'), (None, 'one')] + self.assertEqual(parse_query(q), r) + + def test_colon_at_end(self): + q = 'test:' + r = [(None, 'test:')] + self.assertEqual(parse_query(q), r) + + def test_colon_at_start(self): + q = ':test' + r = [(None, ':test')] + self.assertEqual(parse_query(q), r) + + def test_escaped_colon(self): + q = r'test\:val' + r = [((None), 'test:val')] + self.assertEqual(parse_query(q), r) + +class GetTest(unittest.TestCase): + def setUp(self): + self.lib = beets.library.Library('rsrc' + os.sep + 'get.blb') + + def assert_matched(self, result_iterator, title): + self.assertEqual(result_iterator.next().title, title) + def assert_done(self, result_iterator): + self.assertRaises(StopIteration, result_iterator.next) + def assert_matched_all(self, result_iterator): + self.assert_matched(result_iterator, 'Littlest Things') + self.assert_matched(result_iterator, 'Lovers Who Uncover') + self.assert_matched(result_iterator, 'Boracay') + self.assert_matched(result_iterator, 'Take Pills') + self.assert_done(result_iterator) + + def test_get_empty(self): + q = '' + results = self.lib.get(q) + self.assert_matched_all(results) + + def test_get_none(self): + q = None + results = self.lib.get(q) + self.assert_matched_all(results) + + def test_get_one_keyed_term(self): + q = 'artist:Lil' + results = self.lib.get(q) + self.assert_matched(results, 'Littlest Things') + self.assert_done(results) + + def test_get_one_unkeyed_term(self): + q = 'Terry' + results = self.lib.get(q) + self.assert_matched(results, 'Boracay') + self.assert_done(results) + + def test_get_no_matches(self): + q = 'popebear' + results = self.lib.get(q) + self.assert_done(results) + + def test_invalid_key(self): + q = 'pope:bear' + results = self.lib.get(q) + self.assert_matched_all(results) + + def test_term_case_insensitive(self): + q = 'UNCoVER' + results = self.lib.get(q) + self.assert_matched(results, 'Lovers Who Uncover') + self.assert_done(results) + + def test_term_case_insensitive_with_key(self): + q = 'album:stiLL' + results = self.lib.get(q) + self.assert_matched(results, 'Littlest Things') + self.assert_done(results) + + def test_key_case_insensitive(self): + q = 'ArTiST:Allen' + results = self.lib.get(q) + self.assert_matched(results, 'Littlest Things') + self.assert_done(results) + + def test_unkeyed_term_matches_multiple_columns(self): + q = 'little' + results = self.lib.get(q) + self.assert_matched(results, 'Littlest Things') + self.assert_matched(results, 'Lovers Who Uncover') + self.assert_matched(results, 'Boracay') + self.assert_done(results) + + def test_keyed_term_matches_only_one_column(self): + q = 'artist:little' + results = self.lib.get(q) + self.assert_matched(results, 'Lovers Who Uncover') + self.assert_matched(results, 'Boracay') + self.assert_done(results) + + def test_mulitple_terms_narrow_search(self): + q = 'little ones' + results = self.lib.get(q) + self.assert_matched(results, 'Lovers Who Uncover') + self.assert_matched(results, 'Boracay') + self.assert_done(results) + +def suite(): + return unittest.TestLoader().loadTestsFromName(__name__) + +if __name__ == '__main__': + unittest.main(defaultTest='suite') \ No newline at end of file diff --git a/test/rsrc/get.blb b/test/rsrc/get.blb new file mode 100644 index 0000000000000000000000000000000000000000..fe621332bedbb435c0c5c3b5496529b756e467b9 GIT binary patch literal 4096 zcmeHK&u`N(6tLTfqLixR}*N}2I)42HX#Je z0&|8u&Y5pQ+x!De<2^9X%^&Jf$em^2TiLWKl?wbmmblM|>MUO*U!|kdcGGPmx7q5n zQDQ=ybbx3e$&f@SjHr*JDH@aMHVUyEAxW;}Hj-2_l3^T4D&$OI{fVF9Aqk?{CXf3e z7b;@vKaBV!q`@##rvyhjrwSZlZ=6COU*)s`72e#wP}nr0p2)(eBt8k`Oznq$>Y6pBd#!vkCzX z2INY7VT$JqJdr%nFS1M*I~g!l8H;bpEU+I69yrHDj3o~p zeN(&;K*X&PnoN=?z>;1P>zAQN zSrC^ERpo=7t;hDtRrd76(Br{SSJdH`>NTPB5l3f%rxjh?P3u2(&SO~DMmZ^D9jZd= zTebT7%7t_&o1&&B$!W5P4o7No=}FZfPU9dWMNLHRNY$IPOv=;Tv~XYc?()#OzIR_& F^%onxWW4|Y literal 0 HcmV?d00001 diff --git a/test/tagtest.py b/test/tagtest.py index b92aa8f89..22cd34d47 100755 --- a/test/tagtest.py +++ b/test/tagtest.py @@ -132,4 +132,4 @@ def suite(): return s if __name__ == '__main__': - unittest.TextTestRunner(verbosity=2).run(suite()) + unittest.main(defaultTest='suite')