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}')
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)
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')] )
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')] )
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)
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)
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())
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)
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)
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])
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))
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()))
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})>')
def test_pickle(self): a = NNR('a') b = pickle.loads(pickle.dumps(a)) self.assertIsNot(a, b) self.assertEqual(a, b)
def test_info_methods(self): a = NNR('a') self.assertTrue(a.isdiscrete()) self.assertTrue(a.isfinite())
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)]), [])