diff options
| author | pinky <> | 2007-01-07 21:26:16 +0000 |
|---|---|---|
| committer | pinky <> | 2007-01-07 21:26:16 +0000 |
| commit | db39be37af8e1f7947c186a2b4688f5963ed7cc7 (patch) | |
| tree | 00228b8f6f6f2d14e30181376b2406d557b6e6de /bin/reportlab/test/test_widgetbase_tpc.py | |
| parent | eacf3d2a7007d9abe4fb00245d6fe833241fe283 (diff) | |
Reportlab 2.0
bzr revid: pinky-42646ca164f938abd312f6b2f8dccf73970f0c59
Diffstat (limited to 'bin/reportlab/test/test_widgetbase_tpc.py')
| -rw-r--r-- | bin/reportlab/test/test_widgetbase_tpc.py | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/bin/reportlab/test/test_widgetbase_tpc.py b/bin/reportlab/test/test_widgetbase_tpc.py new file mode 100644 index 00000000000..4e8c0b1e33a --- /dev/null +++ b/bin/reportlab/test/test_widgetbase_tpc.py @@ -0,0 +1,138 @@ +#Copyright ReportLab Europe Ltd. 2000-2004 +#see license.txt for license details +#history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/test/test_widgetbase_tpc.py +""" +Tests for TypedPropertyCollection class. +""" + +import os, sys, copy +from os.path import join, basename, splitext + +from reportlab.test import unittest +from reportlab.test.utils import makeSuiteForClasses, printLocation + +from reportlab.graphics.widgetbase import PropHolder, TypedPropertyCollection +from reportlab.lib.attrmap import AttrMap, AttrMapValue +from reportlab.lib.validators import isNumber + + +TPC = TypedPropertyCollection + + +class PH(PropHolder): + _attrMap = AttrMap( + a = AttrMapValue(isNumber), + b = AttrMapValue(isNumber) + ) + + +class APH(PH): + def __init__(self): + self.a = 1 + + +class BPH(APH): + def __init__(self): + APH.__init__(self) + + def __getattr__(self,name): + if name=='b': return -1 + raise AttributeError + + +class TPCTestCase(unittest.TestCase): + "Test TypedPropertyCollection class." + + def test0(self): + "Test setting an invalid collective attribute." + + t = TPC(PH) + try: + t.c = 42 + except AttributeError: + pass + + + def test1(self): + "Test setting a valid collective attribute." + + t = TPC(PH) + t.a = 42 + assert t.a == 42 + + + def test2(self): + "Test setting a valid collective attribute with an invalid value." + + t = TPC(PH) + try: + t.a = 'fourty-two' + except AttributeError: + pass + + + def test3(self): + "Test setting a valid collective attribute with a convertible invalid value." + + t = TPC(PH) + t.a = '42' + assert t.a == '42' # Or should it rather be an integer? + + + def test4(self): + "Test accessing an unset collective attribute." + + t = TPC(PH) + try: + t.a + except AttributeError: + pass + + + def test5(self): + "Test overwriting a collective attribute in one slot." + + t = TPC(PH) + t.a = 42 + t[0].a = 4242 + assert t[0].a == 4242 + + + def test6(self): + "Test overwriting a one slot attribute with a collective one." + + t = TPC(PH) + t[0].a = 4242 + t.a = 42 + assert t[0].a == 4242 + + + def test7(self): + "Test to ensure we can handle classes with __getattr__ methods" + + a=TypedPropertyCollection(APH) + b=TypedPropertyCollection(BPH) + + a.a=3 + b.a=4 + try: + a.b + assert 1, "Shouldn't be able to see a.b" + except AttributeError: + pass + a.b=0 + assert a.b==0, "Wrong value for "+str(a.b) + assert b.b==-1, "This should call __getattr__ special" + b.b=0 + assert a[0].b==0 + assert b[0].b==-1, "Class __getattr__ should return -1" + + +def makeSuite(): + return makeSuiteForClasses(TPCTestCase) + + +#noruntests +if __name__ == "__main__": + unittest.TextTestRunner().run(makeSuite()) + printLocation() |
