def test_as_matrix(self, row_dimensions, column_dimensions, real_operator):

        op = BlockedDiscreteBoundaryOperator(row_dimensions, column_dimensions)
        op[1, 0] = real_operator

        expected = op * np.eye(op.shape[1], dtype=op.dtype)
        actual = op.as_matrix()

        assert np.linalg.norm(expected - actual) < _eps
    def test_as_matrix(self,row_dimensions,column_dimensions,real_operator):


        op = BlockedDiscreteBoundaryOperator(row_dimensions,column_dimensions)
        op[1,0] = real_operator

        expected = op*np.eye(op.shape[1],dtype=op.dtype)
        actual = op.as_matrix()

        assert np.linalg.norm(expected-actual)<_eps
    def test_add_nonblocked_operator(self, row_dimensions, column_dimensions,
                                     real_operator):

        op = BlockedDiscreteBoundaryOperator(row_dimensions, column_dimensions)
        op[1, 0] = real_operator

        res = op + ZeroDiscreteBoundaryOperator(op.shape[0], op.shape[1])
        actual = res.as_matrix()
        expected = op.as_matrix()

        assert np.linalg.norm(actual - expected) < _eps
    def test_add_blocked_operator(self, row_dimensions, column_dimensions,
                                  real_operator):
        op = BlockedDiscreteBoundaryOperator(row_dimensions, column_dimensions)
        op[1, 0] = real_operator

        res = op + op
        actual = res.as_matrix()
        expected = 2 * op.as_matrix()

        assert isinstance(res, BlockedDiscreteBoundaryOperator)
        assert np.linalg.norm(actual - expected) < _eps
    def test_add_nonblocked_operator(self,row_dimensions,column_dimensions,
            real_operator):

        op = BlockedDiscreteBoundaryOperator(row_dimensions,column_dimensions)
        op[1,0] = real_operator

        res = op+ZeroDiscreteBoundaryOperator(op.shape[0],op.shape[1])
        actual = res.as_matrix()
        expected = op.as_matrix()

        assert np.linalg.norm(actual-expected)<_eps
    def test_add_blocked_operator(self,row_dimensions,column_dimensions,
            real_operator):
        op = BlockedDiscreteBoundaryOperator(row_dimensions,column_dimensions)
        op[1,0] = real_operator

        res = op+op
        actual = res.as_matrix()
        expected = 2*op.as_matrix()

        assert isinstance(res,BlockedDiscreteBoundaryOperator)
        assert np.linalg.norm(actual-expected)<_eps
    def test_scale(self, row_dimensions, column_dimensions, real_operator):

        op = BlockedDiscreteBoundaryOperator(row_dimensions, column_dimensions)
        op[1, 0] = real_operator

        alpha = 1 + 2.0j
        res = alpha * op

        expected = alpha * (op.as_matrix())
        actual = res.as_matrix()

        assert np.linalg.norm(expected - actual) < _eps
        assert isinstance(res, BlockedDiscreteBoundaryOperator)
    def test_scale(self,row_dimensions,column_dimensions,real_operator):

        op = BlockedDiscreteBoundaryOperator(row_dimensions,column_dimensions)
        op[1,0] = real_operator

        alpha = 1+2.0j
        res = alpha*op

        expected = alpha*(op.as_matrix())
        actual = res.as_matrix()

        assert np.linalg.norm(expected-actual)<_eps
        assert isinstance(res,BlockedDiscreteBoundaryOperator)