예제 #1
0
def test_from_python():
    with pytest.raises(RuntimeError) as excinfo:
        Matrix(np.array([1, 2, 3]))  # trying to assign a 1D array
    if str(excinfo.value) != "Incompatible buffer format!":
        raise AssertionError

    m3 = np.array([[1, 2, 3], [4, 5, 6]]).astype(np.float32)
    m4 = Matrix(m3)

    for i in range(m4.rows()):
        for j in range(m4.cols()):
            if m3[i, j] != m4[i, j]:
                raise AssertionError

    cstats = ConstructorStats.get(Matrix)
    if cstats.alive() != 1:
        raise AssertionError
    del m3, m4
    if cstats.alive() != 0:
        raise AssertionError
    if cstats.values() != ["2x3 matrix"]:
        raise AssertionError
    if cstats.copy_constructions != 0:
        raise AssertionError
    # assert cstats.move_constructions >= 0  # Don't invoke any
    if cstats.copy_assignments != 0:
        raise AssertionError
    if cstats.move_assignments != 0:
        raise AssertionError
def test_to_python():
    m = Matrix(5, 5)

    assert m[2, 3] == 0
    m[2, 3] = 4
    assert m[2, 3] == 4

    m2 = np.array(m, copy=False)
    assert m2.shape == (5, 5)
    assert abs(m2).sum() == 4
    assert m2[2, 3] == 4
    m2[2, 3] = 5
    assert m2[2, 3] == 5

    cstats = ConstructorStats.get(Matrix)
    assert cstats.alive() == 1
    del m
    pytest.gc_collect()
    assert cstats.alive() == 1
    del m2  # holds an m reference
    pytest.gc_collect()
    assert cstats.alive() == 0
    assert cstats.values() == ["5x5 matrix"]
    assert cstats.copy_constructions == 0
    # assert cstats.move_constructions >= 0  # Don't invoke any
    assert cstats.copy_assignments == 0
    assert cstats.move_assignments == 0
def test_from_python():
    with pytest.raises(RuntimeError) as excinfo:
        Matrix(np.array([1, 2, 3]))  # trying to assign a 1D array
    assert str(excinfo.value) == "Incompatible buffer format!"

    m3 = np.array([[1, 2, 3], [4, 5, 6]]).astype(np.float32)
    m4 = Matrix(m3)

    for i in range(m4.rows()):
        for j in range(m4.cols()):
            assert m3[i, j] == m4[i, j]

    cstats = ConstructorStats.get(Matrix)
    assert cstats.alive() == 1
    del m3, m4
    assert cstats.alive() == 0
    assert cstats.values() == ["2x3 matrix"]
    assert cstats.copy_constructions == 0
    # assert cstats.move_constructions >= 0  # Don't invoke any
    assert cstats.copy_assignments == 0
    assert cstats.move_assignments == 0
예제 #4
0
def test_to_python():
    m = Matrix(5, 5)

    if m[2, 3] != 0:
        raise AssertionError
    m[2, 3] = 4
    if m[2, 3] != 4:
        raise AssertionError

    m2 = np.array(m, copy=False)
    if m2.shape != (5, 5):
        raise AssertionError
    if abs(m2).sum() != 4:
        raise AssertionError
    if m2[2, 3] != 4:
        raise AssertionError
    m2[2, 3] = 5
    if m2[2, 3] != 5:
        raise AssertionError

    cstats = ConstructorStats.get(Matrix)
    if cstats.alive() != 1:
        raise AssertionError
    del m
    pytest.gc_collect()
    if cstats.alive() != 1:
        raise AssertionError
    del m2  # holds an m reference
    pytest.gc_collect()
    if cstats.alive() != 0:
        raise AssertionError
    if cstats.values() != ["5x5 matrix"]:
        raise AssertionError
    if cstats.copy_constructions != 0:
        raise AssertionError
    # assert cstats.move_constructions >= 0  # Don't invoke any
    if cstats.copy_assignments != 0:
        raise AssertionError
    if cstats.move_assignments != 0:
        raise AssertionError