Barry Warsaw | 07a0eec | 1996-12-12 23:34:06 +0000 | [diff] [blame] | 1 | import struct |
| 2 | ## import pdb |
| 3 | |
| 4 | def simple_err(func, *args): |
| 5 | try: |
| 6 | apply(func, args) |
| 7 | except struct.error: |
| 8 | pass |
| 9 | else: |
| 10 | print 'expected struct.error not caught' |
| 11 | ## pdb.set_trace() |
| 12 | |
| 13 | simple_err(struct.calcsize, 'Q') |
| 14 | |
| 15 | sz = struct.calcsize('i') |
| 16 | if sz * 3 <> struct.calcsize('iii'): |
| 17 | print 'inconsistent sizes' |
| 18 | |
| 19 | sz = struct.calcsize('cbhilfd') |
| 20 | if sz * 3 <> struct.calcsize('3c3b3h3i3l3f3d'): |
| 21 | print 'inconsistent sizes' |
| 22 | |
| 23 | simple_err(struct.pack, 'iii', 3) |
| 24 | simple_err(struct.pack, 'i', 3, 3, 3) |
| 25 | simple_err(struct.pack, 'i', 'foo') |
| 26 | simple_err(struct.unpack, 'd', 'flap') |
| 27 | s = struct.pack('ii', 1, 2) |
| 28 | simple_err(struct.unpack, 'iii', s) |
| 29 | simple_err(struct.unpack, 'i', s) |
| 30 | |
| 31 | c = 'a' |
| 32 | b = -1 |
| 33 | h = 255 |
| 34 | i = 65535 |
| 35 | l = 65536 |
| 36 | f = 3.1415 |
| 37 | d = 3.1415 |
| 38 | |
| 39 | s = struct.pack('xcbhilfd', c, b, h, i, l, f, d) |
| 40 | cp, bp, hp, ip, lp, fp, dp = struct.unpack('xcbhilfd', s) |
| 41 | if cp <> c or bp <> b or hp <> h or ip <> i or lp <> l or \ |
| 42 | int(100 * fp) <> int(100 * f) or int(100 * dp) <> int(100 * d): |
| 43 | # ^^^ calculate only to two decimal places |
| 44 | print 'unpack/pack not transitive' |