def test_like_operator(self): """ tests ~~ operator. """ options = { 'filename': os.path.join(TEST_FILES_DIR, 'rowid_int_col1_str_header_and_100_rows_gzipped.msg') } columns = ['rowid', 'col1'] wrapper = PartitionMsgpackForeignDataWrapper(options, columns) quals = [Qual('col1', '~~', '1')] ret = list(wrapper.execute(quals, columns)) self.assertEqual(len(ret), 1) self.assertEqual(ret[0], [1, '1']) quals = [Qual('col1', '~~', '%1')] ret = list(wrapper.execute(quals, columns)) self.assertEqual(len(ret), 10) self.assertEqual(ret[0], [1, '1']) self.assertEqual(ret[1], [11, '11']) self.assertEqual(ret[-1], [91, '91']) quals = [Qual('col1', '~~', '1%')] ret = list(wrapper.execute(quals, columns)) self.assertEqual(len(ret), 11) self.assertEqual(ret[0], [1, '1']) self.assertEqual(ret[1], [10, '10']) self.assertEqual(ret[-1], [19, '19']) quals = [Qual('col1', '~~', '_')] ret = list(wrapper.execute(quals, columns)) self.assertEqual(len(ret), 10) self.assertEqual(ret[0], [0, '0']) self.assertEqual(ret[1], [1, '1']) self.assertEqual(ret[-1], [9, '9'])
def test_generates_strings(self): options = { 'filename': os.path.join(TEST_FILES_DIR, 'rowid_int_col1_str_header_and_100_rows_gzipped.msg') } quals = [] columns = ['rowid', 'col1'] wrapper = PartitionMsgpackForeignDataWrapper(options, columns) ret = list(wrapper.execute(quals, columns)) self.assertEqual(len(ret), 100) self.assertEqual(ret[0], [0, '0'])
def test_equals_operator(self): """ tests = operator. """ options = { 'filename': os.path.join(TEST_FILES_DIR, 'rowid_int_col1_str_header_and_100_rows_gzipped.msg') } columns = ['rowid', 'col1'] wrapper = PartitionMsgpackForeignDataWrapper(options, columns) quals = [Qual('col1', '=', '3')] ret = list(wrapper.execute(quals, columns)) self.assertEqual(len(ret), 1) self.assertEqual(ret[0], [3, '3'])
def test_logs_unknown_qual(self, fake_log): fake_log\ .expects_call()\ .with_args(arg.contains('Unknown operator'), WARNING, hint=arg.contains('Implement')) options = { 'filename': os.path.join(TEST_FILES_DIR, 'rowid_int_col1_str_header_and_100_rows_gzipped.msg') } columns = ['rowid', 'col1'] wrapper = PartitionMsgpackForeignDataWrapper(options, columns) quals = [Qual('col1', '?', '3')] list(wrapper.execute(quals, columns))
def test_greater_than_or_equal_operator(self): """ tests >= operator. """ options = { 'filename': os.path.join(TEST_FILES_DIR, 'rowid_int_col1_int_header_and_100_rows_gzipped.msg') } columns = ['rowid', 'col1'] wrapper = PartitionMsgpackForeignDataWrapper(options, columns) quals = [Qual('col1', '>=', 98)] ret = list(wrapper.execute(quals, columns)) self.assertEqual(len(ret), 2) self.assertEqual(ret[0], [98, 98]) self.assertEqual(ret[1], [99, 99])
def test_greater_than_operator(self): options = { 'filename': os.path.join(TEST_FILES_DIR, 'rowid_int_col1_int_header_and_100_rows_gzipped.msg') } columns = ['rowid', 'col1'] wrapper = PartitionMsgpackForeignDataWrapper(options, columns) quals = [Qual('col1', '>', 10)] ret = list(wrapper.execute(quals, columns)) self.assertEqual(len(ret), 89) self.assertEqual(ret[0], [11, 11]) self.assertEqual(ret[1], [12, 12]) self.assertEqual(ret[2], [13, 13])
def test_less_than_operator(self): """ tests < operator. """ options = { 'filename': os.path.join(TEST_FILES_DIR, 'rowid_int_col1_int_header_and_100_rows_gzipped.msg') } columns = ['rowid', 'col1'] wrapper = PartitionMsgpackForeignDataWrapper(options, columns) quals = [Qual('col1', '<', 3)] ret = list(wrapper.execute(quals, columns)) self.assertEqual(len(ret), 3) self.assertEqual(ret[0], [0, 0]) self.assertEqual(ret[1], [1, 1]) self.assertEqual(ret[2], [2, 2])
def test_requires_filename(self): with self.assertRaises(RuntimeError): PartitionMsgpackForeignDataWrapper({}, [])