コード例 #1
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_header_present_regexes_present(self):
     infile = StringIO('\n'.join(_raw_txt_1.splitlines()[1:]))
     data = csv.reader(infile)
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     row = _next(reheadered(data, headers, header_present=True))
     assert row['name'] == 'Charles the Great'
     assert row['email'] == '*****@*****.**'
コード例 #2
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_header_present_guessed(self):
     infile = StringIO(_raw_txt_1)
     data = csv.reader(infile)
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     row = _next(reheadered(data, headers))
     assert row['name'] == 'Nellie Newsock'
     assert row['email'] == '*****@*****.**'
コード例 #3
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_header_absent_regexes_present(self):
     infile = StringIO('\n'.join(_raw_txt_1.splitlines()[1:]))
     data = csv.reader(infile)
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     row = _next(reheadered(data, headers, header_present=False))
     assert row['name'] == 'Nellie Newsock'
     assert row['email'] == '*****@*****.**'
コード例 #4
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_list_of_lists_whitespace_before_headers(self):
     src = "\n\n\n\n" + _raw_txt_1
     data = _data(src=src, reader=csv.reader, with_headers=True)
     for row in reheadered(data, ['name', 'email', 'zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
コード例 #5
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_header_present_guessed(self):
     infile = StringIO(_raw_txt_1)
     data = csv.reader(infile)
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     row = _next(reheadered(data, headers))
     assert row['name'] == 'Nellie Newsock'
     assert row['email'] == '*****@*****.**'
コード例 #6
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_header_present_regexes_present(self):
     infile = StringIO('\n'.join(_raw_txt_1.splitlines()[1:]))
     data = csv.reader(infile)
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     row = _next(reheadered(data, headers, header_present=True))
     assert row['name'] == 'Charles the Great'
     assert row['email'] == '*****@*****.**'
コード例 #7
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_list_of_lists_whitespace_before_headers(self):
     src = "\n\n\n\n" + _raw_txt_1
     data = _data(src=src, reader=csv.reader, with_headers=True)
     for row in reheadered(data, ['name', 'email', 'zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
コード例 #8
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_header_absent_regexes_present(self):
     infile = StringIO('\n'.join(_raw_txt_1.splitlines()[1:]))
     data = csv.reader(infile)
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     row = _next(reheadered(data, headers, header_present=False))
     assert row['name'] == 'Nellie Newsock'
     assert row['email'] == '*****@*****.**'
コード例 #9
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_whitespace_safe_in_data(self):
     for row in reheadered(
             _data(_raw_txt_2), ['zipcode', 'Name', 'e-mail'],
             minimum_score=100):
         assert 'zipcode' in row
         assert 'Name' in row
         assert 'e-mail' in row
コード例 #10
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_regexes_preferred_to_fuzzy_match(self):
     headers = {'columnA': '\w+@\w+\.\w+', 'columnB': '\d+'}
     for row in reheadered(_data(), headers):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'columnB' in row
         if row['columnB']:
             assert re.search('\d+', row['columnB'])
コード例 #11
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_regexes_preferred_to_fuzzy_match(self):
     headers = {'columnA': '\w+@\w+\.\w+', 'columnB': '\d+'}
     for row in reheadered(_data(), headers):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'columnB' in row
         if row['columnB']:
             assert re.search('\d+', row['columnB'])
コード例 #12
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_mix_regexes_with_column_name_matches(self):
     headers = {'columnA': '\w+@\w+\.\w+', 'zip': None}
     for row in reheadered(_data(), headers):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'zip' in row
         if row['zip']:
             assert re.search('\d+', row['zip'])
コード例 #13
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_optional_in_regex(self):
     headers = {'zip': '\w+@\w+\.\w+', '?:email': '\d+'}
     for row in reheadered(_data(), headers):
         assert 'zip' in row
         assert '@' in row['zip']
         assert 'email' in row
         if row['email']:
             assert re.search('\d+', row['email'])
コード例 #14
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_mix_regexes_with_column_name_matches(self):
     headers = {'columnA': '\w+@\w+\.\w+', 'zip': None}
     for row in reheadered(_data(), headers):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'zip' in row
         if row['zip']:
             assert re.search('\d+', row['zip'])
コード例 #15
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_prefer_fuzzy(self):
     headers = {'columnA': '\w+@\w+\.\w+', 'name': '\d+'}
     for row in reheadered(_data(), headers, prefer_fuzzy=True):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'name' in row
         if row['name']:
             assert not re.search('\d+', row['name'])
コード例 #16
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_optional_in_regex(self):
     headers = {'zip': '\w+@\w+\.\w+', '?:email': '\d+'}
     for row in reheadered(_data(), headers):
         assert 'zip' in row
         assert '@' in row['zip']
         assert 'email' in row
         if row['email']:
             assert re.search('\d+', row['email'])
コード例 #17
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_prefer_fuzzy(self):
     headers = {'columnA': '\w+@\w+\.\w+', 'name': '\d+'}
     for row in reheadered(_data(), headers, prefer_fuzzy=True):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'name' in row
         if row['name']:
             assert not re.search('\d+', row['name'])
コード例 #18
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_compiled_regexes(self):
     columnAregex = re.compile(r"""\w+   #  name
                                   @\w+  # email provider
                                   \.\w+ # domain""", re.VERBOSE)
     headers = {'columnA': columnAregex, 'columnB': re.compile(r'\d+')}
     for row in reheadered(_data(), headers):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'columnB' in row
         if row['columnB']:
             assert re.search(r'\d+', row['columnB'])
コード例 #19
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
    def test_fuzzy_column_name_match(self):
        headers = ['Name', 'mail', 'zipcode']
        for row in reheadered(_data(), headers):
            assert 'Name' in row
            assert 'name' not in row

            assert 'mail' in row
            assert row['mail']
            assert 'email' not in row

            assert 'zipcode' in row
            assert 'zip' not in row
コード例 #20
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
    def test_fuzzy_column_name_match(self):
        headers = ['Name', 'mail', 'zipcode']
        for row in reheadered(_data(), headers):
            assert 'Name' in row
            assert 'name' not in row

            assert 'mail' in row
            assert row['mail']
            assert 'email' not in row

            assert 'zipcode' in row
            assert 'zip' not in row
コード例 #21
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_compiled_regexes(self):
     columnAregex = re.compile(
         r"""\w+   #  name
                                   @\w+  # email provider
                                   \.\w+ # domain""", re.VERBOSE)
     headers = {'columnA': columnAregex, 'columnB': re.compile(r'\d+')}
     for row in reheadered(_data(), headers):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'columnB' in row
         if row['columnB']:
             assert re.search(r'\d+', row['columnB'])
コード例 #22
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
    def test_fuzzy_column_name_match_list_of_lists(self):
        data = _data(reader=csv.reader, with_headers=True)
        headers = ['Name', 'mail', 'zipcode']
        for row in reheadered(data, headers):
            assert 'Name' in row
            assert 'name' not in row

            assert 'mail' in row
            assert row['mail']
            assert 'email' not in row

            assert 'zipcode' in row
            assert 'zip' not in row
コード例 #23
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
    def test_fuzzy_column_name_match_list_of_lists(self):
        data = _data(reader=csv.reader, with_headers=True)
        headers = ['Name', 'mail', 'zipcode']
        for row in reheadered(data, headers):
            assert 'Name' in row
            assert 'name' not in row

            assert 'mail' in row
            assert row['mail']
            assert 'email' not in row

            assert 'zipcode' in row
            assert 'zip' not in row
コード例 #24
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_list_of_lists_no_data(self):
     infile = StringIO(_raw_txt_1.splitlines()[0])
     data = csv.reader(infile)
     with pytest.raises(StopIteration):
         _next(reheadered(data, ['name', 'email', 'zip']))
コード例 #25
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_perfect_column_name_match(self):
     for row in reheadered(_data(), ['name', 'email', 'zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
コード例 #26
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_optional_column_marker_tolerated(self):
     headers = ['Name', '?:mail', 'zip']
     for row in reheadered(_data(), headers):
         assert 'mail' in row
         assert '?:mail' not in row
コード例 #27
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_custom_optional_marker(self):
     headers = ['Name', 'mail', 'zip', 'OPTIONAL~nationality']
     for row in reheadered(_data(), headers, optional_prefix='OPTIONAL~'):
         assert 'mail' in row
         assert 'nationality' not in row
コード例 #28
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_dict_of_headers_accepted(self):
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     data = _data()
     _next(reheadered(data, headers))
コード例 #29
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_low_minimum_score(self):
     headers = ['Name', 'mail', 'zip_code']
     for row in reheadered(_data(), headers, minimum_score=50):
         assert 'zip_code' in row
コード例 #30
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_perfect_column_name_match(self):
     for row in reheadered(_data(), ['name', 'email', 'zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
コード例 #31
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_list_of_lists_accepted(self):
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     data = _data(reader=csv.reader, with_headers=True)
     _next(reheadered(data, headers))
コード例 #32
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_whitespace_safe_in_expected(self):
     for row in reheadered(_data(), ['       name', 'email', ' zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
コード例 #33
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_keep_extra_with_fuzzy_match(self):
     for row in reheadered(_data(), ['Name', 'e-mail'], keep_extra=True):
         assert 'Name' in row
         assert 'e-mail' in row
         assert 'zip' in row
コード例 #34
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_low_minimum_score(self):
     headers = ['Name', 'mail', 'zip_code']
     for row in reheadered(_data(), headers, minimum_score=50):
         assert 'zip_code' in row
コード例 #35
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_list_of_lists_no_data(self):
     infile = StringIO(_raw_txt_1.splitlines()[0])
     data = csv.reader(infile)
     with pytest.raises(StopIteration):
         _next(reheadered(data, ['name', 'email', 'zip']))
コード例 #36
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_perfect_column_name_match_list_of_lists(self):
     data = _data(reader=csv.reader, with_headers=True)
     for row in reheadered(data, ['name', 'email', 'zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
コード例 #37
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_whitespace_safe_in_expected(self):
     for row in reheadered(_data(), ['       name', 'email', ' zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
コード例 #38
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_keep_extra(self):
     for row in reheadered(_data(), ['name', 'email'], keep_extra=True):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
コード例 #39
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_high_minimum_score(self):
     headers = ['Name', 'mail', 'zip']
     with pytest.raises(KeyError):
         _next(reheadered(_data(), headers, minimum_score=90))
コード例 #40
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_reheadered_accepts_basic_args(self):
     reheadered([{}, ], [])
コード例 #41
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_keep_extra_false(self):
     for row in reheadered(_data(), ['name', 'email'], keep_extra=False):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' not in row
         assert '' not in row
コード例 #42
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_fuzzy_column_name_match_failure(self):
     headers = ['Name', 'mail', 'thy one true zip code']
     with pytest.raises(KeyError):
         _next(reheadered(_data(), headers))
コード例 #43
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_keep_extra_with_fuzzy_match(self):
     for row in reheadered(_data(), ['Name', 'e-mail'], keep_extra=True):
         assert 'Name' in row
         assert 'e-mail' in row
         assert 'zip' in row
コード例 #44
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_optional_column_marker_tolerated(self):
     headers = ['Name', '?:mail', 'zip']
     for row in reheadered(_data(), headers):
         assert 'mail' in row
         assert '?:mail' not in row
コード例 #45
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_high_minimum_score(self):
     headers = ['Name', 'mail', 'zip']
     with pytest.raises(KeyError):
         _next(reheadered(_data(), headers, minimum_score=90))
コード例 #46
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_optional_column_marker_honored(self):
     headers = ['Name', 'mail', 'zip', '?:nationality']
     for row in reheadered(_data(), headers):
         assert 'mail' in row
         assert 'nationality' not in row
コード例 #47
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_header_absent_and_no_regexes(self):
     infile = StringIO('\n'.join(_raw_txt_1.splitlines()[1:]))
     data = csv.reader(infile)
     headers = ['name', 'email', 'zip']
     with pytest.raises(KeyError):
         _next(reheadered(data, headers, header_present=False))
コード例 #48
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_custom_optional_marker(self):
     headers = ['Name', 'mail', 'zip', 'OPTIONAL~nationality']
     for row in reheadered(_data(), headers, optional_prefix='OPTIONAL~'):
         assert 'mail' in row
         assert 'nationality' not in row
コード例 #49
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_optional_column_marker_honored(self):
     headers = ['Name', 'mail', 'zip', '?:nationality']
     for row in reheadered(_data(), headers):
         assert 'mail' in row
         assert 'nationality' not in row
コード例 #50
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_dict_of_headers_accepted(self):
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     data = _data()
     _next(reheadered(data, headers))
コード例 #51
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_reheadered_accepts_basic_args(self):
     reheadered([
         {},
     ], [])
コード例 #52
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_list_of_lists_accepted(self):
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     data = _data(reader=csv.reader, with_headers=True)
     _next(reheadered(data, headers))
コード例 #53
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_perfect_column_name_match_list_of_lists(self):
     data = _data(reader=csv.reader, with_headers=True)
     for row in reheadered(data, ['name', 'email', 'zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
コード例 #54
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_keep_extra(self):
     for row in reheadered(_data(), ['name', 'email'], keep_extra=True):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
コード例 #55
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_fuzzy_column_name_match_failure(self):
     headers = ['Name', 'mail', 'thy one true zip code']
     with pytest.raises(KeyError):
         _next(reheadered(_data(), headers))
コード例 #56
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_keep_extra_false(self):
     for row in reheadered(_data(), ['name', 'email'], keep_extra=False):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' not in row
         assert '' not in row
コード例 #57
0
ファイル: test_reheader.py プロジェクト: isabella232/reheader
 def test_whitespace_safe_in_data(self):
     for row in reheadered(_data(_raw_txt_2), ['zipcode', 'Name', 'e-mail'],
                           minimum_score=100):
         assert 'zipcode' in row
         assert 'Name' in row
         assert 'e-mail' in row
コード例 #58
0
ファイル: test_reheader.py プロジェクト: 18F/reheader
 def test_header_absent_and_no_regexes(self):
     infile = StringIO('\n'.join(_raw_txt_1.splitlines()[1:]))
     data = csv.reader(infile)
     headers = ['name', 'email', 'zip']
     with pytest.raises(KeyError):
         _next(reheadered(data, headers, header_present=False))