test_standalone.py 2.73 KB
Newer Older
Maxime Perrotin's avatar
Maxime Perrotin committed
1
2
3
4
5
6
7
8
#!/usr/bin/env python

import sys

sys.path.insert(0, '../..')
from asn1_value_editor import standalone_editor as editor
editor.logger.setLevel(editor.logging.DEBUG)

9
'''
Maxime Perrotin's avatar
Maxime Perrotin committed
10
Use py.test-2.7 to run these tests, and make sure you have installed pytest-qt
11
12
13
pip install --user pytest-qt
'''

Maxime Perrotin's avatar
Maxime Perrotin committed
14
15
16
TEST = editor.SingleValueEditor('data/dv1.asn')

def common(typeName, defValue):
Maxime Perrotin's avatar
Maxime Perrotin committed
17
    ''' Set up test case: create asn1 editor and fill with default value '''
Maxime Perrotin's avatar
Maxime Perrotin committed
18
    widget = TEST.setupEdit(typeName, defValue=defValue)['editor']
Maxime Perrotin's avatar
Maxime Perrotin committed
19
20
21
22
23
24
    # Create a new type instance to put the result, so that we make sure
    # that the result value is really taken from the ASN.1 editor
    dest_instance = getattr(TEST.asn1ctypes, typeName.replace('-', '_'))()
    widget.getVariable(dest=dest_instance)
    assert widget.asn1Instance.GSER() == dest_instance.GSER()
    return dest_instance.GSER()
Maxime Perrotin's avatar
Maxime Perrotin committed
25

Maxime Perrotin's avatar
Maxime Perrotin committed
26
27
def test_bool(qtbot):
    ''' Test boolean values '''
28
    typeName = "Type-SingleBool"
Maxime Perrotin's avatar
Maxime Perrotin committed
29
    defValue = 'TRUE'
Maxime Perrotin's avatar
Maxime Perrotin committed
30
    result = common(typeName, defValue)
Maxime Perrotin's avatar
Maxime Perrotin committed
31
    assert result == defValue
32

Maxime Perrotin's avatar
Maxime Perrotin committed
33
    defValue = 'FALSE'
Maxime Perrotin's avatar
Maxime Perrotin committed
34
    result = common(typeName, defValue)
Maxime Perrotin's avatar
Maxime Perrotin committed
35
36
    assert result == defValue

Maxime Perrotin's avatar
Maxime Perrotin committed
37
38
def test_int(qtbot):
    ''' Test integer value '''
Maxime Perrotin's avatar
Maxime Perrotin committed
39
40
    typeName = "Type-SingleInt"
    defValue = '42'
Maxime Perrotin's avatar
Maxime Perrotin committed
41
    result = common(typeName, defValue)
Maxime Perrotin's avatar
Maxime Perrotin committed
42
    assert result == defValue
Maxime Perrotin's avatar
Maxime Perrotin committed
43

44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
def test_real(qtbot):
    ''' Test float value '''
    typeName = "Type-SingleReal"
    defValue = '1.25'
    result = common(typeName, defValue)
    assert result == defValue

def test_enum(qtbot):
    ''' Test enumerated value '''
    typeName = "Type-SingleEnum"
    defValue = 'enum-one'
    result = common(typeName, defValue)
    assert result == defValue

    defValue = 'enum-two'
    result = common(typeName, defValue)
    assert result == defValue

def test_string(qtbot):
    ''' Test octet string value '''
    typeName = "Type-SingleString"
    defValue = '"Hello, world"'
    result = common(typeName, defValue)
    assert result == defValue

Maxime Perrotin's avatar
Maxime Perrotin committed
69
def test_simpleseq(qtbot):
Maxime Perrotin's avatar
Maxime Perrotin committed
70
71
72
73
74
75
    ''' Test SEQUENCE '''
    typeName = "Type-SimpleSeq"
    defValue = '{ item-a   42 ,  item-b   TRUE ,  item-c   enum-two ,  item-d   "Hello world" }'
    result = common(typeName, defValue)
    assert result == defValue

Maxime Perrotin's avatar
Maxime Perrotin committed
76
77
78
79
80
81
82
83
84
85
86
87
88
89
def test_simplechoice(qtbot):
    ''' Test CHOICE '''
    typeName = "Type-SingleChoice"
    defValue = 'choice-b:   TRUE'
    result = common(typeName, defValue)
    assert result == defValue

def test_simpleseqof(qtbot):
    ''' Test SEQOF '''
    typeName = "Type-SingleSeqOf"
    defValue = '{  1 ,  2 ,  3 ,  4 ,  5 }'
    result = common(typeName, defValue)
    assert result == defValue

Maxime Perrotin's avatar
Maxime Perrotin committed
90
if __name__ == '__main__':
Maxime Perrotin's avatar
Maxime Perrotin committed
91
92
93
    print('You must run py.test-2.7 to execute this test script')
    print('Make sure you have pytest-qt (pip install --user pytest-qt)')
    sys.exit(1)