summaryrefslogtreecommitdiff
path: root/rdiff-backup/testing/statictest.py
diff options
context:
space:
mode:
Diffstat (limited to 'rdiff-backup/testing/statictest.py')
-rw-r--r--rdiff-backup/testing/statictest.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/rdiff-backup/testing/statictest.py b/rdiff-backup/testing/statictest.py
new file mode 100644
index 0000000..a9ff812
--- /dev/null
+++ b/rdiff-backup/testing/statictest.py
@@ -0,0 +1,63 @@
+import unittest, types
+execfile("commontest.py")
+rbexec("static.py")
+
+
+class D:
+ def foo(x, y):
+ return x, y
+ def bar(self, x):
+ return 3, x
+ def _hello(self):
+ return self
+
+MakeStatic(D)
+
+
+class C:
+ _a = 0
+ def get(cls):
+ return cls._a
+ def inc(cls):
+ cls._a = cls._a + 1
+
+MakeClass(C)
+
+
+class StaticMethodsTest(unittest.TestCase):
+ """Test StaticMethods module"""
+ def testType(self):
+ """Methods should have type StaticMethod"""
+ assert type(D.foo) is types.FunctionType
+ assert type(D.bar) is types.FunctionType
+
+ def testStatic(self):
+ """Methods should be callable without instance"""
+ assert D.foo(1,2) == (1,2)
+ assert D.bar(3,4) == (3,4)
+
+ def testBound(self):
+ """Methods should also work bound"""
+ d = D()
+ assert d.foo(1,2) == (1,2)
+ assert d.bar(3,4) == (3,4)
+
+ def testStatic_(self):
+ """_ Methods should be untouched"""
+ d = D()
+ self.assertRaises(TypeError, d._hello, 4)
+ assert d._hello() is d
+
+
+class ClassMethodsTest(unittest.TestCase):
+ def test(self):
+ """Test MakeClass function"""
+ assert C.get() == 0
+ C.inc()
+ assert C.get() == 1
+ C.inc()
+ assert C.get() == 2
+
+
+if __name__ == "__main__":
+ unittest.main()