import unittest import pyfmi.testcase points = 5 class ProblemTests(pyfmi.testcase.SpeakingTestCase): def setUp(self): global Interval super(ProblemTests, self).setUp() Interval = self.user.Interval def tearDown(self): super(ProblemTests, self).tearDown() global Interval Interval = None def testEqual(self): i0 = Interval(-6.33, 12321) i1 = Interval(-6.33, 12321) self.assertEqual(i0, i1) def testRepr(self): i = Interval(None, 131.0) self.assertEqual(i, eval(repr(i))) def testIntLong(self): iFloat = Interval(-6.00, 7.0) iInt = Interval(-6, 7) iLong = Interval(-6L, 7L) self.assertEqual(iFloat, iInt) self.assertEqual(iFloat, iLong) self.assertEqual(iInt, iLong) def testLeftOpen(self): i = Interval(7, None) self.assertFalse(i.leftOpen()) i = Interval(None, 88) self.assertTrue(i.leftOpen()) def testRightOpen(self): i = Interval(7, None) self.assertTrue(i.rightOpen()) i = Interval(None, 98) self.assertFalse(i.rightOpen()) def testOpen(self): i = Interval(10101010, 11111111) self.assertFalse(i.open()) i = Interval(None, 456546) self.assertTrue(i.open()) i = Interval(324324, None) self.assertTrue(i.open()) def testLeftRight(self): i = Interval(-5, 11) self.assertEqual(-5.0, i.left()) self.assertEqual(11, i.right()) def testExpand(self): i = Interval(-3, 11) self.assertEqual(Interval(-3, 10), i.expand(right=-1)) self.assertEqual(Interval(-2, 11), i.expand(left=-1)) self.assertEqual(Interval(-6, 10), i.expand(right=-1, left = 3)) def testIntersect(self): self.assertEqual(Interval(6, 11), Interval(5, 11).intersect(Interval(6, 12))) self.assertEqual(Interval(6, 11), Interval(None, 11).intersect(Interval(6, 12))) self.assertEqual(None, Interval(5, 11).intersect(Interval(12, 13))) self.assertEqual(None, Interval(3, None).intersect(Interval(None, 2.99))) def testIntersects(self): self.assertTrue(Interval(2, 3).intersects(Interval(3, 4))) self.assertFalse(Interval(2, 3).intersects(Interval(3.0001, 4))) self.assertFalse(Interval(None, -33).intersects(Interval(-32, 4))) self.assertTrue(Interval(None, -33).intersects(Interval(-34, 4))) self.assertTrue(Interval(-33, None).intersects(Interval(-34, None))) def testContains(self): self.assertFalse(Interval(-33, None).contains(Interval(-34, None))) self.assertTrue(Interval(-33, None).contains(Interval(-33, None))) self.assertTrue(Interval(-33, None).contains(Interval(-32, None))) self.assertTrue(Interval(-33, 66).contains(Interval(6, 66))) self.assertTrue(Interval(-33, 66).contains(Interval(6, 7))) self.assertFalse(Interval(None, -8).contains(Interval(-8, None))) def testUnequal(self): self.assertFalse(Interval(None, -8) != Interval(None, -8)) self.assertTrue(Interval(None, 0.1) != Interval(None, 0)) def testHash(self): self.assertEqual(hash(Interval(3, 11)), hash(Interval(3, 11))) def testLen(self): self.assertEqual(5, len(Interval(0, 5))) self.assertEqual(0, len(Interval(-22, -22))) self.assertEqual(0, len(Interval(-22, None))) self.assertEqual(0, len(Interval(None, 22))) self.assertEqual(7, len(Interval(-2, 4.1))) def testSum(self): self.assertEqual(Interval(None, None), Interval(None, 11) + Interval(10, None)) self.assertEqual(Interval(6, None), Interval(6, 18) + Interval(18, None)) self.assertEqual(Interval(6, 99), Interval(6, 97) + Interval(7, 99.0)) self.assertRaises(ValueError, Interval.__add__, Interval(7, 99), Interval(101, 200)) def testCmp(self): self.assertFalse(Interval(1, 2) <= Interval(0.5, 1.5)) self.assertFalse(Interval(1, 2) >= Interval(0.5, 1.5)) self.assertTrue(Interval(7, 22) > Interval(8, 22)) self.assertFalse(Interval(7, 22) < Interval(8, 22)) if __name__ == "__main__": #ProblemTests.user_filename = "fn43535/2007-04-02 17:48:24/user.py"; ProblemTests.user_filename = "fn80097/2007-04-03 18:44:51/user.py"; import sys if len(sys.argv) > 1: ProblemTests.user_filename = sys.argv[1] sys.argv = sys.argv[0:1] unittest.main()