Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
pybind11
Commits
bbe45082
Commit
bbe45082
authored
Oct 20, 2016
by
Ben North
Browse files
Test uncopyable static member
Without the previous commit, this test generates a core dump.
parent
24a2054d
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
59 additions
and
0 deletions
+59
-0
tests/CMakeLists.txt
tests/CMakeLists.txt
+1
-0
tests/test_copy_move_policies.cpp
tests/test_copy_move_policies.cpp
+41
-0
tests/test_copy_move_policies.py
tests/test_copy_move_policies.py
+17
-0
No files found.
tests/CMakeLists.txt
View file @
bbe45082
...
...
@@ -12,6 +12,7 @@ set(PYBIND11_TEST_FILES
test_chrono.cpp
test_class_args.cpp
test_constants_and_functions.cpp
test_copy_move_policies.cpp
test_eigen.cpp
test_enum.cpp
test_eval.cpp
...
...
tests/test_copy_move_policies.cpp
0 → 100644
View file @
bbe45082
/*
tests/test_copy_move_policies.cpp -- 'copy' and 'move'
return value policies
Copyright (c) 2016 Ben North <ben@redfrontdoor.org>
All rights reserved. Use of this source code is governed by a
BSD-style license that can be found in the LICENSE file.
*/
#include "pybind11_tests.h"
template
<
typename
derived
>
struct
empty
{
static
const
derived
&
get_one
()
{
return
instance_
;
}
static
derived
instance_
;
};
struct
lacking_copy_ctor
:
public
empty
<
lacking_copy_ctor
>
{
lacking_copy_ctor
()
{}
lacking_copy_ctor
(
const
lacking_copy_ctor
&
other
)
=
delete
;
};
template
<
>
lacking_copy_ctor
empty
<
lacking_copy_ctor
>::
instance_
{};
struct
lacking_move_ctor
:
public
empty
<
lacking_move_ctor
>
{
lacking_move_ctor
()
{}
lacking_move_ctor
(
const
lacking_move_ctor
&
other
)
=
delete
;
lacking_move_ctor
(
lacking_move_ctor
&&
other
)
=
delete
;
};
template
<
>
lacking_move_ctor
empty
<
lacking_move_ctor
>::
instance_
{};
test_initializer
copy_move_policies
([](
py
::
module
&
m
)
{
py
::
class_
<
lacking_copy_ctor
>
(
m
,
"lacking_copy_ctor"
)
.
def_static
(
"get_one"
,
&
lacking_copy_ctor
::
get_one
,
py
::
return_value_policy
::
copy
);
py
::
class_
<
lacking_move_ctor
>
(
m
,
"lacking_move_ctor"
)
.
def_static
(
"get_one"
,
&
lacking_move_ctor
::
get_one
,
py
::
return_value_policy
::
move
);
});
tests/test_copy_move_policies.py
0 → 100644
View file @
bbe45082
import
pytest
def
test_lacking_copy_ctor
():
from
pybind11_tests
import
lacking_copy_ctor
with
pytest
.
raises
(
RuntimeError
)
as
excinfo
:
lacking_copy_ctor
.
get_one
()
assert
"the object is non-copyable!"
in
str
(
excinfo
.
value
)
def
test_lacking_move_ctor
():
from
pybind11_tests
import
lacking_move_ctor
with
pytest
.
raises
(
RuntimeError
)
as
excinfo
:
lacking_move_ctor
.
get_one
()
assert
"the object is neither movable nor copyable!"
in
str
(
excinfo
.
value
)
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