Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
pybind11
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open
pybind11
Commits
baa2e492
Commit
baa2e492
authored
Feb 12, 2021
by
Ralf W. Grosse-Kunstleve
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Using re.match to accommodate variable number of intermediate MvCtor.
parent
14099daa
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
20 additions
and
19 deletions
+20
-19
tests/test_class_sh_basic.cpp
+2
-2
tests/test_class_sh_basic.py
+18
-17
No files found.
tests/test_class_sh_basic.cpp
View file @
baa2e492
...
@@ -12,8 +12,8 @@ struct atyp { // Short for "any type".
...
@@ -12,8 +12,8 @@ struct atyp { // Short for "any type".
std
::
string
mtxt
;
std
::
string
mtxt
;
atyp
()
:
mtxt
(
"DefaultConstructor"
)
{}
atyp
()
:
mtxt
(
"DefaultConstructor"
)
{}
atyp
(
const
std
::
string
&
mtxt_
)
:
mtxt
(
mtxt_
)
{}
atyp
(
const
std
::
string
&
mtxt_
)
:
mtxt
(
mtxt_
)
{}
atyp
(
const
atyp
&
other
)
{
mtxt
=
other
.
mtxt
+
"
.
CpCtor"
;
}
atyp
(
const
atyp
&
other
)
{
mtxt
=
other
.
mtxt
+
"
_
CpCtor"
;
}
atyp
(
atyp
&&
other
)
{
mtxt
=
other
.
mtxt
+
"
.
MvCtor"
;
}
atyp
(
atyp
&&
other
)
{
mtxt
=
other
.
mtxt
+
"
_
MvCtor"
;
}
};
};
// clang-format off
// clang-format off
...
...
tests/test_class_sh_basic.py
View file @
baa2e492
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
import
pytest
import
pytest
import
re
from
pybind11_tests
import
class_sh_basic
as
m
from
pybind11_tests
import
class_sh_basic
as
m
...
@@ -16,10 +17,10 @@ def test_atyp_constructors():
...
@@ -16,10 +17,10 @@ def test_atyp_constructors():
@pytest.mark.parametrize
(
@pytest.mark.parametrize
(
"rtrn_f, expected"
,
"rtrn_f, expected"
,
[
[
(
m
.
rtrn_valu
,
"rtrn_valu
.
MvCtor"
),
(
m
.
rtrn_valu
,
"rtrn_valu
(_MvCtor)*_
MvCtor"
),
(
m
.
rtrn_rref
,
"rtrn_rref
.
MvCtor"
),
(
m
.
rtrn_rref
,
"rtrn_rref
(_MvCtor)*_
MvCtor"
),
(
m
.
rtrn_cref
,
"rtrn_cref
.
CpCtor"
),
(
m
.
rtrn_cref
,
"rtrn_cref
(_MvCtor)*_
CpCtor"
),
(
m
.
rtrn_mref
,
"rtrn_mref
.
CpCtor"
),
(
m
.
rtrn_mref
,
"rtrn_mref
(_MvCtor)*_
CpCtor"
),
(
m
.
rtrn_cptr
,
"rtrn_cptr"
),
(
m
.
rtrn_cptr
,
"rtrn_cptr"
),
(
m
.
rtrn_mptr
,
"rtrn_mptr"
),
(
m
.
rtrn_mptr
,
"rtrn_mptr"
),
(
m
.
rtrn_shmp
,
"rtrn_shmp"
),
(
m
.
rtrn_shmp
,
"rtrn_shmp"
),
...
@@ -31,26 +32,26 @@ def test_atyp_constructors():
...
@@ -31,26 +32,26 @@ def test_atyp_constructors():
],
],
)
)
def
test_cast
(
rtrn_f
,
expected
):
def
test_cast
(
rtrn_f
,
expected
):
assert
m
.
get_mtxt
(
rtrn_f
())
==
expected
assert
re
.
match
(
expected
,
m
.
get_mtxt
(
rtrn_f
()))
@pytest.mark.parametrize
(
@pytest.mark.parametrize
(
"pass_f, mtxt, expected"
,
"pass_f, mtxt, expected"
,
[
[
(
m
.
pass_valu
,
"Valu"
,
"pass_valu:Valu
.MvCtor.
CpCtor"
),
(
m
.
pass_valu
,
"Valu"
,
"pass_valu:Valu
(_MvCtor)*_
CpCtor"
),
(
m
.
pass_rref
,
"Rref"
,
"pass_rref:Rref
.MvCtor.
CpCtor"
),
(
m
.
pass_rref
,
"Rref"
,
"pass_rref:Rref
(_MvCtor)*_
CpCtor"
),
(
m
.
pass_cref
,
"Cref"
,
"pass_cref:Cref
.
MvCtor"
),
(
m
.
pass_cref
,
"Cref"
,
"pass_cref:Cref
(_MvCtor)*_
MvCtor"
),
(
m
.
pass_mref
,
"Mref"
,
"pass_mref:Mref
.
MvCtor"
),
(
m
.
pass_mref
,
"Mref"
,
"pass_mref:Mref
(_MvCtor)*_
MvCtor"
),
(
m
.
pass_cptr
,
"Cptr"
,
"pass_cptr:Cptr
.
MvCtor"
),
(
m
.
pass_cptr
,
"Cptr"
,
"pass_cptr:Cptr
(_MvCtor)*_
MvCtor"
),
(
m
.
pass_mptr
,
"Mptr"
,
"pass_mptr:Mptr
.
MvCtor"
),
(
m
.
pass_mptr
,
"Mptr"
,
"pass_mptr:Mptr
(_MvCtor)*_
MvCtor"
),
(
m
.
pass_shmp
,
"Shmp"
,
"pass_shmp:Shmp
.
MvCtor"
),
(
m
.
pass_shmp
,
"Shmp"
,
"pass_shmp:Shmp
(_MvCtor)*_
MvCtor"
),
(
m
.
pass_shcp
,
"Shcp"
,
"pass_shcp:Shcp
.
MvCtor"
),
(
m
.
pass_shcp
,
"Shcp"
,
"pass_shcp:Shcp
(_MvCtor)*_
MvCtor"
),
(
m
.
pass_uqmp
,
"Uqmp"
,
"pass_uqmp:Uqmp
.
MvCtor"
),
(
m
.
pass_uqmp
,
"Uqmp"
,
"pass_uqmp:Uqmp
(_MvCtor)*_
MvCtor"
),
(
m
.
pass_uqcp
,
"Uqcp"
,
"pass_uqcp:Uqcp
.
MvCtor"
),
(
m
.
pass_uqcp
,
"Uqcp"
,
"pass_uqcp:Uqcp
(_MvCtor)*_
MvCtor"
),
],
],
)
)
def
test_load_with_mtxt
(
pass_f
,
mtxt
,
expected
):
def
test_load_with_mtxt
(
pass_f
,
mtxt
,
expected
):
assert
pass_f
(
m
.
atyp
(
mtxt
))
==
expected
assert
re
.
match
(
expected
,
pass_f
(
m
.
atyp
(
mtxt
)))
@pytest.mark.parametrize
(
@pytest.mark.parametrize
(
...
@@ -89,7 +90,7 @@ def test_unique_ptr_roundtrip(num_round_trips=1000):
...
@@ -89,7 +90,7 @@ def test_unique_ptr_roundtrip(num_round_trips=1000):
for
_
in
range
(
num_round_trips
):
for
_
in
range
(
num_round_trips
):
id_orig
=
id
(
recycled
)
id_orig
=
id
(
recycled
)
recycled
=
m
.
unique_ptr_roundtrip
(
recycled
)
recycled
=
m
.
unique_ptr_roundtrip
(
recycled
)
assert
m
.
get_mtxt
(
recycled
)
==
"passenger.MvCtor"
assert
re
.
match
(
"passenger(_MvCtor)*_MvCtor"
,
m
.
get_mtxt
(
recycled
))
id_rtrn
=
id
(
recycled
)
id_rtrn
=
id
(
recycled
)
# Ensure the returned object is a different Python instance.
# Ensure the returned object is a different Python instance.
assert
id_rtrn
!=
id_orig
assert
id_rtrn
!=
id_orig
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment