Пример #1
0
 def test_str(self):
     a = NNR('a')
     aa = NNR('a')
     b = NNR(None)
     self.assertEqual(str(a), '{a}')
     self.assertEqual(str(aa), '{a}')
     self.assertEqual(str(b), '{None}')
Пример #2
0
 def test_contains(self):
     a = NNR('a')
     b = NNR(None)
     self.assertIn('a', a)
     self.assertNotIn(0, a)
     self.assertNotIn(None, a)
     self.assertNotIn('a', b)
     self.assertNotIn(0, b)
     self.assertIn(None, b)
Пример #3
0
 def test_range_intersection(self):
     a = NNR('a')
     b = NNR(None)
     self.assertEqual(
         a.range_intersection([b]),
         []
     )
     self.assertEqual(
         a.range_intersection([NNR('a')]),
         [NNR('a')]
     )
Пример #4
0
 def test_range_difference(self):
     a = NNR('a')
     b = NNR(None)
     self.assertEqual(
         a.range_difference([NNR('a')]),
         []
     )
     self.assertEqual(
         a.range_difference([b]),
         [NNR('a')]
     )
Пример #5
0
    def test_range_relational(self):
        a = NNR('a')
        aa = NNR('a')
        b = NNR(None)
        self.assertTrue(a.issubset(aa))
        self.assertFalse(a.issubset(b))
        self.assertEqual(a, a)
        self.assertEqual(a, aa)
        self.assertNotEqual(a, b)

        c = NR(None, None, 0)
        self.assertFalse(a.issubset(c))
        self.assertFalse(c.issubset(b))
        self.assertNotEqual(a, c)
        self.assertNotEqual(c, a)
Пример #6
0
 def test_equality(self):
     a = NNR('a')
     b = NR(0, 5, 0)
     c = NR(5, 10, 1)
     x = RP([[a], [b, c]])
     y = RP([[a], [c]])
     self.assertEqual(x, x)
     self.assertNotEqual(x, y)
Пример #7
0
 def test_info_methods(self):
     a = NNR('a')
     b = NR(0, 5, 0)
     c = NR(5, 10, 1)
     x = RP([[a], [b, c]])
     y = RP([[a], [c]])
     self.assertFalse(x.isdiscrete())
     self.assertFalse(x.isfinite())
     self.assertTrue(y.isdiscrete())
     self.assertTrue(y.isfinite())
Пример #8
0
 def test_contains(self):
     a = NNR('a')
     b = NR(0, 5, 0)
     c = NR(5, 10, 1)
     x = RP([[a], [b, c]])
     self.assertNotIn('a', x)
     self.assertNotIn(0, x)
     self.assertNotIn(None, x)
     self.assertIn(('a', 0), x)
     self.assertIn(('a', 6), x)
     self.assertNotIn(('a', 6.5), x)
Пример #9
0
    def test_pickle(self):
        a = NNR('a')
        b = NR(0, 5, 0)
        c = NR(5, 10, 1)
        x = RP([[a], [b, c]])
        y = RP([[a], [c]])

        xx = pickle.loads(pickle.dumps(x))
        self.assertIsNot(x, xx)
        self.assertEqual(x, xx)

        yy = pickle.loads(pickle.dumps(y))
        self.assertIsNot(y, yy)
        self.assertEqual(y, yy)
Пример #10
0
 def test_range_difference(self):
     a = NNR('a')
     b = NR(0, 5, 0)
     c = NR(5, 10, 1)
     x = RP([[a], [b, c]])
     y = RP([[a], [c]])
     z = RP([[a], [b], [c]])
     w = RP([list(Any.ranges()), [b]])
     self.assertEqual(x.range_difference([x]), [])
     self.assertEqual(x.range_difference([y]), [RP([[a], [b]])])
     self.assertEqual(x.range_difference([z]), [x])
     self.assertEqual(x.range_difference(Any.ranges()), [])
     self.assertEqual(x.range_difference([w]), [RP([[a], [NR(6, 10, 1)]])])
     v = RP([[AnyRange()], [NR(0, 5, 0, (False, False))]])
     self.assertEqual(y.range_difference([v]), [y])
Пример #11
0
 def test_isdisjoint(self):
     a = NNR('a')
     b = NR(0, 5, 0)
     c = NR(5, 10, 1)
     x = RP([[a], [b, c]])
     y = RP([[a], [c]])
     z = RP([[a], [b], [c]])
     w = RP([[AnyRange()], [b]])
     self.assertFalse(x.isdisjoint(x))
     self.assertFalse(x.isdisjoint(y))
     self.assertTrue(x.isdisjoint(z))
     self.assertFalse(x.isdisjoint(w))
     self.assertTrue(x.isdisjoint(a))
     self.assertFalse(y.isdisjoint(w))
     self.assertFalse(x.isdisjoint(AnyRange()))
     v = RP([[AnyRange()], [NR(0, 5, 0, (False, False))]])
     self.assertTrue(y.isdisjoint(v))
Пример #12
0
    def test_range_relational(self):
        a = RP([[NR(0, 10, 1)], [NR(0, 10, 0), NNR('a')]])
        aa = RP([[NR(0, 10, 1)], [NR(0, 10, 0), NNR('a')]])
        b = RP([[NR(0, 10, 1)], [NR(0, 10, 0), NNR('a'), NNR('b')]])
        c = RP([[NR(0, 10, 1)], [NR(0, 10, 0), NNR('b')]])
        d = RP([[NR(0, 10, 0)], [NR(0, 10, 0), NNR('a')]])
        d = RP([[NR(0, 10, 0)], [AnyRange()]])

        self.assertTrue(a.issubset(aa))
        self.assertTrue(a.issubset(b))
        self.assertFalse(a.issubset(c))
        self.assertTrue(a.issubset(d))

        self.assertFalse(a.issubset(NNR('a')))
        self.assertFalse(a.issubset(NR(None, None, 0)))
        self.assertTrue(a.issubset(AnyRange()))
Пример #13
0
 def test_str(self):
     a = RP([[NR(0, 10, 1)], [NR(0, 10, 0), NNR('a')]])
     self.assertEqual(str(a), '<[0:10], ([0..10], {a})>')
Пример #14
0
 def test_pickle(self):
     a = NNR('a')
     b = pickle.loads(pickle.dumps(a))
     self.assertIsNot(a, b)
     self.assertEqual(a, b)
Пример #15
0
 def test_info_methods(self):
     a = NNR('a')
     self.assertTrue(a.isdiscrete())
     self.assertTrue(a.isfinite())
Пример #16
0
    def test_range_intersection(self):
        self.assertEqual(
            NR(0,None,1).range_intersection([NR(1,None,0)]),
            [NR(1,None,1)],
        )
        self.assertEqual(
            NR(0,None,1).range_intersection([NR(0,0,0)]),
            [NR(0,0,0)],
        )
        self.assertEqual(
            NR(0,None,1).range_intersection([NR(0.5,1.5,0)]),
            [NR(1,1,0)],
        )
        self.assertEqual(
            NR(0,None,2).range_intersection([NR(1,None,3)]),
            [NR(4,None,6)],
        )
        with self.assertRaisesRegex(ValueError, "Unknown range type, list"):
            NR(0,None,0).range_intersection([[0]])

        # Test non-overlapping ranges
        self.assertEqual(
            NR(0,4,0).range_intersection([NR(5,10,0)]),
            [],
        )
        self.assertEqual(
            NR(5,10,0).range_intersection([NR(0,4,0)]),
            [],
        )
        self.assertEqual(
            NR(0,4,0).range_intersection([NNR('a')]),
            [],
        )

        # test ranges running in the other direction
        self.assertEqual(
            NR(10,0,-1).range_intersection([NR(7,4,-2)]),
            [NR(5,7,2)],
        )
        self.assertEqual(
            NR(10,0,-1).range_intersection([NR(7,None,-2)]),
            [NR(1,7,2)],
        )
        self.assertEqual(
            NR(0,None,-1).range_intersection([NR(None,-10,0)]),
            [NR(-10,None,-1)],
        )

        # Test continuous ranges
        self.assertEqual(
            NR(0,5,0).range_intersection([NR(5,10,0)]),
            [NR(5,5,0)],
        )
        self.assertEqual(
            NR(0,None,0).range_intersection([NR(5,None,0)]),
            [NR(5,None,0)],
        )

        # Disjoint ranges...
        a = NR(0.25, 10, 1)
        self.assertEqual(a.range_intersection([NR(0.5, 20, 1)]), [])
        self.assertEqual(a.range_intersection([NR(0.5, 20, 2)]), [])
        a = NR(0, 100, 2)
        self.assertEqual(a.range_intersection([NR(1, 100, 4)]), [])
        a = NR(0, None, 2)
        self.assertEqual(a.range_intersection([NR(1, None, 4)]), [])
        a = NR(0.25, None, 1)
        self.assertEqual(a.range_intersection([NR(0.5, None, 1)]), [])