def test_simple_expression(self): df = pd.DataFrame({'Subject': ['subject-1', 'subject-1', 'subject-2'], 'SampleType': ['gut', 'tongue', 'gut']}, index=pd.Index(['S1', 'S2', 'S3'], name='id')) metadata = qiime.Metadata(df) where = "Subject='subject-1'" actual = _ids_where(metadata, where) expected = ['S1', 'S2'] self.assertEqual(actual, expected) where = "Subject='subject-2'" actual = _ids_where(metadata, where) expected = ['S3'] self.assertEqual(actual, expected) where = "Subject='subject-3'" actual = _ids_where(metadata, where) expected = [] self.assertEqual(actual, expected) where = "SampleType='gut'" actual = _ids_where(metadata, where) expected = ['S1', 'S3'] self.assertEqual(actual, expected) where = "SampleType='tongue'" actual = _ids_where(metadata, where) expected = ['S2'] self.assertEqual(actual, expected)
def test_invalid_where(self): df = pd.DataFrame({'Subject': ['subject-1', 'subject-1', 'subject-2'], 'SampleType': ['gut', 'tongue', 'gut']}, index=['S1', 'S2', 'S3']) metadata = qiime.Metadata(df) where = "not-a-column-name='subject-1'" with self.assertRaises(ValueError): _ids_where(metadata, where)
def test_incomplete_where(self): df = pd.DataFrame({'Subject': ['subject-1', 'subject-1', 'subject-2'], 'SampleType': ['gut', 'tongue', 'gut']}, index=['S1', 'S2', 'S3']) metadata = qiime.Metadata(df) where = "Subject='subject-1' AND SampleType=" with self.assertRaises(ValueError): _ids_where(metadata, where) where = "Subject=" with self.assertRaises(ValueError): _ids_where(metadata, where)