Пример #1
0
    def test_full_LOC(self):
        """LOC should behave as expected when initialized with rich data"""
        data = [
            "abc\t def", " 3 \t n", "  abc   \txyz\n\n", "x\t5", "fgh   ",
            "x\t3    "
        ]

        class rec(MappedRecord):
            Required = {'abc': []}

        maps = {'abc': list_adder, 'x': int_setter, 'fgh': bool_setter}
        label_splitter = DelimitedSplitter('\t')
        constructor = rec
        strict = True
        loc_bad = LineOrientedConstructor(data, label_splitter, maps,
                                          constructor, strict)
        self.assertRaises(FieldError, loc_bad)
        strict = False
        loc_good = LineOrientedConstructor(data, label_splitter, maps,
                                           constructor, strict)
        result = loc_good()
        assert isinstance(result, rec)
        self.assertEqual(result, {
            'abc': ['def', 'xyz'],
            '3': 'n',
            'fgh': False,
            'x': 3
        })
Пример #2
0
 def test_init_empty(self):
     """LOC empty init should succeed with expected defaults"""
     l = LineOrientedConstructor()
     self.assertEqual(l.Lines, [])
     self.assertEqual(l.LabelSplitter(' ab  cd  '), ['ab', 'cd'])
     self.assertEqual(l.FieldMap, {})
     self.assertEqual(l.Constructor, MappedRecord)
     self.assertEqual(l.Strict, False)
Пример #3
0
 def test_empty_LOC(self):
     """LOC empty should fail if strict, fill fields if not strict"""
     data = ["abc   def", "3  n", "\t  abc   \txyz\n\n", "fgh   "]
     l = LineOrientedConstructor()
     result = l()
     self.assertEqual(result, {})
     result = l([])
     self.assertEqual(result, {})
     result = l(['   ', '\n\t   '])
     self.assertEqual(result, {})
     result = l(data)
     self.assertEqual(result, {'abc': 'xyz', '3': 'n', 'fgh': None})