def test_parse_list(self): ret, buf = SearchKey.parse(b'(4,5,6 NOT 1,2,3)', Params()) self.assertEqual(b'KEYSET', ret.value) self.assertIsInstance(ret.filter, list) self.assertEqual(2, len(ret.filter)) self.assertEqual(b'SEQSET', ret.filter[0].value) self.assertIsInstance(ret.filter[0].filter, SequenceSet) self.assertEqual([4, 5, 6], ret.filter[0].filter.value) self.assertFalse(ret.filter[0].inverse) self.assertEqual(b'SEQSET', ret.filter[1].value) self.assertIsInstance(ret.filter[1].filter, SequenceSet) self.assertEqual([1, 2, 3], ret.filter[1].filter.value) self.assertTrue(ret.filter[1].inverse)
def test_parse_seqset(self): ret, buf = SearchKey.parse(b'NOT 1,2,3', Params()) self.assertEqual(b'SEQSET', ret.value) self.assertIsInstance(ret.filter, SequenceSet) self.assertEqual([1, 2, 3], ret.filter.value) self.assertTrue(ret.inverse)
def test_parse(self): ret, buf = SearchKey.parse(b'ALL ', Params()) self.assertEqual(b'ALL', ret.value) self.assertIsNone(ret.filter) self.assertFalse(ret.inverse) self.assertEqual(b' ', buf)
def test_parse_filter_or(self): ret, buf = SearchKey.parse(b'OR NEW OLD', Params()) self.assertEqual(b'OR', ret.value) self.assertEqual(b'NEW', ret.filter[0].value) self.assertEqual(b'OLD', ret.filter[1].value) self.assertFalse(ret.inverse)
def test_parse_filter_uid(self): ret, buf = SearchKey.parse(b'UID 1,2,3', Params()) self.assertEqual(b'SEQSET', ret.value) self.assertIsInstance(ret.filter, SequenceSet) self.assertEqual([1, 2, 3], ret.filter.value) self.assertFalse(ret.inverse)
def test_parse_filter_keyword(self): ret, buf = SearchKey.parse(b'keyword test', Params()) self.assertEqual(b'KEYWORD', ret.value) self.assertEqual(b'test', ret.filter) self.assertFalse(ret.inverse)
def test_parse_filter_astring(self): ret, buf = SearchKey.parse(b'subject "testing"', Params()) self.assertEqual(b'SUBJECT', ret.value) self.assertEqual('testing', ret.filter) self.assertFalse(ret.inverse)
def test_parse_filter_date(self): ret, buf = SearchKey.parse(b'before 01-Jan-1970', Params()) self.assertEqual(b'BEFORE', ret.value) self.assertEqual(datetime(1970, 1, 1), ret.filter) self.assertFalse(ret.inverse)
def test_parse_list_error(self): with self.assertRaises(UnexpectedType): SearchKey.parse(b'(TEST)', Params()) with self.assertRaises(NotParseable): SearchKey.parse(b'(1,2,3', Params())
def test_parse_filter_number(self): ret, buf = SearchKey.parse(b'larger 1000', Params()) self.assertEqual(b'LARGER', ret.value) self.assertEqual(1000, ret.filter) self.assertFalse(ret.inverse)
def test_parse_filter_header(self): ret, buf = SearchKey.parse(b'HEADER "From" "*****@*****.**"', Params()) self.assertEqual(b'HEADER', ret.value) self.assertEqual(('From', '*****@*****.**'), ret.filter) self.assertFalse(ret.inverse)
def test_parse_filter_header(self): ret, buf = SearchKey.parse( b'HEADER "From" "*****@*****.**"', Params()) self.assertEqual(b'HEADER', ret.value) self.assertEqual(('From', '*****@*****.**'), ret.filter) self.assertFalse(ret.inverse)
def test_parse_error(self): with self.assertRaises(NotParseable): SearchKey.parse(b'test', Params()) with self.assertRaises(NotParseable): SearchKey.parse(b'before stuff', Params())
def test_parse(self): ret, buf = SearchCommand.parse(b' ALL\n ', Params()) self.assertFalse(ret.uid) self.assertSetEqual({SearchKey(b'ALL')}, ret.keys) self.assertIsNone(ret.charset) self.assertEqual(b' ', buf)