@@ -16,12 +16,18 @@ def test_atyp_constructors():
16
16
assert obj .__class__ .__name__ == "atyp"
17
17
18
18
19
+ def check_regex (expected , actual ):
20
+ result = re .match (expected + "$" , actual )
21
+ if result is None :
22
+ pytest .fail ("expected: '{}' != actual: '{}'" .format (expected , actual ))
23
+
24
+
19
25
@pytest .mark .parametrize (
20
26
"rtrn_f, expected" ,
21
27
[
22
- (m .rtrn_valu , "rtrn_valu(_MvCtor)*_MvCtor " ),
23
- (m .rtrn_rref , "rtrn_rref(_MvCtor)*_MvCtor " ),
24
- (m .rtrn_cref , "rtrn_cref(_MvCtor)*_CpCtor " ),
28
+ (m .rtrn_valu , "rtrn_valu(_MvCtor){1,3} " ),
29
+ (m .rtrn_rref , "rtrn_rref(_MvCtor){1} " ),
30
+ (m .rtrn_cref , "rtrn_cref_CpCtor " ),
25
31
(m .rtrn_mref , "rtrn_mref" ),
26
32
(m .rtrn_cptr , "rtrn_cptr" ),
27
33
(m .rtrn_mptr , "rtrn_mptr" ),
@@ -34,25 +40,25 @@ def test_atyp_constructors():
34
40
],
35
41
)
36
42
def test_cast (rtrn_f , expected ):
37
- assert re . match (expected , m .get_mtxt (rtrn_f ()))
43
+ check_regex (expected , m .get_mtxt (rtrn_f ()))
38
44
39
45
40
46
@pytest .mark .parametrize (
41
47
"pass_f, mtxt, expected" ,
42
48
[
43
- (m .pass_valu , "Valu" , "pass_valu:Valu(_MvCtor)* _CpCtor" ),
44
- (m .pass_cref , "Cref" , "pass_cref:Cref(_MvCtor)*_MvCtor " ),
45
- (m .pass_mref , "Mref" , "pass_mref:Mref(_MvCtor)*_MvCtor " ),
46
- (m .pass_cptr , "Cptr" , "pass_cptr:Cptr(_MvCtor)*_MvCtor " ),
47
- (m .pass_mptr , "Mptr" , "pass_mptr:Mptr(_MvCtor)*_MvCtor " ),
48
- (m .pass_shmp , "Shmp" , "pass_shmp:Shmp(_MvCtor)*_MvCtor " ),
49
- (m .pass_shcp , "Shcp" , "pass_shcp:Shcp(_MvCtor)*_MvCtor " ),
50
- (m .pass_uqmp , "Uqmp" , "pass_uqmp:Uqmp(_MvCtor)*_MvCtor " ),
51
- (m .pass_uqcp , "Uqcp" , "pass_uqcp:Uqcp(_MvCtor)*_MvCtor " ),
49
+ (m .pass_valu , "Valu" , "pass_valu:Valu(_MvCtor){1,2} _CpCtor" ),
50
+ (m .pass_cref , "Cref" , "pass_cref:Cref(_MvCtor){1,2} " ),
51
+ (m .pass_mref , "Mref" , "pass_mref:Mref(_MvCtor){1,2} " ),
52
+ (m .pass_cptr , "Cptr" , "pass_cptr:Cptr(_MvCtor){1,2} " ),
53
+ (m .pass_mptr , "Mptr" , "pass_mptr:Mptr(_MvCtor){1,2} " ),
54
+ (m .pass_shmp , "Shmp" , "pass_shmp:Shmp(_MvCtor){1,2} " ),
55
+ (m .pass_shcp , "Shcp" , "pass_shcp:Shcp(_MvCtor){1,2} " ),
56
+ (m .pass_uqmp , "Uqmp" , "pass_uqmp:Uqmp(_MvCtor){1,2} " ),
57
+ (m .pass_uqcp , "Uqcp" , "pass_uqcp:Uqcp(_MvCtor){1,2} " ),
52
58
],
53
59
)
54
60
def test_load_with_mtxt (pass_f , mtxt , expected ):
55
- assert re . match (expected , pass_f (m .atyp (mtxt )))
61
+ check_regex (expected , pass_f (m .atyp (mtxt )))
56
62
57
63
58
64
@pytest .mark .parametrize (
@@ -111,7 +117,7 @@ def test_unique_ptr_roundtrip(num_round_trips=1000):
111
117
for _ in range (num_round_trips ):
112
118
id_orig = id (recycled )
113
119
recycled = m .unique_ptr_roundtrip (recycled )
114
- assert re . match ("passenger(_MvCtor)*_MvCtor " , m .get_mtxt (recycled ))
120
+ check_regex ("passenger(_MvCtor){1,2} " , m .get_mtxt (recycled ))
115
121
id_rtrn = id (recycled )
116
122
# Ensure the returned object is a different Python instance.
117
123
assert id_rtrn != id_orig
@@ -132,7 +138,7 @@ def test_unique_ptr_consumer_roundtrip(pass_f, rtrn_f, moved_out, moved_in):
132
138
recycled = m .atyp ("passenger" )
133
139
mtxt_orig = m .get_mtxt (recycled )
134
140
ptr_orig = m .get_ptr (recycled )
135
- assert re . match ( "passenger_(MvCtor ){1,2}" , mtxt_orig )
141
+ check_regex ( "passenger(_MvCtor ){1,2}" , mtxt_orig )
136
142
137
143
pass_f (c , recycled ) # pass object to C++ consumer c
138
144
if moved_out : # if moved (always), ensure it is flagged as disowned
0 commit comments