# Originally contributed by Stefan Schukat as part of this arbitrary-sized # arrays patch. from win32com.client import gencache from win32com.test import util import unittest ZeroD = 0 OneDEmpty = [] OneD = [1,2,3] TwoD = [ [1,2,3], [1,2,3], [1,2,3] ] TwoD1 = [ [ [1,2,3,5], [1,2,3], [1,2,3] ], [ [1,2,3], [1,2,3], [1,2,3] ] ] OneD1 = [ [ [1,2,3], [1,2,3], [1,2,3] ], [ [1,2,3], [1,2,3] ] ] OneD2 = [ [1,2,3], [1,2,3,4,5], [ [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5] ] ] ThreeD = [ [ [1,2,3], [1,2,3], [1,2,3] ], [ [1,2,3], [1,2,3], [1,2,3] ] ] FourD = [ [ [[1,2,3],[1,2,3],[1,2,3]], [[1,2,3],[1,2,3],[1,2,3]], [[1,2,3],[1,2,3],[1,2,3]] ], [ [[1,2,3],[1,2,3],[1,2,3]], [[1,2,3],[1,2,3],[1,2,3]], [[1,2,3],[1,2,3],[1,2,3]] ] ] LargeD = [ [ [list(range(10))] * 10], ] * 512 def _normalize_array(a): if type(a) != type(()): return a ret = [] for i in a: ret.append(_normalize_array(i)) return ret class ArrayTest(util.TestCase): def setUp(self): self.arr = gencache.EnsureDispatch("PyCOMTest.ArrayTest") def tearDown(self): self.arr = None def _doTest(self, array): self.arr.Array = array self.failUnlessEqual(_normalize_array(self.arr.Array), array) def testZeroD(self): self._doTest(ZeroD) def testOneDEmpty(self): self._doTest(OneDEmpty) def testOneD(self): self._doTest(OneD) def testTwoD(self): self._doTest(TwoD) def testThreeD(self): self._doTest(ThreeD) def testFourD(self): self._doTest(FourD) def testTwoD1(self): self._doTest(TwoD1) def testOneD1(self): self._doTest(OneD1) def testOneD2(self): self._doTest(OneD2) def testLargeD(self): self._doTest(LargeD) if __name__ == "__main__": try: util.testmain() except SystemExit as rc: if not rc: raise