File: test_field.py

package info (click to toggle)
pypy 7.0.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 107,216 kB
  • sloc: python: 1,201,787; ansic: 62,419; asm: 5,169; cpp: 3,017; sh: 2,534; makefile: 545; xml: 243; lisp: 45; awk: 4
file content (64 lines) | stat: -rw-r--r-- 2,170 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from rpython.jit.backend.ppc.field import Field
from py.test import raises

import random

maxppcint = 0x7fffffff

class TestFields(object):
    def test_decode(self):
        # this test is crappy
        field = Field("test", 0, 31)
        for i in range(100):
            j = random.randrange(maxppcint)
            assert field.decode(j) == j
        field = Field("test", 0, 31-4)
        for i in range(100):
            j = random.randrange(maxppcint)
            assert field.decode(j) == j>>4
            assert field.decode(j) == j>>4
        field = Field("test", 3, 31-4)
        for i in range(100):
            j = random.randrange(maxppcint>>3)
            assert field.decode(j) == j>>4


    def test_decode_unsigned(self):
        field = Field("test", 16, 31)
        for i in range(1000):
            hi = long(random.randrange(0x10000)) << 16
            lo = long(random.randrange(0x10000))
            assert field.decode(hi|lo) == lo


    def test_decode_signed(self):
        field = Field("test", 16, 31, 'signed')
        for i in range(1000):
            hi = long(random.randrange(0x10000)) << 16
            lo = long(random.randrange(0x10000))
            word = hi|lo
            if lo & 0x8000:
                lo |= ~0xFFFF
            assert field.decode(word) == lo


    def test_error_checking_unsigned(self):
        for b in range(0, 17):
            field = Field("test", b, 15+b)
            assert field.decode(field.encode(0)) == 0
            assert field.decode(field.encode(32768)) == 32768
            assert field.decode(field.encode(65535)) == 65535
            raises(ValueError, field.encode, -32768)
            raises(ValueError, field.encode, -1)
            raises(ValueError, field.encode, 65536)


    def test_error_checking_signed(self):
        for b in range(0, 17):
            field = Field("test", b, 15+b, 'signed')
            assert field.decode(field.encode(0)) == 0
            assert field.decode(field.encode(-32768)) == -32768
            assert field.decode(field.encode(32767)) == 32767
            raises(ValueError, field.encode, 32768)
            raises(ValueError, field.encode, -32769)