aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/cython/Cython/Build/Tests/TestStripLiterals.py
blob: 3f4261128fe73efea16bf65c1e7afbb48849443b (plain) (blame)
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
47
48
49
50
51
52
53
54
55
56
57
from Cython.Build.Dependencies import strip_string_literals 
 
from Cython.TestUtils import CythonTest 
 
class TestStripLiterals(CythonTest): 
 
    def t(self, before, expected): 
        actual, literals = strip_string_literals(before, prefix="_L") 
        self.assertEqual(expected, actual)
        for key, value in literals.items(): 
            actual = actual.replace(key, value) 
        self.assertEqual(before, actual)
 
    def test_empty(self): 
        self.t("", "") 
 
    def test_single_quote(self): 
        self.t("'x'", "'_L1_'") 
 
    def test_double_quote(self): 
        self.t('"x"', '"_L1_"') 
 
    def test_nested_quotes(self): 
        self.t(""" '"' "'" """, """ '_L1_' "_L2_" """) 
 
    def test_triple_quote(self): 
        self.t(" '''a\n''' ", " '''_L1_''' ") 
 
    def test_backslash(self): 
        self.t(r"'a\'b'", "'_L1_'") 
        self.t(r"'a\\'", "'_L1_'") 
        self.t(r"'a\\\'b'", "'_L1_'") 
 
    def test_unicode(self): 
        self.t("u'abc'", "u'_L1_'") 
 
    def test_raw(self): 
        self.t(r"r'abc\\'", "r'_L1_'") 
 
    def test_raw_unicode(self): 
        self.t(r"ru'abc\\'", "ru'_L1_'") 
 
    def test_comment(self): 
        self.t("abc # foo", "abc #_L1_") 
 
    def test_comment_and_quote(self): 
        self.t("abc # 'x'", "abc #_L1_") 
        self.t("'abc#'", "'_L1_'") 
 
    def test_include(self): 
        self.t("include 'a.pxi' # something here", 
               "include '_L1_' #_L2_") 
 
    def test_extern(self): 
        self.t("cdef extern from 'a.h': # comment", 
               "cdef extern from '_L1_': #_L2_")