Move tests from test_issues.cpp/py into appropriate files

This commit is contained in:
Dean Moldovan
2017-06-07 16:52:50 +02:00
parent 44e9a4e6cf
commit bdfb50f384
21 changed files with 510 additions and 632 deletions

View File

@@ -1,5 +1,9 @@
import pytest
from pybind11_tests import ConstructorStats
def test_operator_overloading():
from pybind11_tests import Vector2, Vector, ConstructorStats
from pybind11_tests.operators import Vector2, Vector
v1 = Vector2(1, 2)
v2 = Vector(3, -1)
@@ -51,3 +55,53 @@ def test_operator_overloading():
assert cstats.move_constructions >= 10
assert cstats.copy_assignments == 0
assert cstats.move_assignments == 0
def test_operators_notimplemented():
"""#393: need to return NotSupported to ensure correct arithmetic operator behavior"""
from pybind11_tests.operators import C1, C2
c1, c2 = C1(), C2()
assert c1 + c1 == 11
assert c2 + c2 == 22
assert c2 + c1 == 21
assert c1 + c2 == 12
def test_nested():
"""#328: first member in a class can't be used in operators"""
from pybind11_tests.operators import NestA, NestB, NestC, get_NestA, get_NestB, get_NestC
a = NestA()
b = NestB()
c = NestC()
a += 10
assert get_NestA(a) == 13
b.a += 100
assert get_NestA(b.a) == 103
c.b.a += 1000
assert get_NestA(c.b.a) == 1003
b -= 1
assert get_NestB(b) == 3
c.b -= 3
assert get_NestB(c.b) == 1
c *= 7
assert get_NestC(c) == 35
abase = a.as_base()
assert abase.value == -2
a.as_base().value += 44
assert abase.value == 42
assert c.b.a.as_base().value == -2
c.b.a.as_base().value += 44
assert c.b.a.as_base().value == 42
del c
pytest.gc_collect()
del a # Should't delete while abase is still alive
pytest.gc_collect()
assert abase.value == 42
del abase, b
pytest.gc_collect()