From b86669fe05cf0c78f27d85edf2c88da9d0dd4e16 Mon Sep 17 00:00:00 2001 From: Thomas Scholtes Date: Sun, 14 Sep 2014 16:11:13 +0200 Subject: [PATCH] Add integer query tests --- test/test_query.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/test/test_query.py b/test/test_query.py index 4d85696d4..0cf53c92b 100644 --- a/test/test_query.py +++ b/test/test_query.py @@ -16,8 +16,12 @@ """ import _common from _common import unittest +from helper import TestHelper + import beets.library from beets import dbcore +from beets.dbcore import types +from beets.library import Library, Item class AnyFieldQueryTest(_common.LibTestCase): @@ -374,6 +378,42 @@ class PathQueryTest(_common.LibTestCase, AssertsMixin): self.assert_matched(results, ['path item']) +class IntQueryTest(unittest.TestCase, TestHelper): + + def setUp(self): + self.lib = Library(':memory:') + + def test_exact_value_match(self): + item = self.add_item(bpm=120) + matched = self.lib.items('bpm:120').get() + self.assertEqual(item.id, matched.id) + + def test_range_match(self): + item = self.add_item(bpm=120) + self.add_item(bpm=130) + + matched = self.lib.items('bpm:110..125') + self.assertEqual(1, len(matched)) + self.assertEqual(item.id, matched.get().id) + + def test_flex_range_match(self): + Item._types = {'myint': types.Integer()} + item = self.add_item(myint=2) + matched = self.lib.items('myint:2').get() + self.assertEqual(item.id, matched.id) + + def test_flex_dont_match_missing(self): + Item._types = {'myint': types.Integer()} + self.add_item() + matched = self.lib.items('myint:2').get() + self.assertIsNone(matched) + + def test_no_substring_match(self): + self.add_item(bpm=120) + matched = self.lib.items('bpm:12').get() + self.assertIsNone(matched) + + class DefaultSearchFieldsTest(DummyDataTestCase): def test_albums_matches_album(self): albums = list(self.lib.albums('baz'))