home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_377 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  5.6 KB  |  187 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import unittest
  5. from ctypes import *
  6. import re
  7. import struct
  8. import sys
  9. if sys.byteorder == 'little':
  10.     THIS_ENDIAN = '<'
  11.     OTHER_ENDIAN = '>'
  12. else:
  13.     THIS_ENDIAN = '>'
  14.     OTHER_ENDIAN = '<'
  15.  
  16. class memoryview(object):
  17.     
  18.     def __init__(self, ob):
  19.         _buffer_info = _buffer_info
  20.         import _ctypes
  21.         (self.format, self.ndim, self.shape) = _buffer_info(ob)
  22.         if self.shape == ():
  23.             self.shape = None
  24.             self.itemsize = sizeof(ob)
  25.         else:
  26.             size = sizeof(ob)
  27.             for dim in self.shape:
  28.                 size /= dim
  29.             
  30.             self.itemsize = size
  31.         self.strides = None
  32.         self.readonly = False
  33.         self.size = sizeof(ob)
  34.  
  35.  
  36.  
  37. def normalize(format):
  38.     if format is None:
  39.         return ''
  40.     format = format.replace(OTHER_ENDIAN, THIS_ENDIAN)
  41.     return re.sub('\\s', '', format)
  42.  
  43.  
  44. class Test(unittest.TestCase):
  45.     
  46.     def test_native_types(self):
  47.         for tp, fmt, shape, itemtp in native_types:
  48.             ob = tp()
  49.             v = memoryview(ob)
  50.             
  51.             try:
  52.                 self.failUnlessEqual(normalize(v.format), normalize(fmt))
  53.                 self.failUnlessEqual(v.size, sizeof(ob))
  54.                 self.failUnlessEqual(v.itemsize, sizeof(itemtp))
  55.                 self.failUnlessEqual(v.shape, shape)
  56.                 self.failUnlessEqual(v.strides, None)
  57.                 self.failIf(v.readonly)
  58.                 if v.shape:
  59.                     n = 1
  60.                     for dim in v.shape:
  61.                         n = n * dim
  62.                     
  63.                     self.failUnlessEqual(v.itemsize * n, v.size)
  64.             continue
  65.             print tp
  66.             raise 
  67.             continue
  68.  
  69.         
  70.  
  71.     
  72.     def test_endian_types(self):
  73.         for tp, fmt, shape, itemtp in endian_types:
  74.             ob = tp()
  75.             v = memoryview(ob)
  76.             
  77.             try:
  78.                 self.failUnlessEqual(v.format, fmt)
  79.                 self.failUnlessEqual(v.size, sizeof(ob))
  80.                 self.failUnlessEqual(v.itemsize, sizeof(itemtp))
  81.                 self.failUnlessEqual(v.shape, shape)
  82.                 self.failUnlessEqual(v.strides, None)
  83.                 self.failIf(v.readonly)
  84.                 if v.shape:
  85.                     n = 1
  86.                     for dim in v.shape:
  87.                         n = n * dim
  88.                     
  89.                     self.failUnlessEqual(v.itemsize * n, v.size)
  90.             continue
  91.             print tp
  92.             raise 
  93.             continue
  94.  
  95.         
  96.  
  97.  
  98.  
  99. class Point(Structure):
  100.     _fields_ = [
  101.         ('x', c_long),
  102.         ('y', c_long)]
  103.  
  104.  
  105. class PackedPoint(Structure):
  106.     _pack_ = 2
  107.     _fields_ = [
  108.         ('x', c_long),
  109.         ('y', c_long)]
  110.  
  111.  
  112. class Point2(Structure):
  113.     pass
  114.  
  115. Point2._fields_ = [
  116.     ('x', c_long),
  117.     ('y', c_long)]
  118.  
  119. class EmptyStruct(Structure):
  120.     _fields_ = []
  121.  
  122.  
  123. class aUnion(Union):
  124.     _fields_ = [
  125.         ('a', c_int)]
  126.  
  127.  
  128. class Incomplete(Structure):
  129.     pass
  130.  
  131.  
  132. class Complete(Structure):
  133.     pass
  134.  
  135. PComplete = POINTER(Complete)
  136. Complete._fields_ = [
  137.     ('a', c_long)]
  138. native_types = [
  139.     (c_char, '<c', None, c_char),
  140.     (c_byte, '<b', None, c_byte),
  141.     (c_ubyte, '<B', None, c_ubyte),
  142.     (c_short, '<h', None, c_short),
  143.     (c_ushort, '<H', None, c_ushort),
  144.     (c_long, '<l', None, c_long),
  145.     (c_ulong, '<L', None, c_ulong),
  146.     (c_float, '<f', None, c_float),
  147.     (c_double, '<d', None, c_double),
  148.     (c_bool, '<?', None, c_bool),
  149.     (py_object, '<O', None, py_object),
  150.     (POINTER(c_byte), '&<b', None, POINTER(c_byte)),
  151.     (POINTER(POINTER(c_long)), '&&<l', None, POINTER(POINTER(c_long))),
  152.     (c_double * 4, '(4)<d', (4,), c_double),
  153.     (c_float * 4 * 3 * 2, '(2,3,4)<f', (2, 3, 4), c_float),
  154.     (POINTER(c_short) * 2, '(2)&<h', (2,), POINTER(c_short)),
  155.     (POINTER(c_short) * 2 * 3, '(3,2)&<h', (3, 2), POINTER(c_short)),
  156.     (POINTER(c_short * 2), '&(2)<h', None, POINTER(c_short)),
  157.     (Point, 'T{<l:x:<l:y:}', None, Point),
  158.     (PackedPoint, 'B', None, PackedPoint),
  159.     (Point2, 'T{<l:x:<l:y:}', None, Point2),
  160.     (EmptyStruct, 'T{}', None, EmptyStruct),
  161.     (aUnion, 'B', None, aUnion),
  162.     (Incomplete, 'B', None, Incomplete),
  163.     (POINTER(Incomplete), '&B', None, POINTER(Incomplete)),
  164.     (Complete, 'T{<l:a:}', None, Complete),
  165.     (POINTER(Complete), '&B', None, POINTER(Complete)),
  166.     (CFUNCTYPE(None), 'X{}', None, CFUNCTYPE(None))]
  167.  
  168. class BEPoint(BigEndianStructure):
  169.     _fields_ = [
  170.         ('x', c_long),
  171.         ('y', c_long)]
  172.  
  173.  
  174. class LEPoint(LittleEndianStructure):
  175.     _fields_ = [
  176.         ('x', c_long),
  177.         ('y', c_long)]
  178.  
  179. endian_types = [
  180.     (BEPoint, 'T{>l:x:>l:y:}', None, BEPoint),
  181.     (LEPoint, 'T{<l:x:<l:y:}', None, LEPoint),
  182.     (POINTER(BEPoint), '&T{>l:x:>l:y:}', None, POINTER(BEPoint)),
  183.     (POINTER(LEPoint), '&T{<l:x:<l:y:}', None, POINTER(LEPoint))]
  184. if __name__ == '__main__':
  185.     unittest.main()
  186.  
  187.