예제 #1
0
 def test_dealloc(self):
     A = Bipartition([1, -1, 2, -2])
     B = Bipartition([-7, -6, -5, -4], [3, 2, 1], [-3, -2, -1, 4, 5, 6, 7])
     del A, B
     with self.assertRaises(NameError):
         A
     with self.assertRaises(NameError):
         B
예제 #2
0
 def test_generator(self):
     self.assertEqual(list(Bipartition([1, 2], [-2, -1])), [0, 0, 1, 1])
     self.assertEqual(list(Bipartition([-1, -2], [2, -3], [1, 3])),
                      [0, 1, 0, 2, 2, 1])
     self.assertEqual(
         list(
             Bipartition([-7, -6, -5, -4], [3, 2, 1],
                         [-3, -2, -1, 4, 5, 6, 7])),
         [0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2])
예제 #3
0
    def test_init_fail(self):
        with self.assertRaises(ValueError):
            Bipartition([1, -1, 2])
        with self.assertRaises(ValueError):
            Bipartition([1, 2, 3], [-3, -2])

        with self.assertRaises(TypeError):
            Bipartition([1, 2, 3], (-1, -2, -3))
        with self.assertRaises(TypeError):
            Bipartition(1, 2, -1, -2)
예제 #4
0
    def test_blocks1(self):
        self.assertEqual(
            Bipartition([1, 2], [-2, -1]).blocks(), [[1, 2], [-1, -2]])
        self.assertEqual(
            Bipartition([-7, -6, -5, -4], [3, 2, 1],
                        [-3, -2, -1, 4, 5, 6, 7]).blocks(),
            [[1, 2, 3], [4, 5, 6, 7, -1, -2, -3], [-4, -5, -6, -7]])
        self.assertEqual(
            Bipartition([-1, -2], [2, -3], [1, 3]).blocks(),
            [[1, 3], [2, -3], [-1, -2]])

        x = Bipartition([-1, -2], [2, -3], [1, 3])
        self.assertEqual((x * x).blocks(), [[1, 3], [2, -3], [-1, -2]])
예제 #5
0
    def test_mul(self):
        self.assertEqual(BooleanMat([True, False], [False, True]) * \
                         BooleanMat([False, False], [False, True]),
                         BooleanMat([False, False], [False, True]))
        self.assertEqual(
            BooleanMat([False]) * BooleanMat([True]), BooleanMat([False]))
        self.assertEqual(BooleanMat([False, True, True],
                                    [True, True, False],
                                    [False, False, False]) * \
                         BooleanMat([False, True, False],
                                    [True, False, False],
                                    [False, False, True]),
                         BooleanMat([True, False, True],
                                    [True, True, False],
                                    [False, False, False]))

        with self.assertRaises(TypeError):
            BooleanMat([True, True], [False, False]) * Transformation([1, 1])
        with self.assertRaises(TypeError):
            BooleanMat([False, True, True], [True, True, False],
                       [False, False, False]) * PartialPerm([0, 1], [1, 2], 3)
        with self.assertRaises(TypeError):
            BooleanMat([True]) * [True]
        with self.assertRaises(TypeError):
            BooleanMat([True, False], [False, True]) * Bipartition([1, 2],
                                                                   [-1], [-2])

        with self.assertRaises(ValueError):
            BooleanMat([False, True, True],
                       [True, True, False],
                       [False, False, False]) * \
            BooleanMat([True, False], [False, True])
예제 #6
0
    def test_richcmp(self):
        # FIXME should be self.assertEqual and self.assertNotEqual
        assert BooleanMat([True, False], [False, True]) == \
               BooleanMat([True, False], [False, True])
        assert not BooleanMat([True, False], [False, True]) != \
                   BooleanMat([True, False], [False, True])
        assert not BooleanMat([True, False], [False, True]) == \
                   BooleanMat([False, False], [False, True])
        assert BooleanMat([False]) < BooleanMat([True])
        assert not BooleanMat([False, True, True],
                              [True, True, False],
                              [False, False, False]) < \
                   BooleanMat([False, True, False],
                              [True, False, False],
                              [False, False, True])
        assert BooleanMat([False]) <= BooleanMat([False])
        assert BooleanMat([True, False], [False, True]) > \
               BooleanMat([True, False], [False, False])
        assert not BooleanMat([True, False], [False, True]) > \
                   BooleanMat([True, False], [False, True])
        assert BooleanMat([False]) >= BooleanMat([False])

        with self.assertRaises(TypeError):
            Bipartition([1, -2], [-1, 2]) >= \
            BooleanMat([False, False], [True, False])
        with self.assertRaises(TypeError):
            BooleanMat([False, False], [True, False]) < Transformation([0, 1])
        with self.assertRaises(TypeError):
            BooleanMat([True, False], [False, True]) == \
            PartialPerm([0], [1], 2)
예제 #7
0
    def test_richcmp(self):
        self.assertEqual(PBR([[1, -1], [-2, -1, 2]], [[2], [-2]]),
                         PBR([[1, -1], [-2, -1, 2]], [[2], [-2]]))
        self.assertEqual(PBR([[1, -1], [-2, -1, 2]], [[2], [-2]]),
                         PBR([[1, -1], [-2, -1, 2]], [[2], [-2]]))
        self.assertNotEqual(
            PBR([[1, -1], [-2, -1, 2]], [[2], [-2]]),
            PBR([[1, 2], [-2, 1, 2], [3, -3]], [[2, 1], [-2, 2, 1], [1, -1]]))
        self.assertTrue(
            PBR([[1], [1, 2, -1]], [[1], [2, -1, 1]]) < PBR([[1], [2]],
                                                            [[-1], [-2]]))
        self.assertTrue(
            PBR([[1, -1, 3], [-2, -1, 2], [3, -2]], [[2], [-2], [1, -1, 2]]) >
            PBR([[1, -1], [-2, -1, 2]], [[2], [-2]]))
        self.assertTrue(
            PBR([[1, -1, 3], [-2, -1, 2], [3, -2]], [[2], [-2], [1, -1, 2]]) >=
            PBR([[1, -1], [-2, -1, 2]], [[2], [-2]]))
        self.assertTrue(
            PBR([[1, -1], [-2, -1, 2]], [[2], [-2]]) <= PBR(
                [[1, -1], [-2, -1, 2]], [[2], [-2]]))

        with self.assertRaises(TypeError):
            (PBR([[1, -1, 3], [-2, -1, 2], [3, -2]],
                 [[2], [-2], [1, -1, 2]]) == Bipartition([1, -1], [2, 3, -2],
                                                         [-3]))
        with self.assertRaises(TypeError):
            PBR([[1, -1], [-2, -1]], [[1], [-2, -1]]) < Transformation([0, 1])
        with self.assertRaises(TypeError):
            PBR([[1, -1], [-2, -1]], [[1], [-2, -1]]) != \
            PartialPerm([0, 1], [1, 0], 2)
        with self.assertRaises(TypeError):
            PBR([[1, -1]], [[1]]) < 3
예제 #8
0
    def test_mul(self):
        self.assertEqual(
            PBR([[1, -1]], [[1]]) * PBR([[1, -1]], [[1]]), PBR([[1, -1]],
                                                               [[1]]))
        self.assertEqual(
            PBR([[1, -1], [-2, -1]], [[1], [-2, -1]]) *
            PBR([[-1, 1, 2], [2]], [[-1, 1], [-2, 2]]),
            PBR([[1, -1], [1, -1]], [[1, -1], [1, -1, -2]]))
        self.assertEqual(
            PBR([[-1, 1, 2], [2]], [[-1, 1], [-2, 2]]) *
            PBR([[1, -1], [-2, -1]], [[1], [-2, -1]]),
            PBR([[-1, 1, 2], [2]], [[-1, 1], [-2, -1]]))
        self.assertEqual(
            PBR([[1, -1, 3], [-2, -1, 2], [3, -2]], [[2], [-2], [1, -1, 2]]) *
            PBR([[1, -1, 3], [-2, -1, 2], [3, -3, -2]],
                [[1, 2], [-2, 3, -3], [1, -1]]),
            PBR([[-1, 1, 2, 3], [-2, -1, 1, 2], [-2, -1, 3]],
                [[-2, -1, 2], [-3, -2, -1, 1, 2], [-1, 2]]))

        with self.assertRaises(TypeError):
            Transformation([0, 2, 1]) * \
            PBR([[1, -1, 3], [-2, -1, 2], [3, -2]], [[2], [-2], [1, -1, 2]])
        with self.assertRaises(TypeError):
            PBR([[1, -1, 3], [-2, -1, 2], [3, -2]],
                [[2], [-2], [1, -1, 2]]) * \
            Bipartition([1, -1], [2, 3, -3], [-2])
        with self.assertRaises(TypeError):
            PBR([[1, -1]], [[1]]) * 0.142857

        with self.assertRaises(ValueError):
            PBR([[1, -1, 3], [-2, -1, 2], [3, -2]],
                [[2], [-2], [1, -1, 2]]) * PBR([[1, -1]], [[1]])
예제 #9
0
    def test_richcmp(self):
        # FIXME should be self.assertEqual and self.assertNotEqual
        assert PartialPerm([1, 2, 3], [2, 1, 0], 5) == \
               PartialPerm([1, 2, 3], [2, 1, 0], 5)
        assert not PartialPerm([1, 2, 3], [2, 1, 0], 5) != \
                   PartialPerm([1, 2, 3], [2, 1, 0], 5)
        assert not PartialPerm([1, 2, 4], [2, 1, 0], 5) == \
                   PartialPerm([1, 2, 3], [2, 3, 0], 5)
        assert PartialPerm([1, 2, 4], [2, 1, 0], 5) != \
               PartialPerm([1, 2, 3], [2, 3, 0], 5)
        assert not PartialPerm([1, 2, 4], [2, 1, 0], 5) < \
                   PartialPerm([1, 2, 3], [2, 3, 0], 5)
        assert PartialPerm([1, 2], [0, 1], 3) < \
               PartialPerm([2, 0], [0, 1], 3)
        assert not PartialPerm([1, 2], [0, 1], 3) > \
                   PartialPerm([2, 0], [0, 1], 3)
        assert PartialPerm([1, 2], [1, 2], 3) > \
               PartialPerm([1, 2], [0, 1], 3)
        assert PartialPerm([1, 2], [1, 2], 3) >= \
               PartialPerm([1, 2], [0, 1], 3)
        assert PartialPerm([1, 2, 3], [2, 1, 0], 5) <= \
               PartialPerm([1, 2, 3], [2, 1, 0], 5)

        with self.assertRaises(TypeError):
            PartialPerm([1, 2], [2, 1], 3) == \
            Bipartition([1, -1], [2, 3, -2], [-3])
        with self.assertRaises(TypeError):
            PartialPerm([0, 1], [0, 1], 2) < Transformation([0, 1])
        with self.assertRaises(TypeError):
            PartialPerm([0, 1], [0, 1], 2) != Transformation([0, 1])
예제 #10
0
    def test_richcmp(self):
        # FIXME should be self.assertEqual and self.assertNotEqual
        assert Transformation([1, 2, 2, 0]) == Transformation([1, 2, 2, 0])
        assert not Transformation([1, 2, 2, 0]) == Transformation([1, 2, 1, 3])
        assert Transformation([1, 2, 2, 0]) != Transformation([1, 2, 1, 3])
        assert not Transformation([2, 2, 1]) < Transformation([0, 1, 2])
        assert Transformation([2, 2, 1]) > Transformation([0, 1, 2])
        assert Transformation([2, 2, 1]) <= Transformation([2, 2, 2])
        assert Transformation([2, 2, 2]) <= Transformation([2, 2, 2])
        assert Transformation([2, 2, 2]) >= Transformation([2, 2, 0])
        assert Transformation([3, 2, 3, 0]) >= Transformation([3, 2, 0, 1])

        with self.assertRaises(TypeError):
            Transformation([2, 2, 0]) == Bipartition([1, -1], [2, 3, -2], [-3])
        with self.assertRaises(TypeError):
            Bipartition([1, -1], [2, -2]) < Transformation([0, 1])
        with self.assertRaises(TypeError):
            Bipartition([1, -1], [2, -2]) != Transformation([0, 1])
예제 #11
0
 def test_repr(self):
     self.assertEqual(eval(Bipartition([1, 2], [-2, -1]).__repr__()),
                      Bipartition([1, 2], [-2, -1]))
     self.assertEqual(
         eval(Bipartition([-1, -2], [2, -3], [1, 3]).__repr__()),
         Bipartition([-1, -2], [2, -3], [1, 3]))
     self.assertEqual(
         eval(
             Bipartition([-7, -6, -5, -4], [3, 2, 1],
                         [-3, -2, -1, 4, 5, 6, 7]).__repr__()),
         Bipartition([-7, -6, -5, -4], [3, 2, 1], [-3, -2, -1, 4, 5, 6, 7]))
예제 #12
0
 def test_identity(self):
     self.assertEqual(
         Bipartition([1, 2], [-2, -1]).identity(),
         Bipartition([1, -1], [2, -2]))
     self.assertEqual(
         Bipartition([-7, -6, -5, -4], [3, 2, 1],
                     [-3, -2, -1, 4, 5, 6, 7]).identity(),
         Bipartition([1, -1], [2, -2], [3, -3], [4, -4], [5, -5], [6, -6],
                     [7, -7]))
     self.assertEqual(
         Bipartition([-1, -2], [2, -3], [1, 3]).identity(),
         Bipartition([1, -1], [2, -2], [3, -3]))
예제 #13
0
    def test_block(self):
        self.assertEqual(Bipartition([1, 2], [-2, -1]).block(-2), 1)
        self.assertEqual(
            Bipartition([-7, -6, -5, -4], [3, 2, 1],
                        [-3, -2, -1, 4, 5, 6, 7]).block(3), 0)
        self.assertEqual(Bipartition([-1, -2], [2, -3], [1, 3]).block(-1), 2)

        with self.assertRaises(IndexError):
            Bipartition([1, 2], [-2, -1]).block(-3)
        with self.assertRaises(IndexError):
            Bipartition([-7, -6, -5, -4], [3, 2, 1],
                        [-3, -2, -1, 4, 5, 6, 7]).block(26)
        with self.assertRaises(TypeError):
            Bipartition([-1, -2], [2, -3], [1, 3]).block('a')
예제 #14
0
    def test_mul(self):
        self.assertEqual(PartialPerm([0, 1], [0, 1], 2) * \
                         PartialPerm([0, 1], [0, 1], 2),
                         PartialPerm([0, 1], [0, 1], 2))
        self.assertEqual(PartialPerm([1, 2, 4, 6, 7, 23],
                                     [0, 5, 2, 4, 6, 7], 26) * \
                         PartialPerm([2, 4, 3, 5, 0, 19],
                                     [7, 8, 2, 3, 23, 0], 26),
                         PartialPerm([1, 2, 4, 6], [23, 3, 7, 8], 26))
        self.assertEqual(PartialPerm([0, 3, 7, 2], [5, 7, 1, 3], 8) * \
                         PartialPerm([4, 7, 3, 6], [5, 0, 3, 2], 8),
                         PartialPerm([2, 3], [3, 0], 8))

        with self.assertRaises(TypeError):
            PartialPerm([0, 1], [0, 1], 2) * Transformation([0, 1])
        with self.assertRaises(TypeError):
            PartialPerm([0, 1], [0, 1], 2) * Bipartition([-2, 1], [-1, 2])

        with self.assertRaises(ValueError):
            PartialPerm([1, 2], [0, 1], 3) * PartialPerm([1, 2], [0, 1], 4)
예제 #15
0
    def test_mul(self):
        self.assertEqual(Transformation([1, 3, 2, 1]) * \
                         Transformation([0, 3, 2, 2]),
                         Transformation([3, 2, 2, 3]))
        self.assertEqual(
            Transformation([2, 2, 2]) * Transformation([1, 0, 1]),
            Transformation([1, 1, 1]))
        self.assertEqual(Transformation([0, 1, 2, 3, 4, 5]) * \
                         Transformation([3, 2, 2, 3, 1, 4]),
                         Transformation([3, 2, 2, 3, 1, 4]))

        with self.assertRaises(TypeError):
            Transformation([0, 2, 1]) * PartialPerm([0, 1], [1, 2], 3)
        with self.assertRaises(TypeError):
            Transformation([0, 2, 1]) * Bipartition([1, -1], [2, 3, -3], [-2])
        with self.assertRaises(TypeError):
            Transformation([0, 1, 2, 3, 4, 5]) * 8

        with self.assertRaises(ValueError):
            Transformation([0, 2, 1]) * Transformation([1, 2, 3, 0])
예제 #16
0
    def test_is_transverse_block(self):
        self.assertEqual(
            Bipartition([1, 2], [-2, -1]).is_transverse_block(1), False)
        self.assertEqual(
            Bipartition([-7, -6, -5, -4], [3, 2, 1],
                        [-3, -2, -1, 4, 5, 6, 7]).is_transverse_block(1), True)
        self.assertEqual(
            Bipartition([-1, -2], [2, -3], [1, 3]).is_transverse_block(1),
            True)

        with self.assertRaises(IndexError):
            Bipartition([1, 2], [-2, -1]).is_transverse_block(-3)
        with self.assertRaises(IndexError):
            Bipartition([-7, -6, -5, -4], [3, 2, 1],
                        [-3, -2, -1, 4, 5, 6, 7]).is_transverse_block(26)

        with self.assertRaises(TypeError):
            Bipartition([-1, -2], [2, -3], [1, 3]).is_transverse_block('a')
        with self.assertRaises(TypeError):
            Bipartition([-1, -2], [2, -3], [1, 3]).is_transverse_block([7, 26])
예제 #17
0
    def test_pow(self):
        self.assertEqual(
            Bipartition([-7, -6, -5, -4], [3, 2, 1],
                        [-3, -2, -1, 4, 5, 6, 7])**20,
            Bipartition([1, 2, 3], [4, 5, 6, 7], [-1, -2, -3],
                        [-4, -5, -6, -7]))
        self.assertEqual(
            Bipartition([1, -1, 2, -2])**26, Bipartition([1, 2, -1, -2]))
        self.assertEqual(
            Bipartition([-1, -2], [2, -3], [1, 3])**3,
            Bipartition([1, 3], [2, -3], [-1, -2]))

        with self.assertRaises(ValueError):
            Bipartition([1, -1, 2, -2])**-26

        self.assertEqual(
            Bipartition([1], [-1, 2, -2])**0,
            Bipartition([1], [-1, 2, -2]).identity())

        with self.assertRaises(TypeError):
            Bipartition([1, 2], [-1], [-2])**3.141592653589793238462643383279
        with self.assertRaises(TypeError):
            Bipartition([1, 2], [-1], [-2])**'c'
예제 #18
0
    def test_mul(self):
        self.assertEqual(Bipartition([1, -1, 2, -2]) * \
                         Bipartition([1, -1, 2, -2]),
                         Bipartition([1, 2, -1, -2]))
        self.assertEqual(Bipartition([1, 2], [-1], [-2]) * \
                         Bipartition([1, -1], [2, -2]),
                         Bipartition([1, 2], [-1], [-2]))
        self.assertEqual(Bipartition([1, -1], [2, 3, -2], [-3]) * \
                         Bipartition([1, 3, 2, -3], [-2], [-1]),
                         Bipartition([1, 2, 3, -3], [-1], [-2]))

        with self.assertRaises(TypeError):
            Bipartition([1, -1], [2, 3, -3], [-2]) * \
            PartialPerm([0, 1], [1, 2], 3)
        with self.assertRaises(TypeError):
            Transformation([0, 2, 1]) * Bipartition([1, -1], [2, 3, -3], [-2])
        with self.assertRaises(TypeError):
            Bipartition([1, -1], [2, 3, -3], [-2]) * 26

        with self.assertRaises(ValueError):
            Bipartition([1, -1], [2, 3, -3], [-2]) * \
            Bipartition([1, -1, 2, -2])
예제 #19
0
 def test_init(self):
     Bipartition([-1, -2], [2, -3], [1, 3])
     Bipartition([-7, -6, -5, -4], [3, 2, 1], [-3, -2, -1, 4, 5, 6, 7])
     Bipartition([1, -1, 2, -2])
예제 #20
0
 def test_blocks2(self):
     x = Bipartition([1, 2], [-2, -1, 3], [-3])
     self.assertEqual(x.blocks(), [[1, 2], [3, -1, -2], [-3]])
     self.assertEqual((x * x.identity()).blocks(),
                      [[1, 2], [3, -1, -2], [-3]])
예제 #21
0
 def test_nr_blocks(self):
     self.assertEqual(Bipartition([1, 2], [-2, -1]).nr_blocks(), 2)
     self.assertEqual(
         Bipartition([-7, -6, -5, -4], [3, 2, 1],
                     [-3, -2, -1, 4, 5, 6, 7]).nr_blocks(), 3)
     self.assertEqual(Bipartition([-1, -2], [2, -3], [1, 3]).nr_blocks(), 3)
예제 #22
0
    def test_richcmp(self):
        # FIXME should be self.assertEqual and self.assertNotEqual
        assert Bipartition([3, -4, -1], [2, -3], [4, -2], [1]) == \
               Bipartition([4, -2], [3, -4, -1], [1], [2, -3])
        assert not Bipartition([3, -4, -1], [2, -3], [4, -2], [1]) != \
                   Bipartition([4, -2], [3, -4, -1], [1], [2, -3])
        assert Bipartition([1, -1, 3], [-3, 2, -2]) <= \
               Bipartition([1, -1], [2, 3, -2], [-3])
        assert Bipartition([1, -1], [2, -2]) < Bipartition([1, -2], [2, -1])
        assert Bipartition([1, -1], [2, -2]) <= Bipartition([1, -2], [2, -1])
        assert Bipartition([1, -1, 3], [-3, 2, -2]) >= \
               Bipartition([1, -2], [2, -1])
        assert not Bipartition([1, -1, 3], [-3, 2, -2]) > \
                   Bipartition([1, -1], [2, 3, -2], [-3])

        with self.assertRaises(TypeError):
            PartialPerm([1, 2], [2, 1], 3) == \
            Bipartition([1, -1], [2, 3, -2], [-3])
        with self.assertRaises(TypeError):
            Bipartition([1, -1], [2, -2]) < Transformation([0, 1])
        with self.assertRaises(TypeError):
            Bipartition([1, -1], [2, -2]) != Transformation([0, 1])
예제 #23
0
 def test_degree(self):
     self.assertEqual(Bipartition([1, 2], [-2, -1]).degree(), 2)
     self.assertEqual(
         Bipartition([-7, -6, -5, -4], [3, 2, 1],
                     [-3, -2, -1, 4, 5, 6, 7]).degree(), 7)
     self.assertEqual(Bipartition([-1, -2], [2, -3], [1, 3]).degree(), 3)