X Tutup
# =========================================================================== # This software is subject to the provisions of the Zope Public License, # Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # =========================================================================== from System.Collections import Hashtable from Python.Test import ClassTest import sys, os, string, unittest, types import Python.Test as Test import System class ClassTests(unittest.TestCase): """Test CLR class support.""" def testBasicReferenceType(self): """Test usage of CLR defined reference types.""" String = System.String self.assertEquals(String.Empty, "") def testBasicValueType(self): """Test usage of CLR defined value types.""" Int32 = System.Int32 self.assertEquals(Int32.MaxValue, 2147483647) def testClassStandardAttrs(self): """Test standard class attributes.""" self.assertTrue(ClassTest.__name__ == 'ClassTest') self.assertTrue(ClassTest.__module__ == 'Python.Test') self.assertTrue(type(ClassTest.__dict__) == types.DictProxyType) self.assertTrue(len(ClassTest.__doc__) > 0) def testClassDocstrings(self): """Test standard class docstring generation""" value = 'Void .ctor()' self.assertTrue(ClassTest.__doc__ == value) def testClassDefaultStr(self): """Test the default __str__ implementation for managed objects.""" s = System.String("this is a test") self.assertTrue(str(s) == "this is a test") def testClassDefaultRepr(self): """Test the default __repr__ implementation for managed objects.""" s = System.String("this is a test") self.assertTrue(repr(s).startswith(" -1) and (item < 10)) dict = Test.ClassTest.GetHashtable() for item in dict: cname = item.__class__.__name__ self.assertTrue(cname.endswith('DictionaryEntry')) def testIEnumeratorIteration(self): """Test iteration over objects supporting IEnumerator.""" chars = Test.ClassTest.GetEnumerator() for item in chars: self.assertTrue(item in 'test string') def testOverrideGetItem(self): """Test managed subclass overriding __getitem__.""" class MyTable(Hashtable): def __getitem__(self, key): value = Hashtable.__getitem__(self, key) return 'my ' + str(value) table = MyTable() table['one'] = 'one' table['two'] = 'two' table['three'] = 'three' self.assertTrue(table['one'] == 'my one') self.assertTrue(table['two'] == 'my two') self.assertTrue(table['three'] == 'my three') self.assertTrue(table.Count == 3) def testOverrideSetItem(self): """Test managed subclass overriding __setitem__.""" class MyTable(Hashtable): def __setitem__(self, key, value): value = 'my ' + str(value) Hashtable.__setitem__(self, key, value) table = MyTable() table['one'] = 'one' table['two'] = 'two' table['three'] = 'three' self.assertTrue(table['one'] == 'my one') self.assertTrue(table['two'] == 'my two') self.assertTrue(table['three'] == 'my three') self.assertTrue(table.Count == 3) class ClassicClass: def kind(self): return 'classic' class NewStyleClass(object): def kind(self): return 'new-style' def test_suite(): return unittest.makeSuite(ClassTests) def main(): unittest.TextTestRunner().run(test_suite()) if __name__ == '__main__': main()
X Tutup