def test_eye(self):

        test_mat = sp.eye(3)
        cols, rr_test_mat, rank = select_basis(test_mat)

        self.assertEqual(cols, [0, 1, 2])
        self.assertEqual(rank, 3)
    def test_blank_first_row(self):
        test_mat = sp.lil_matrix((4, 6), dtype=np.int8)
        test_mat.rows = [[], [0, 2], [4, 5], [1, 3]]
        test_mat.data = [[1]*len(row) for row in test_mat.rows]

        cols, rr_test_mat, rank = select_basis(test_mat)

        self.assertEqual(cols, [0, 1, 4])
        self.assertEqual(rank, 3)
    def test_augmented_eye(self):

        test_mat = sp.eye(3)
        test_mat = sp.hstack([test_mat, test_mat])

        cols, rr_test_mat, rank = select_basis(test_mat)

        self.assertEqual(cols, [0, 1, 2])
        self.assertEqual(rank, 3)
    def test_upper_triangular(self):

        test_mat = sp.lil_matrix((4, 4), dtype=np.int8)
        test_mat.rows = [[0, 3], [1], [2, 3], [3]]
        test_mat.data = [[1]*len(row) for row in test_mat.rows]

        cols, rr_test_mat, rank = select_basis(test_mat)

        self.assertEqual(cols, [0, 1, 2, 3])
        self.assertEqual(rank, 4)
    def test_augmented_eye_shuffled(self):

        test_mat = sp.lil_matrix((3, 6), dtype=np.int8)
        test_mat.rows = [[0, 2], [4, 5], [1, 3]]
        test_mat.data = [[1]*len(row) for row in test_mat.rows]

        cols, rr_test_mat, rank = select_basis(test_mat)

        self.assertEqual(cols, [0, 1, 4])
        self.assertEqual(rank, 3)