1'''
2Some simple tests to check that the framework is properly wrapped.
3'''
4import objc
5from PyObjCTools.TestSupport import *
6import ScreenSaver
7
8class TestScreenSaver (TestCase):
9    def testClasses(self):
10        self.assert_( hasattr(ScreenSaver, 'ScreenSaverDefaults') )
11        self.assert_( isinstance(ScreenSaver.ScreenSaverDefaults, objc.objc_class) )
12
13        self.assert_( hasattr(ScreenSaver, 'ScreenSaverView') )
14        self.assert_( isinstance(ScreenSaver.ScreenSaverView, objc.objc_class) )
15
16    def testInlines(self):
17        self.assert_( hasattr(ScreenSaver, 'SSRandomIntBetween') )
18        self.assert_( isinstance(ScreenSaver.SSRandomIntBetween, objc.function) )
19
20        self.assert_( hasattr(ScreenSaver, 'SSCenteredRectInRect') )
21        self.assert_( isinstance(ScreenSaver.SSCenteredRectInRect, objc.function) )
22
23        fn = ScreenSaver.SSCenteredRectInRect
24        innerRect = ScreenSaver.NSMakeRect(5, 5, 20, 30)
25        outerRect = ScreenSaver.NSMakeRect(0, 0, 50, 60)
26
27        res = fn(innerRect, outerRect)
28        self.assert_(isinstance(res, ScreenSaver.NSRect))
29        self.assertEquals(res, ScreenSaver.NSMakeRect(15, 15.0, 20.0, 30.0))
30
31        fn = ScreenSaver.SSRandomFloatBetween
32        for _ in range(10):
33            r = fn(1.0, 20.5)
34            self.assert_(1.0 <= r <= 20.5)
35            self.assert_(isinstance(r, float))
36
37        fn = ScreenSaver.SSRandomIntBetween
38        for _ in range(10):
39            r = fn(-10, 20)
40            self.assert_(-10 <= r <= 20)
41            self.assert_(isinstance(r, (int, long)))
42
43        fn = ScreenSaver.SSRandomPointForSizeWithinRect
44        r = fn(ScreenSaver.NSMakeSize(10, 10), ScreenSaver.NSMakeRect(20, 20, 100, 100))
45        self.assert_(isinstance(r, ScreenSaver.NSPoint))
46
47
48if __name__ == "__main__":
49    main()
50
51