コード例 #1
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
 def test_intersection(self):
     rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]])
     self.assertEqual(len(rn1), 13)
     self.assertEqual(str(rn1), "8-9; 12-15\n10; 9-13\n")
     rn2 = RangeSetND([["10", "10"], ["9", "12-15"]])
     self.assertEqual(len(rn2), 5)
     self.assertEqual(str(rn2), "9; 12-15\n10; 10\n")
     rni = rn1.intersection(rn2)
     self.assertEqual(len(rni), 5)
     self.assertEqual(str(rni), "9; 12-15\n10; 10\n")
     self.assertEqual(len(rn1), 13)
     self.assertEqual(str(rn1), "8-9; 12-15\n10; 9-13\n")
     self.assertEqual(len(rn2), 5)
     self.assertEqual(str(rn2), "9; 12-15\n10; 10\n")
     # test __and__
     rni2 = rn1 & rn2
     self.assertEqual(len(rni2), 5)
     self.assertEqual(str(rni2), "9; 12-15\n10; 10\n")
     self.assertEqual(len(rn1), 13)
     self.assertEqual(str(rn1), "8-9; 12-15\n10; 9-13\n")
     self.assertEqual(len(rn2), 5)
     self.assertEqual(str(rn2), "9; 12-15\n10; 10\n")
     self.assertEqual(rni, rni2)  # btw test __eq__
     try:
         dummy = rn1 & "foobar"
         self.assertFalse("TypeError not raised")
     except TypeError:
         pass
コード例 #2
0
 def test_contiguous(self):
     rn0 = RangeSetND()
     self.assertEqual([], [str(ns) for ns in rn0.contiguous()])
     rn1 = RangeSetND([["10", "10-13,15"], ["0-3,5-6", "1-2"]])
     self.assertEqual(str(rn1), "0-3,5-6; 1-2\n10; 10-13,15\n")
     self.assertEqual(['0-3; 1-2\n', '5-6; 1-2\n', '10; 10-13\n', '10; 15\n'], [str(ns) for ns in rn1.contiguous()])
     self.assertEqual(str(rn1), "0-3,5-6; 1-2\n10; 10-13,15\n")
コード例 #3
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
 def test_nonzero(self):
     r0 = RangeSetND()
     if r0:
         self.assertFalse("nonzero failed")
     r1 = RangeSetND([["0-10"], ["40-60"]])
     if not r1:
         self.assertFalse("nonzero failed")
コード例 #4
0
ファイル: RangeSetNDTest.py プロジェクト: LaHaine/ohpc
 def test_union(self):
     rn1 = RangeSetND([["10-100", "1-3"], ["1100-1300", "2-3"]])
     self.assertEqual(str(rn1), "1100-1300; 2-3\n10-100; 1-3\n")
     self.assertEqual(len(rn1), 675)
     rn2 = RangeSetND([["1100-1200", "1"], ["10-49", "1,3"]])
     self.assertEqual(str(rn2), "1100-1200; 1\n10-49; 1,3\n")
     self.assertEqual(len(rn2), 181)
     rnu = rn1.union(rn2)
     self.assertEqual(str(rnu), "1100-1300; 2-3\n10-100; 1-3\n1100-1200; 1\n")
     self.assertEqual(len(rnu), 776)
     rnu2 = rn1 | rn2
     self.assertEqual(str(rnu2), "1100-1300; 2-3\n10-100; 1-3\n1100-1200; 1\n")
     self.assertEqual(len(rnu2), 776)
     self.assertEqual(rnu, rnu2) # btw test __eq__
     self.assertNotEqual(rnu, rn1) # btw test __eq__
     self.assertNotEqual(rnu, rn2) # btw test __eq__
     try:
         dummy = rn1 | "foobar"
         self.assertFalse("TypeError not raised")
     except TypeError:
         pass
     # binary error
     if sys.version_info >= (2, 5, 0):
         rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]])
         rn2 = RangeSetND([["1100-1200", "1"], ["10-49", "1,3"]])
         rn1 |= rn2
         self.assertEqual(str(rn2), "1100-1200; 1\n10-49; 1,3\n")
         self.assertEqual(len(rn2), 181)
         rn2 = set([3, 5])
         self.assertRaises(TypeError, rn1.__ior__, rn2)
コード例 #5
0
ファイル: RangeSetNDTest.py プロジェクト: LaHaine/ohpc
 def test_contiguous(self):
     rn0 = RangeSetND()
     self.assertEqual([], [str(ns) for ns in rn0.contiguous()])
     rn1 = RangeSetND([["10", "10-13,15"], ["0-3,5-6", "1-2"]])
     self.assertEqual(str(rn1), "0-3,5-6; 1-2\n10; 10-13,15\n")
     self.assertEqual(['0-3; 1-2\n', '5-6; 1-2\n', '10; 10-13\n', '10; 15\n'], [str(ns) for ns in rn1.contiguous()])
     self.assertEqual(str(rn1), "0-3,5-6; 1-2\n10; 10-13,15\n")
コード例 #6
0
ファイル: RangeSetNDTest.py プロジェクト: LaHaine/ohpc
 def test_intersection(self):
     rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]])
     self.assertEqual(len(rn1), 13)
     self.assertEqual(str(rn1), "8-9; 12-15\n10; 9-13\n")
     rn2 = RangeSetND([["10", "10"], ["9", "12-15"]])
     self.assertEqual(len(rn2), 5)
     self.assertEqual(str(rn2), "9; 12-15\n10; 10\n")
     rni = rn1.intersection(rn2)
     self.assertEqual(len(rni), 5)
     self.assertEqual(str(rni), "9; 12-15\n10; 10\n")
     self.assertEqual(len(rn1), 13)
     self.assertEqual(str(rn1), "8-9; 12-15\n10; 9-13\n")
     self.assertEqual(len(rn2), 5)
     self.assertEqual(str(rn2), "9; 12-15\n10; 10\n")
     # test __and__
     rni2 = rn1 & rn2
     self.assertEqual(len(rni2), 5)
     self.assertEqual(str(rni2), "9; 12-15\n10; 10\n")
     self.assertEqual(len(rn1), 13)
     self.assertEqual(str(rn1), "8-9; 12-15\n10; 9-13\n")
     self.assertEqual(len(rn2), 5)
     self.assertEqual(str(rn2), "9; 12-15\n10; 10\n")
     self.assertEqual(rni, rni2) # btw test __eq__
     try:
         dummy = rn1 & "foobar"
         self.assertFalse("TypeError not raised")
     except TypeError:
         pass
コード例 #7
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
 def test_vectors(self):
     rn = RangeSetND([["0-10", "1-2"], ["5-60", "2"]])
     # vectors() should perform automatic folding
     self.assertEqual([[RangeSet("0-60"), RangeSet("2")],
                       [RangeSet("0-10"), RangeSet("1")]],
                      list(rn.vectors()))
     self.assertEqual(str(rn), "0-60; 2\n0-10; 1\n")
     self.assertEqual(len(rn), 72)
コード例 #8
0
 def test_internal_mismatch(self):
     nodeset = NodeSet("cluster[1-30]c[1-2]")
     self.assertTrue("cluster%sc%s" in nodeset._patterns)
     nodeset._patterns["cluster%sc%s"] = RangeSetND([[1]])
     self.assertRaises(NodeSetParseError, str, nodeset)
     nodeset._patterns["cluster%sc%s"] = RangeSetND([[1, 1]])
     self.assertEqual(str(nodeset), "cluster1c1")
     nodeset._patterns["cluster%sc%s"] = RangeSetND([[1, 1, 1]])
     self.assertRaises(NodeSetParseError, str, nodeset)
コード例 #9
0
ファイル: RangeSetNDTest.py プロジェクト: LaHaine/ohpc
 def test_pads(self):
     rn0 = RangeSetND()
     self.assertEqual(str(rn0), "")
     self.assertEqual(len(rn0), 0)
     self.assertEqual(rn0.pads(), ())
     rn1 = RangeSetND([['01-02', '003'], ['01-02', '004'], ['02-06', '006-009,411']])
     self.assertEqual(str(rn1), "02-06; 006-009,411\n01-02; 003-004\n")
     self.assertEqual(len(rn1), 29)
     self.assertEqual(rn1.pads(), (2, 3))
コード例 #10
0
 def test_eq(self):
     r0 = RangeSetND()
     r1 = RangeSetND()
     r2 = RangeSetND([["0-10", "1-2"], ["40-60", "1-3"]])
     r3 = RangeSetND([["0-10"], ["40-60"]])
     self.assertEqual(r0, r1)
     self.assertNotEqual(r0, r2)
     self.assertNotEqual(r0, r3)
     self.assertNotEqual(r2, r3)
     self.assertFalse(r3 == "foobar") # NotImplemented => object address comparison
コード例 #11
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
    def test_mutability_2(self):
        rs0 = RangeSet("2-5")
        rs1 = RangeSet("0-1")
        rn0 = RangeSetND([[rs0, rs1]])  #, copy_rangeset=False)
        self.assertEqual(str(rn0), "2-5; 0-1\n")

        rs2 = RangeSet("6-7")
        rs3 = RangeSet("2-3")
        rn0.update([[rs2, rs3]])
        self.assertEqual(str(rn0), "2-5; 0-1\n6-7; 2-3\n")

        rs3.add(4)
        self.assertEqual(str(rs3), "2-4")
        self.assertEqual(str(rn0), "2-5; 0-1\n6-7; 2-3\n")
コード例 #12
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
    def test_mutability_1(self):
        rs0 = RangeSet("2-5")
        rs1 = RangeSet("0-1")
        rn0 = RangeSetND([[rs0, rs1]])  #, copy_rangeset=False)
        self.assertEqual(str(rn0), "2-5; 0-1\n")

        rs2 = RangeSet("6-7")
        rs3 = RangeSet("2-3")
        rn1 = RangeSetND([[rs2, rs3]])  #, copy_rangeset=False)
        rn0.update(rn1)
        self.assertEqual(str(rn0), "2-5; 0-1\n6-7; 2-3\n")

        # check mutability safety
        self.assertEqual(str(rs0), "2-5")
        self.assertEqual(str(rs1), "0-1")
        self.assertEqual(str(rs2), "6-7")
        self.assertEqual(str(rs3), "2-3")

        # reverse check
        rs1.add(2)
        self.assertEqual(str(rs1), "0-2")
        rs3.add(4)
        self.assertEqual(str(rs3), "2-4")
        self.assertEqual(str(rn0), "2-5; 0-1\n6-7; 2-3\n")

        self.assertEqual(str(rn1), "6-7; 2-3\n")
        rn1.update([[rs2, rs3]])
        self.assertEqual(str(rn1), "6-7; 2-4\n")

        self.assertEqual(str(rn0), "2-5; 0-1\n6-7; 2-3\n")
コード例 #13
0
ファイル: RangeSetNDTest.py プロジェクト: LaHaine/ohpc
    def test_mutability_2(self):
        rs0 = RangeSet("2-5")
        rs1 = RangeSet("0-1")
        rn0 = RangeSetND([[rs0, rs1]]) #, copy_rangeset=False)
        self.assertEqual(str(rn0), "2-5; 0-1\n")

        rs2 = RangeSet("6-7")
        rs3 = RangeSet("2-3")
        rn0.update([[rs2, rs3]])
        self.assertEqual(str(rn0), "2-5; 0-1\n6-7; 2-3\n")

        rs3.add(4)
        self.assertEqual(str(rs3), "2-4")
        self.assertEqual(str(rn0), "2-5; 0-1\n6-7; 2-3\n")
コード例 #14
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
 def test_getitem(self):
     rn1 = RangeSetND([["10", "10-13"], ["0-3", "1-2"]])
     self.assertEqual(len(rn1), 12)
     self.assertEqual(rn1[0], (0, 1))
     self.assertEqual(rn1[1], (0, 2))
     self.assertEqual(rn1[2], (1, 1))
     self.assertEqual(rn1[3], (1, 2))
     self.assertEqual(rn1[4], (2, 1))
     self.assertEqual(rn1[5], (2, 2))
     self.assertEqual(rn1[6], (3, 1))
     self.assertEqual(rn1[7], (3, 2))
     self.assertEqual(rn1[8], (10, 10))
     self.assertEqual(rn1[9], (10, 11))
     self.assertEqual(rn1[10], (10, 12))
     self.assertEqual(rn1[11], (10, 13))
     self.assertRaises(IndexError, rn1.__getitem__, 12)
     # negative indices
     self.assertEqual(rn1[-1], (10, 13))
     self.assertEqual(rn1[-2], (10, 12))
     self.assertEqual(rn1[-3], (10, 11))
     self.assertEqual(rn1[-4], (10, 10))
     self.assertEqual(rn1[-5], (3, 2))
     self.assertEqual(rn1[-12], (0, 1))
     self.assertRaises(IndexError, rn1.__getitem__, -13)
     self.assertRaises(TypeError, rn1.__getitem__, "foo")
コード例 #15
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
 def test_union(self):
     rn1 = RangeSetND([["10-100", "1-3"], ["1100-1300", "2-3"]])
     self.assertEqual(str(rn1), "1100-1300; 2-3\n10-100; 1-3\n")
     self.assertEqual(len(rn1), 675)
     rn2 = RangeSetND([["1100-1200", "1"], ["10-49", "1,3"]])
     self.assertEqual(str(rn2), "1100-1200; 1\n10-49; 1,3\n")
     self.assertEqual(len(rn2), 181)
     rnu = rn1.union(rn2)
     self.assertEqual(str(rnu),
                      "1100-1300; 2-3\n10-100; 1-3\n1100-1200; 1\n")
     self.assertEqual(len(rnu), 776)
     rnu2 = rn1 | rn2
     self.assertEqual(str(rnu2),
                      "1100-1300; 2-3\n10-100; 1-3\n1100-1200; 1\n")
     self.assertEqual(len(rnu2), 776)
     self.assertEqual(rnu, rnu2)  # btw test __eq__
     self.assertNotEqual(rnu, rn1)  # btw test __eq__
     self.assertNotEqual(rnu, rn2)  # btw test __eq__
     try:
         dummy = rn1 | "foobar"
         self.assertFalse("TypeError not raised")
     except TypeError:
         pass
     # binary error
     if sys.version_info >= (2, 5, 0):
         rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]])
         rn2 = RangeSetND([["1100-1200", "1"], ["10-49", "1,3"]])
         rn1 |= rn2
         self.assertEqual(str(rn2), "1100-1200; 1\n10-49; 1,3\n")
         self.assertEqual(len(rn2), 181)
         rn2 = set([3, 5])
         self.assertRaises(TypeError, rn1.__ior__, rn2)
コード例 #16
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
 def test_iter(self):
     rn0 = RangeSetND([['1-2', '3'], ['1-2', '4'], ['2-6', '6-9,11']])
     self.assertEqual(len([r for r in rn0]), len(rn0))
     self.assertEqual([(2, 6), (2, 7), (2, 8), (2, 9), (2, 11), (3, 6),
                       (3, 7), (3, 8), (3, 9), (3, 11), (4, 6), (4, 7),
                       (4, 8), (4, 9), (4, 11), (5, 6), (5, 7), (5, 8),
                       (5, 9), (5, 11), (6, 6), (6, 7), (6, 8), (6, 9),
                       (6, 11), (1, 3), (1, 4), (2, 3), (2, 4)],
                      [r for r in rn0])
コード例 #17
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
 def test_getitem_slices(self):
     rn1 = RangeSetND([["10", "10-13"], ["0-3", "1-2"]])
     # slices
     self.assertEqual(str(rn1[0:2]), "0; 1-2\n")
     self.assertEqual(str(rn1[0:4]), "0-1; 1-2\n")
     self.assertEqual(str(rn1[0:5]), "0-1; 1-2\n2; 1\n")
     self.assertEqual(str(rn1[0:6]), "0-2; 1-2\n")
     self.assertEqual(str(rn1[0:7]), "0-2; 1-2\n3; 1\n")
     self.assertEqual(str(rn1[0:8]), "0-3; 1-2\n")
     self.assertEqual(str(rn1[0:9]), "0-3; 1-2\n10; 10\n")
     self.assertEqual(str(rn1[0:10]), "0-3; 1-2\n10; 10-11\n")
     self.assertEqual(str(rn1[0:11]), "0-3; 1-2\n10; 10-12\n")
     self.assertEqual(str(rn1[0:12]), "0-3; 1-2\n10; 10-13\n")
     self.assertEqual(str(rn1[0:13]), "0-3; 1-2\n10; 10-13\n")
     # steps
     self.assertEqual(str(rn1[0:12:2]), "0-3; 1\n10; 10,12\n")
     self.assertEqual(str(rn1[1:12:2]), "0-3; 2\n10; 11,13\n")
     # GitHub #429
     rn1 = RangeSetND([["110", "15-16"], ["107", "06"]])
     self.assertEqual(str(rn1[0:3:2]), "107; 06\n110; 15\n")
コード例 #18
0
ファイル: RangeSetNDTest.py プロジェクト: LaHaine/ohpc
    def test_mutability_1(self):
        rs0 = RangeSet("2-5")
        rs1 = RangeSet("0-1")
        rn0 = RangeSetND([[rs0, rs1]]) #, copy_rangeset=False)
        self.assertEqual(str(rn0), "2-5; 0-1\n")

        rs2 = RangeSet("6-7")
        rs3 = RangeSet("2-3")
        rn1 = RangeSetND([[rs2, rs3]]) #, copy_rangeset=False)
        rn0.update(rn1)
        self.assertEqual(str(rn0), "2-5; 0-1\n6-7; 2-3\n")

        # check mutability safety
        self.assertEqual(str(rs0), "2-5")
        self.assertEqual(str(rs1), "0-1")
        self.assertEqual(str(rs2), "6-7")
        self.assertEqual(str(rs3), "2-3")

        # reverse check
        rs1.add(2)
        self.assertEqual(str(rs1), "0-2")
        rs3.add(4)
        self.assertEqual(str(rs3), "2-4")
        self.assertEqual(str(rn0), "2-5; 0-1\n6-7; 2-3\n")

        self.assertEqual(str(rn1), "6-7; 2-3\n")
        rn1.update([[rs2, rs3]])
        self.assertEqual(str(rn1), "6-7; 2-4\n")

        self.assertEqual(str(rn0), "2-5; 0-1\n6-7; 2-3\n")
コード例 #19
0
 def test_simple(self):
     # Test constructors
     self._testRS(None, "", 0)
     self._testRS([["0-10"], ["40-60"]], "0-10,40-60\n", 32)
     self._testRS([["0-2", "1-2"], ["10", "3-5"]], "0-2; 1-2\n10; 3-5\n", 9)
     self._testRS([[0, 1], [0, 2], [2, 2], [2, 1], [1, 1], [1, 2], [10, 4], [10, 5], [10, 3]], "0-2; 1-2\n10; 3-5\n", 9)
     self._testRS([(0, 4), (0, 5), (1, 4), (1, 5)], "0-1; 4-5\n", 4)
     # construct with copy_rangeset=False
     r0 = RangeSet("0-10,30-40,50")
     r1 = RangeSet("200-202")
     rn = RangeSetND([[r0, r1]], copy_rangeset=False)
     self.assertEqual(str(rn), "0-10,30-40,50; 200-202\n")
     self.assertEqual(len(rn), 69)
コード例 #20
0
ファイル: RangeSetNDTest.py プロジェクト: LaHaine/ohpc
 def test_xor(self):
     rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]])
     rn2 = RangeSetND([["10", "10"]])
     rnx = rn1.symmetric_difference(rn2)
     self.assertEqual(len(rnx), 4)
     self.assertEqual(str(rnx), "10; 9,11-13\n")
     rnx2 = rn1 ^ rn2
     self.assertEqual(len(rnx2), 4)
     self.assertEqual(str(rnx2), "10; 9,11-13\n")
     self.assertEqual(rnx, rnx2)
     try:
         dummy = rn1 ^ "foobar"
         self.assertFalse("TypeError not raised")
     except TypeError:
         pass
     # binary error
     if sys.version_info >= (2, 5, 0):
         rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]])
         rn2 = RangeSetND([["10", "10"]])
         rn1 ^= rn2
         self.assertEqual(len(rnx), 4)
         self.assertEqual(str(rnx), "10; 9,11-13\n")
         rn2 = set([3, 5])
         self.assertRaises(TypeError, rn1.__ixor__, rn2)
コード例 #21
0
ファイル: RangeSetNDTest.py プロジェクト: ypsah/clustershell
 def test_pads(self):
     rn0 = RangeSetND()
     self.assertEqual(str(rn0), "")
     self.assertEqual(len(rn0), 0)
     self.assertEqual(rn0.pads(), ())
     rn1 = RangeSetND([['01-02', '003'], ['01-02', '004'],
                       ['02-06', '006-009,411']])
     self.assertEqual(str(rn1), "02-06; 006-009,411\n01-02; 003-004\n")
     self.assertEqual(len(rn1), 29)
     self.assertEqual(rn1.pads(), (2, 3))
コード例 #22
0
 def test_pads(self):
     rn0 = RangeSetND()
     self.assertEqual(str(rn0), "")
     self.assertEqual(len(rn0), 0)
     self.assertEqual(rn0.pads(), ())
     rn1 = RangeSetND([['01-02', '003'], ['01-02', '004'], ['02-06', '006-009,411']])
     self.assertEqual(str(rn1), "02-06; 006-009,411\n01-02; 003-004\n")
     self.assertEqual(len(rn1), 29)
     self.assertEqual(rn1.pads(), (2, 3))
     # Note: padding mismatch is NOT supported by ClusterShell
     # We just track any regressions here (MAY CHANGE!)
     rn1 = RangeSetND([['01-02', '003'], ['01-02', '0101'], ['02-06', '006-009,411']])
     # here 0101 padding is changed to 101
     self.assertEqual(str(rn1), '02-06; 006-009,411\n01-02; 003,101\n')
     self.assertEqual(len(rn1), 29)
     self.assertEqual(rn1.pads(), (2, 3))
     rn1 = RangeSetND([['01-02', '0003'], ['01-02', '004'], ['02-06', '006-009,411']])
     # here 004 padding is changed to 0004
     self.assertEqual(str(rn1), '02-06; 006-009,411\n01-02; 0003-0004\n')
     self.assertEqual(len(rn1), 29)
     self.assertEqual(rn1.pads(), (2, 4)) # pads() returns max padding length by axis
コード例 #23
0
ファイル: RangeSetNDTest.py プロジェクト: LaHaine/ohpc
    def test_difference(self):
        rn1 = RangeSetND([["10", "10-13"], ["0-3", "1-2"]])
        rn2 = RangeSetND([["10", "12"]])
        self.assertEqual(len(rn1), 12)
        rnres = rn1.difference(rn2)
        self.assertEqual(str(rnres), "0-3; 1-2\n10; 10-11,13\n")
        self.assertEqual(len(rnres), 11)

        rn1 = RangeSetND([["0-2", "1-3", "4-5"]])
        rn2 = RangeSetND([["0-2", "1-3", "4"]])
        rnres = rn1.difference(rn2)
        self.assertEqual(str(rnres), "0-2; 1-3; 5\n")
        self.assertEqual(len(rnres), 9)

        rn1 = RangeSetND([["0-2", "1-3", "4-5"]])
        rn2 = RangeSetND([["10-40", "20-120", "0-100"]])
        rnres = rn1.difference(rn2)
        self.assertEqual(str(rnres), "0-2; 1-3; 4-5\n")
        self.assertEqual(len(rnres), 18)

        rn1 = RangeSetND([["0-2", "1-3", "4-5"]])
        rn2 = RangeSetND([["10-40", "20-120", "100-200"]])
        rnres = rn1.difference(rn2)
        self.assertEqual(str(rnres), "0-2; 1-3; 4-5\n")
        self.assertEqual(len(rnres), 18)

        rnres2 = rn1 - rn2
        self.assertEqual(str(rnres2), "0-2; 1-3; 4-5\n")
        self.assertEqual(len(rnres2), 18)
        self.assertEqual(rnres, rnres2) # btw test __eq__

        try:
            dummy = rn1 - "foobar"
            self.assertFalse("TypeError not raised")
        except TypeError:
            pass
コード例 #24
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
 def test_xor(self):
     rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]])
     rn2 = RangeSetND([["10", "10"]])
     rnx = rn1.symmetric_difference(rn2)
     self.assertEqual(len(rnx), 4)
     self.assertEqual(str(rnx), "10; 9,11-13\n")
     rnx2 = rn1 ^ rn2
     self.assertEqual(len(rnx2), 4)
     self.assertEqual(str(rnx2), "10; 9,11-13\n")
     self.assertEqual(rnx, rnx2)
     try:
         dummy = rn1 ^ "foobar"
         self.assertFalse("TypeError not raised")
     except TypeError:
         pass
     # binary error
     if sys.version_info >= (2, 5, 0):
         rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]])
         rn2 = RangeSetND([["10", "10"]])
         rn1 ^= rn2
         self.assertEqual(len(rnx), 4)
         self.assertEqual(str(rnx), "10; 9,11-13\n")
         rn2 = set([3, 5])
         self.assertRaises(TypeError, rn1.__ixor__, rn2)
コード例 #25
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
 def _testRS(self, test, res, length):
     r1 = RangeSetND(test, autostep=3)
     self.assertEqual(str(r1), res)
     self.assertEqual(len(r1), length)
コード例 #26
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
    def test_difference(self):
        rn1 = RangeSetND([["10", "10-13"], ["0-3", "1-2"]])
        rn2 = RangeSetND([["10", "12"]])
        self.assertEqual(len(rn1), 12)
        rnres = rn1.difference(rn2)
        self.assertEqual(str(rnres), "0-3; 1-2\n10; 10-11,13\n")
        self.assertEqual(len(rnres), 11)

        rn1 = RangeSetND([["0-2", "1-3", "4-5"]])
        rn2 = RangeSetND([["0-2", "1-3", "4"]])
        rnres = rn1.difference(rn2)
        self.assertEqual(str(rnres), "0-2; 1-3; 5\n")
        self.assertEqual(len(rnres), 9)

        rn1 = RangeSetND([["0-2", "1-3", "4-5"]])
        rn2 = RangeSetND([["10-40", "20-120", "0-100"]])
        rnres = rn1.difference(rn2)
        self.assertEqual(str(rnres), "0-2; 1-3; 4-5\n")
        self.assertEqual(len(rnres), 18)

        rn1 = RangeSetND([["0-2", "1-3", "4-5"]])
        rn2 = RangeSetND([["10-40", "20-120", "100-200"]])
        rnres = rn1.difference(rn2)
        self.assertEqual(str(rnres), "0-2; 1-3; 4-5\n")
        self.assertEqual(len(rnres), 18)

        rnres2 = rn1 - rn2
        self.assertEqual(str(rnres2), "0-2; 1-3; 4-5\n")
        self.assertEqual(len(rnres2), 18)
        self.assertEqual(rnres, rnres2)  # btw test __eq__

        try:
            dummy = rn1 - "foobar"
            self.assertFalse("TypeError not raised")
        except TypeError:
            pass
コード例 #27
0
ファイル: RangeSetNDTest.py プロジェクト: LaHaine/ohpc
 def test_vectors(self):
     rn = RangeSetND([["0-10", "1-2"], ["5-60", "2"]])
     # vectors() should perform automatic folding
     self.assertEqual([[RangeSet("0-60"), RangeSet("2")], [RangeSet("0-10"), RangeSet("1")]], list(rn.vectors()))
     self.assertEqual(str(rn), "0-60; 2\n0-10; 1\n")
     self.assertEqual(len(rn), 72)
コード例 #28
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
 def test_dim(self):
     r0 = RangeSetND()
     self.assertEqual(r0.dim(), 0)
     r1 = RangeSetND([["0-10", "1-2"], ["40-60", "1-3"]])
     self.assertEqual(r1.dim(), 2)
コード例 #29
0
ファイル: RangeSetNDTest.py プロジェクト: LaHaine/ohpc
 def test_fold(self):
     r1 = RangeSetND([["0-10", "1-2"], ["5-15,40-60", "1-3"], ["0-4", "3"]])
     r1.fold()
     self.assertEqual(str(r1._veclist), "[[0-15,40-60, 1-3]]")
     self.assertEqual(str(r1), "0-15,40-60; 1-3\n")
コード例 #30
0
ファイル: RangeSetNDTest.py プロジェクト: LaHaine/ohpc
    def test_difference_update(self):
        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]])
        rn2 = RangeSetND([["10", "10"]])
        rn1.difference_update(rn2)
        self.assertEqual(len(rn1), 4)
        self.assertEqual(str(rn1), "10; 9,11-13\n")

        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-15"]])
        rn1.difference_update(rn2)
        self.assertEqual(len(rn1), 8)
        self.assertEqual(str(rn1), "8; 12-15\n10; 9,11-13\n")

        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-15"], ["10-12", "11-15"], ["11", "14"]])
        rn1.difference_update(rn2)
        self.assertEqual(len(rn1), 5)
        self.assertEqual(str(rn1), "8; 12-15\n10; 9\n")

        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"], ["10", "10-13"], ["10", "12-16"], ["9", "13-16"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-15"], ["10-12", "11-15"], ["11", "14"]])
        rn1.difference_update(rn2)
        self.assertEqual(len(rn1), 7)
        # no pre-fold (self._veclist)
        self.assertEqual(str(rn1), "8; 12-15\n9-10; 16\n10; 9\n")
        # pre-fold (self.veclist)
        #self.assertEqual(str(rn1), "8; 12-15\n10; 9,16\n9; 16\n")

        # strict mode
        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-15"], ["10-12", "11-15"], ["11", "14"]])
        self.assertRaises(KeyError, rn1.difference_update, rn2, strict=True)

        if sys.version_info >= (2, 5, 0):
            rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]])
            rn2 = RangeSetND([["10", "10"]])
            rn1 -= rn2
            self.assertEqual(str(rn1), "10; 9,11-13\n")
            self.assertEqual(len(rn1), 4)
            # binary error
            rn2 = set([3, 5])
            self.assertRaises(TypeError, rn1.__isub__, rn2)
コード例 #31
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
    def test_intersection_update(self):
        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]])
        self.assertEqual(len(rn1), 5)
        self.assertEqual(str(rn1), "10; 9-13\n")
        # self test:
        rn1.intersection_update(rn1)
        self.assertEqual(len(rn1), 5)
        self.assertEqual(str(rn1), "10; 9-13\n")
        #
        rn2 = RangeSetND([["10", "10"]])
        rn1.intersection_update(rn2)
        self.assertEqual(len(rn1), 1)
        self.assertEqual(str(rn1), "10; 10\n")

        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-15"]])
        rn1.intersection_update(rn2)
        self.assertEqual(len(rn1), 5)
        self.assertEqual(str(rn1), "9; 12-15\n10; 10\n")

        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-15"], ["10-12", "11-15"],
                          ["11", "14"]])
        rn1.intersection_update(rn2)
        self.assertEqual(len(rn1), 8)
        self.assertEqual(str(rn1), "9; 12-15\n10; 10-13\n")

        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"],
                          ["10", "10-13"], ["10", "12-16"], ["9", "13-16"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-15"], ["10-12", "11-15"],
                          ["11", "14"]])
        rn1.intersection_update(rn2)
        self.assertEqual(len(rn1), 10)
        self.assertEqual(str(rn1), "10; 10-15\n9; 12-15\n")

        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"],
                          ["10", "10-13"], ["10", "12-16"], ["9", "13-16"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-16"], ["10-12", "11-15"],
                          ["11", "14"], ["8", "10-20"]])
        rn1.intersection_update(rn2)
        self.assertEqual(len(rn1), 15)
        # no pre-fold (self._veclist)
        self.assertEqual(str(rn1), "10; 10-15\n9; 12-16\n8; 12-15\n")
        # pre-fold (self.veclist)
        #self.assertEqual(str(rn1), "8-9; 12-15\n10; 10-15\n9; 16\n")

        # binary error
        if sys.version_info >= (2, 5, 0):
            rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]])
            rn2 = RangeSetND([["10", "10"]])
            rn1 &= rn2
            self.assertEqual(len(rn1), 1)
            self.assertEqual(str(rn1), "10; 10\n")
            rn2 = set([3, 5])
            self.assertRaises(TypeError, rn1.__iand__, rn2)
コード例 #32
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
 def test_subset_superset(self):
     r1 = RangeSetND([["0-10"], ["40-60"]])
     self.assertTrue(r1.issubset(r1))
     self.assertTrue(r1.issuperset(r1))
     r2 = RangeSetND([["0-10"], ["40-60"]])
     self.assertTrue(r2.issubset(r1))
     self.assertTrue(r1.issubset(r2))
     self.assertTrue(r2.issuperset(r1))
     self.assertTrue(r1.issuperset(r2))
     r1 = RangeSetND([["0-10"], ["40-60"]])
     r2 = RangeSetND()
     self.assertTrue(r2.issubset(r1))
     self.assertFalse(r1.issubset(r2))
     self.assertTrue(r1.issuperset(r2))
     self.assertFalse(r2.issuperset(r1))
     r1 = RangeSetND([["0-10"], ["40-60"]])
     r2 = RangeSetND([["4"], ["10,40-41"]])
     self.assertFalse(r1.issubset(r2))
     self.assertFalse(r1 < r2)
     self.assertTrue(r2.issubset(r1))
     self.assertTrue(r2 < r1)
     self.assertTrue(r1.issuperset(r2))
     self.assertTrue(r1 > r2)
     self.assertFalse(r2.issuperset(r1))
     self.assertFalse(r2 > r1)
     r1 = RangeSetND([["0-10", "1-2"], ["40-60", "2-5"]])
     r2 = RangeSetND([["4-8", "1"], ["10,40-41", "2"]])
     self.assertFalse(r1.issubset(r2))
     self.assertFalse(r1 < r2)
     self.assertTrue(r2.issubset(r1))
     self.assertTrue(r2 < r1)
     self.assertTrue(r1.issuperset(r2))
     self.assertTrue(r1 > r2)
     self.assertFalse(r2.issuperset(r1))
     self.assertFalse(r2 > r1)
コード例 #33
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
 def test_contains(self):
     r1 = RangeSetND([["0-10"], ["40-60"]])
     r2 = RangeSetND()
     self.assertTrue(r2 in r1)  # <=> issubset()
     r1 = RangeSetND()
     r2 = RangeSetND([["0-10"], ["40-60"]])
     self.assertFalse(r2 in r1)
     r1 = RangeSetND([["0-10"], ["40-60"]])
     r2 = RangeSetND([["4-8"], ["10,40-41"]])
     self.assertTrue(r2 in r1)
     r1 = RangeSetND([["0-10", "1-2"], ["40-60", "2-5"]])
     r2 = RangeSetND([["4-8", "1"], ["10,40-41", "2"]])
     self.assertTrue(r2 in r1)
     r1 = RangeSetND([["0-10", "1-2"], ["40-60", "2-5"]])
     r2 = RangeSetND([["4-8", "5"], ["10,40-41", "2"]])
     self.assertTrue(r2 not in r1)
     r1 = RangeSetND([["0-10"], ["40-60"]])
     self.assertTrue("10" in r1)
     self.assertTrue(10 in r1)
     self.assertFalse(11 in r1)
コード例 #34
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
 def test_fold(self):
     r1 = RangeSetND([["0-10", "1-2"], ["5-15,40-60", "1-3"], ["0-4", "3"]])
     r1.fold()
     self.assertEqual(str(r1._veclist), "[[0-15,40-60, 1-3]]")
     self.assertEqual(str(r1), "0-15,40-60; 1-3\n")
コード例 #35
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
    def test_difference_update(self):
        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]])
        rn2 = RangeSetND([["10", "10"]])
        rn1.difference_update(rn2)
        self.assertEqual(len(rn1), 4)
        self.assertEqual(str(rn1), "10; 9,11-13\n")

        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-15"]])
        rn1.difference_update(rn2)
        self.assertEqual(len(rn1), 8)
        self.assertEqual(str(rn1), "8; 12-15\n10; 9,11-13\n")

        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-15"], ["10-12", "11-15"],
                          ["11", "14"]])
        rn1.difference_update(rn2)
        self.assertEqual(len(rn1), 5)
        self.assertEqual(str(rn1), "8; 12-15\n10; 9\n")

        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"],
                          ["10", "10-13"], ["10", "12-16"], ["9", "13-16"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-15"], ["10-12", "11-15"],
                          ["11", "14"]])
        rn1.difference_update(rn2)
        self.assertEqual(len(rn1), 7)
        # no pre-fold (self._veclist)
        self.assertEqual(str(rn1), "8; 12-15\n9-10; 16\n10; 9\n")
        # pre-fold (self.veclist)
        #self.assertEqual(str(rn1), "8; 12-15\n10; 9,16\n9; 16\n")

        # strict mode
        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-15"], ["10-12", "11-15"],
                          ["11", "14"]])
        self.assertRaises(KeyError, rn1.difference_update, rn2, strict=True)

        if sys.version_info >= (2, 5, 0):
            rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]])
            rn2 = RangeSetND([["10", "10"]])
            rn1 -= rn2
            self.assertEqual(str(rn1), "10; 9,11-13\n")
            self.assertEqual(len(rn1), 4)
            # binary error
            rn2 = set([3, 5])
            self.assertRaises(TypeError, rn1.__isub__, rn2)
コード例 #36
0
ファイル: RangeSetNDTest.py プロジェクト: LaHaine/ohpc
 def test_dim(self):
     r0 = RangeSetND()
     self.assertEqual(r0.dim(), 0)
     r1 = RangeSetND([["0-10", "1-2"], ["40-60", "1-3"]])
     self.assertEqual(r1.dim(), 2)
コード例 #37
0
ファイル: RangeSetNDTest.py プロジェクト: LaHaine/ohpc
    def test_intersection_update(self):
        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]])
        self.assertEqual(len(rn1), 5)
        self.assertEqual(str(rn1), "10; 9-13\n")
        # self test:
        rn1.intersection_update(rn1)
        self.assertEqual(len(rn1), 5)
        self.assertEqual(str(rn1), "10; 9-13\n")
        #
        rn2 = RangeSetND([["10", "10"]])
        rn1.intersection_update(rn2)
        self.assertEqual(len(rn1), 1)
        self.assertEqual(str(rn1), "10; 10\n")

        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-15"]])
        rn1.intersection_update(rn2)
        self.assertEqual(len(rn1), 5)
        self.assertEqual(str(rn1), "9; 12-15\n10; 10\n")

        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-15"], ["10-12", "11-15"], ["11", "14"]])
        rn1.intersection_update(rn2)
        self.assertEqual(len(rn1), 8)
        self.assertEqual(str(rn1), "9; 12-15\n10; 10-13\n")

        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"], ["10", "10-13"], ["10", "12-16"], ["9", "13-16"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-15"], ["10-12", "11-15"], ["11", "14"]])
        rn1.intersection_update(rn2)
        self.assertEqual(len(rn1), 10)
        self.assertEqual(str(rn1), "10; 10-15\n9; 12-15\n")

        rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"], ["8-9", "12-15"], ["10", "10-13"], ["10", "12-16"], ["9", "13-16"]])
        rn2 = RangeSetND([["10", "10"], ["9", "12-16"], ["10-12", "11-15"], ["11", "14"], ["8", "10-20"]])
        rn1.intersection_update(rn2)
        self.assertEqual(len(rn1), 15)
        # no pre-fold (self._veclist)
        self.assertEqual(str(rn1), "10; 10-15\n9; 12-16\n8; 12-15\n")
        # pre-fold (self.veclist)
        #self.assertEqual(str(rn1), "8-9; 12-15\n10; 10-15\n9; 16\n")

        # binary error
        if sys.version_info >= (2, 5, 0):
            rn1 = RangeSetND([["10", "10-13"], ["10", "9-12"]])
            rn2 = RangeSetND([["10", "10"]])
            rn1 &= rn2
            self.assertEqual(len(rn1), 1)
            self.assertEqual(str(rn1), "10; 10\n")
            rn2 = set([3, 5])
            self.assertRaises(TypeError, rn1.__iand__, rn2)
コード例 #38
0
ファイル: RangeSetNDTest.py プロジェクト: LaHaine/ohpc
 def test_subset_superset(self):
     r1 = RangeSetND([["0-10"], ["40-60"]])
     self.assertTrue(r1.issubset(r1))
     self.assertTrue(r1.issuperset(r1))
     r2 = RangeSetND([["0-10"], ["40-60"]])
     self.assertTrue(r2.issubset(r1))
     self.assertTrue(r1.issubset(r2))
     self.assertTrue(r2.issuperset(r1))
     self.assertTrue(r1.issuperset(r2))
     r1 = RangeSetND([["0-10"], ["40-60"]])
     r2 = RangeSetND()
     self.assertTrue(r2.issubset(r1))
     self.assertFalse(r1.issubset(r2))
     self.assertTrue(r1.issuperset(r2))
     self.assertFalse(r2.issuperset(r1))
     r1 = RangeSetND([["0-10"], ["40-60"]])
     r2 = RangeSetND([["4"], ["10,40-41"]])
     self.assertFalse(r1.issubset(r2))
     self.assertFalse(r1 < r2)
     self.assertTrue(r2.issubset(r1))
     self.assertTrue(r2 < r1)
     self.assertTrue(r1.issuperset(r2))
     self.assertTrue(r1 > r2)
     self.assertFalse(r2.issuperset(r1))
     self.assertFalse(r2 > r1)
     r1 = RangeSetND([["0-10", "1-2"], ["40-60", "2-5"]])
     r2 = RangeSetND([["4-8", "1"], ["10,40-41", "2"]])
     self.assertFalse(r1.issubset(r2))
     self.assertFalse(r1 < r2)
     self.assertTrue(r2.issubset(r1))
     self.assertTrue(r2 < r1)
     self.assertTrue(r1.issuperset(r2))
     self.assertTrue(r1 > r2)
     self.assertFalse(r2.issuperset(r1))
     self.assertFalse(r2 > r1)
コード例 #39
0
ファイル: RangeSetNDTest.py プロジェクト: kaowul/clustershell
 def test_pads(self):
     rn0 = RangeSetND()
     self.assertEqual(str(rn0), "")
     self.assertEqual(len(rn0), 0)
     self.assertEqual(rn0.pads(), ())
     rn1 = RangeSetND([['01-02', '003'], ['01-02', '004'],
                       ['02-06', '006-009,411']])
     self.assertEqual(str(rn1), "02-06; 006-009,411\n01-02; 003-004\n")
     self.assertEqual(len(rn1), 29)
     self.assertEqual(rn1.pads(), (2, 3))
     # Note: padding mismatch is NOT supported by ClusterShell
     # We just track any regressions here (MAY CHANGE!)
     rn1 = RangeSetND([['01-02', '003'], ['01-02', '0101'],
                       ['02-06', '006-009,411']])
     # here 0101 padding is changed to 101
     self.assertEqual(str(rn1), '02-06; 006-009,411\n01-02; 003,101\n')
     self.assertEqual(len(rn1), 29)
     self.assertEqual(rn1.pads(), (2, 3))
     rn1 = RangeSetND([['01-02', '0003'], ['01-02', '004'],
                       ['02-06', '006-009,411']])
     # here 004 padding is changed to 0004
     self.assertEqual(str(rn1), '02-06; 006-009,411\n01-02; 0003-0004\n')
     self.assertEqual(len(rn1), 29)
     self.assertEqual(rn1.pads(),
                      (2, 4))  # pads() returns max padding length by axis