1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# Copyright 2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
from portage.tests import TestCase
from portage.dep import paren_reduce
from portage.exception import InvalidDependString
class TestParenReduce(TestCase):
def testParenReduce(self):
test_cases = (
( "A", ["A"]),
( "( A )", [["A"]]),
( "|| ( A B )", [ "||", ["A", "B"] ]),
( "|| ( A || ( B C ) )", [ "||", ["A", "||", ["B", "C"]]]),
( "|| ( A || ( B C D ) )", [ "||", ["A", "||", ["B", "C", "D"]] ]),
( "|| ( A || ( B || ( C D ) E ) )", [ "||", ["A", "||", ["B", "||", ["C", "D"], "E"]] ]),
( "a? ( A )", ["a?", ["A"]]),
)
test_cases_xfail = (
"( A",
"A )",
"||( A B )",
"|| (A B )",
"|| ( A B)",
"|| ( A B",
"|| A B )",
"|| A B",
"|| ( A B ) )",
"|| || B C",
"|| ( A B || )",
"a? A",
)
for dep_str, expected_result in test_cases:
self.assertEqual(paren_reduce(dep_str), expected_result)
for dep_str in test_cases_xfail:
self.assertRaisesMsg(dep_str,
InvalidDependString, paren_reduce, dep_str)
|