def setUp(self): columns = [] for column_number, tag in enumerate(TestRow.TAGS): columns.append(Column.parse(tag)) self.row = Row(columns=columns, values=self.CONTENT, row_number=self.ROW_NUMBER)
def assertRowErrors(self, row_values, errors_expected, schema_values=None, columns=None): """Set up a HXL row and count the errors in it""" errors = [] def callback(error): errors.append(error) if schema_values is None: schema = hxl.schema(hxl.data(self.DEFAULT_SCHEMA), callback=callback) else: schema = hxl.schema(hxl.data(schema_values), callback=callback) if columns is None: columns = self.DEFAULT_COLUMNS row = Row(values=row_values, columns=[Column.parse(tag) for tag in columns]) schema.start() if errors_expected == 0: self.assertTrue(schema.validate_row(row)) else: self.assertFalse(schema.validate_row(row)) self.assertEqual(len(errors), errors_expected)
def setUp(self): self.errors = [] self.schema = Schema(rules=[ SchemaRule('#sector', min_occur=1), SchemaRule('#affected', data_type='number') ], callback=lambda error: self.errors.append(error)) self.row = Row(columns=[ Column(tag='#affected'), Column(tag='#sector'), Column(tag='#sector') ])
def test_row_restrictions(self): row = Row(columns=[ Column(tag='#x_test'), Column(tag='#subsector'), Column(tag='#x_test') ], values=['WASH', '', '']) self.rule.min_occur = 1 self._try_rule(row) self.rule.min_occur = 2 self._try_rule(row, 1) self.rule.min_occur = None self.rule.max_occur = 1 self._try_rule(row) self.rule.max_occur = 0 self._try_rule(row, 1)
def test_get_skip_blanks(self): columns = [Column.parse(tag) for tag in ['#sector', '#org', '#org']] row = Row(columns=columns, values=['Health', '', 'WFP']) # Test that row.get() returns first non-blank value self.assertEqual('WFP', row.get('org'))
class TestRow(unittest.TestCase): ROW_NUMBER = 5 TAGS = ['#sector+list', '#org', '#country'] CONTENT = ['Health, Education', 'WFP', 'Liberia'] def setUp(self): columns = [] for column_number, tag in enumerate(TestRow.TAGS): columns.append(Column.parse(tag)) self.row = Row(columns=columns, values=self.CONTENT, row_number=self.ROW_NUMBER) def test_row_number(self): self.assertEqual(TestRow.ROW_NUMBER, self.row.row_number) def test_data(self): self.assertEqual(TestRow.CONTENT, self.row.values) def test_iteration(self): expectedLength = len(TestRow.TAGS) actualLength = 0 for value in self.row: actualLength = actualLength + 1 self.assertEqual(expectedLength, actualLength) def test_append(self): column_number = len(TestRow.TAGS) oldLength = len(self.row.values) self.row.append('Lofa County') self.assertEqual(oldLength + 1, len(self.row.values)) def test_get(self): self.assertEqual('WFP', self.row.get('#org')) def test_list(self): self.assertEqual('Health, Education', self.row.get('#sector')) self.assertEqual(['Health', 'Education'], self.row.get('#sector', parsed=True)) self.assertEqual(['WFP'], self.row.get('#org', parsed=True)) def test_get_skip_blanks(self): columns = [Column.parse(tag) for tag in ['#sector', '#org', '#org']] row = Row(columns=columns, values=['Health', '', 'WFP']) # Test that row.get() returns first non-blank value self.assertEqual('WFP', row.get('org')) def test_get_all(self): result = self.row.get_all('#org') self.assertTrue(type(result) is list) self.assertEqual(1, len(result)) def test_dictionary(self): self.assertEqual( { '#country': 'Liberia', '#org': 'WFP', '#sector+list': 'Health, Education' }, self.row.dictionary) def test_outofrange(self): # what happens when a row is too short? self.row.values = self.CONTENT[0:1] self.assertEqual(None, self.row.get('#country')) self.assertEqual([], self.row.get_all('#country')) def test_parse_simple(self): column = Column.parse('#tag') self.assertEqual('#tag', column.tag) def test_parse_attributes(self): # Single attribute specs = ['#tag+foo', '#tag +foo', ' #tag +foo '] for column in [Column.parse(spec) for spec in specs]: column = Column.parse('#tag+foo') self.assertEqual('#tag', column.tag) self.assertEqual(['foo'], sorted(column.attributes)) # Multiple attributes specs = ['#tag+foo+bar', '#tag +foo +bar', ' #tag +bar+foo '] for column in [Column.parse(spec) for spec in specs]: self.assertEqual('#tag', column.tag) self.assertEqual(['bar', 'foo'], sorted(column.attributes))
class TestRow(unittest.TestCase): ROW_NUMBER = 5 TAGS = ['#sector+list', '#org', '#country'] CONTENT = ['Health, Education', 'WFP', 'Liberia']; def setUp(self): columns = [] for column_number, tag in enumerate(TestRow.TAGS): columns.append(Column.parse(tag)) self.row = Row(columns=columns, values=self.CONTENT, row_number=self.ROW_NUMBER) def test_row_number(self): self.assertEqual(TestRow.ROW_NUMBER, self.row.row_number) def test_data(self): self.assertEqual(TestRow.CONTENT, self.row.values) def test_iteration(self): expectedLength = len(TestRow.TAGS) actualLength = 0; for value in self.row: actualLength = actualLength + 1 self.assertEqual(expectedLength, actualLength) def test_append(self): column_number = len(TestRow.TAGS) oldLength = len(self.row.values) self.row.append('Lofa County') self.assertEqual(oldLength + 1, len(self.row.values)) def test_get(self): self.assertEqual('WFP', self.row.get('#org')) def test_list(self): self.assertEqual('Health, Education', self.row.get('#sector')) self.assertEqual(['Health', 'Education'], self.row.get('#sector', parsed=True)) self.assertEqual(['WFP'], self.row.get('#org', parsed=True)) def test_get_skip_blanks(self): columns = [Column.parse(tag) for tag in ['#sector', '#org', '#org']] row = Row(columns=columns, values=['Health', '', 'WFP']) # Test that row.get() returns first non-blank value self.assertEqual('WFP', row.get('org')) def test_get_all(self): result = self.row.get_all('#org') self.assertTrue(type(result) is list) self.assertEqual(1, len(result)) def test_dictionary(self): self.assertEqual({ '#country': 'Liberia', '#org': 'WFP', '#sector+list': 'Health, Education' }, self.row.dictionary) def test_outofrange(self): # what happens when a row is too short? self.row.values = self.CONTENT[0:1] self.assertEqual(None, self.row.get('#country')) self.assertEqual([], self.row.get_all('#country')) def test_parse_simple(self): column = Column.parse('#tag') self.assertEqual('#tag', column.tag) def test_parse_attributes(self): # Single attribute specs = ['#tag+foo', '#tag +foo', ' #tag +foo '] for column in [Column.parse(spec) for spec in specs]: column = Column.parse('#tag+foo') self.assertEqual('#tag', column.tag) self.assertEqual(['foo'], sorted(column.attributes)) # Multiple attributes specs = ['#tag+foo+bar', '#tag +foo +bar', ' #tag +bar+foo '] for column in [Column.parse(spec) for spec in specs]: self.assertEqual('#tag', column.tag) self.assertEqual(['bar', 'foo'], sorted(column.attributes))