 Issue 29988581:
  Issue 7230 - python-abp line2dict vectorization  (Closed) 
  Base URL: https://hg.adblockplus.org/python-abp/
    
  
    Issue 29988581:
  Issue 7230 - python-abp line2dict vectorization  (Closed) 
  Base URL: https://hg.adblockplus.org/python-abp/| Left: | ||
| Right: | 
| OLD | NEW | 
|---|---|
| 1 # This file is part of Adblock Plus <https://adblockplus.org/>, | 1 # This file is part of Adblock Plus <https://adblockplus.org/>, | 
| 2 # Copyright (C) 2006-present eyeo GmbH | 2 # Copyright (C) 2006-present eyeo GmbH | 
| 3 # | 3 # | 
| 4 # Adblock Plus is free software: you can redistribute it and/or modify | 4 # Adblock Plus is free software: you can redistribute it and/or modify | 
| 5 # it under the terms of the GNU General Public License version 3 as | 5 # it under the terms of the GNU General Public License version 3 as | 
| 6 # published by the Free Software Foundation. | 6 # published by the Free Software Foundation. | 
| 7 # | 7 # | 
| 8 # Adblock Plus is distributed in the hope that it will be useful, | 8 # Adblock Plus is distributed in the hope that it will be useful, | 
| 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 11 # GNU General Public License for more details. | 11 # GNU General Public License for more details. | 
| 12 # | 12 # | 
| 13 # You should have received a copy of the GNU General Public License | 13 # You should have received a copy of the GNU General Public License | 
| 14 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 14 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 
| 15 | 15 | 
| 16 """Functional tests for testing rPython integration.""" | 16 """Functional tests for testing rPython integration.""" | 
| 17 from __future__ import unicode_literals | 17 from __future__ import unicode_literals | 
| 18 | 18 | 
| 19 from collections import namedtuple | 19 from collections import namedtuple | 
| 20 import pytest | 20 import pytest | 
| 21 import sys | 21 import sys | 
| 22 | 22 | 
| 23 from abp.filters.rpy import tuple2dict, line2dict | 23 from abp.filters.rpy import tuple2dict, line2dict, lines2dicts | 
| 24 | 24 | 
| 25 | 25 | 
| 26 _SAMPLE_TUPLE = namedtuple('tuple', 'foo,bar') | 26 _SAMPLE_TUPLE = namedtuple('tuple', 'foo,bar') | 
| 27 | 27 | 
| 28 _TEST_EXAMPLES = { | 28 _TEST_EXAMPLES = { | 
| 29 'header': { | 29 'header': { | 
| 30 'in': b'[Adblock Plus 2.0]', | 30 'in': b'[Adblock Plus 2.0]', | 
| 31 'out': { | 31 'out': { | 
| 32 b'type': b'Header', | 32 b'type': b'Header', | 
| 33 b'version': b'Adblock Plus 2.0', | 33 b'version': b'Adblock Plus 2.0', | 
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 140 @pytest.mark.parametrize('line_type', list(_TEST_EXAMPLES.keys())) | 140 @pytest.mark.parametrize('line_type', list(_TEST_EXAMPLES.keys())) | 
| 141 def test_line2dict_format(line_type): | 141 def test_line2dict_format(line_type): | 
| 142 """Test that the API result has the appropriate format. | 142 """Test that the API result has the appropriate format. | 
| 143 | 143 | 
| 144 Checks for both keys and datatypes. | 144 Checks for both keys and datatypes. | 
| 145 """ | 145 """ | 
| 146 position = 'start' if line_type in {'header', 'metadata'} else 'body' | 146 position = 'start' if line_type in {'header', 'metadata'} else 'body' | 
| 147 data = line2dict(_TEST_EXAMPLES[line_type]['in'], position) | 147 data = line2dict(_TEST_EXAMPLES[line_type]['in'], position) | 
| 148 | 148 | 
| 149 assert data == _TEST_EXAMPLES[line_type]['out'] | 149 assert data == _TEST_EXAMPLES[line_type]['out'] | 
| 150 | |
| 151 | |
| 152 def test_lines2dicts(): | |
| 153 """Test that the API returns the correct result in the appropriate format. | |
| 154 | |
| 155 Checks for both modes: 'start', and 'body' (the default). | |
| 156 """ | |
| 157 test_start = [t for t in _TEST_EXAMPLES.values()] | |
| 158 ins = [ex['in'] for ex in test_start] | |
| 159 outs = [ex['out'] for ex in test_start] | |
| 160 | |
| 161 assert lines2dicts(ins, 'start') == outs | |
| 162 | |
| 163 test_body = [t for t in _TEST_EXAMPLES.values() | |
| 
Vasily Kuznetsov
2019/01/28 17:47:36
What do you think about separating this part into
 
rhowell
2019/01/29 01:44:48
Done.
 | |
| 164 if t['out'][b'type'] not in {b'Header', b'Metadata'}] | |
| 165 ins = [ex['in'] for ex in test_body] | |
| 166 outs = [ex['out'] for ex in test_body] | |
| 167 | |
| 168 assert lines2dicts(ins) == outs | |
| OLD | NEW |