forked from ryokomy/python2-osc
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_osc_message.py
More file actions
103 lines (82 loc) · 3.12 KB
/
test_osc_message.py
File metadata and controls
103 lines (82 loc) · 3.12 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import unittest
from pythonosc import osc_message
# Datagrams sent by Reaktor 5.8 by Native Instruments (c).
_DGRAM_KNOB_ROTATES = (
b"/FB\x00"
b",f\x00\x00"
b">xca=q")
_DGRAM_SWITCH_GOES_OFF = (
b"/SYNC\x00\x00\x00"
b",f\x00\x00"
b"\x00\x00\x00\x00")
_DGRAM_SWITCH_GOES_ON = (
b"/SYNC\x00\x00\x00"
b",f\x00\x00"
b"?\x00\x00\x00")
_DGRAM_NO_PARAMS = b"/SYNC\x00\x00\x00"
_DGRAM_ALL_STANDARD_TYPES_OF_PARAMS = (
b"/SYNC\x00\x00\x00"
b",ifsb\x00\x00\x00"
b"\x00\x00\x00\x03" # 3
b"@\x00\x00\x00" # 2.0
b"ABC\x00" # "ABC"
b"\x00\x00\x00\x08stuff\x00\x00\x00") # b"stuff\x00\x00\x00"
_DGRAM_ALL_NON_STANDARD_TYPES_OF_PARAMS = (
b"/SYNC\x00\x00\x00"
b",T" # True
b"F\x00") # False
_DGRAM_UNKNOWN_PARAM_TYPE = (
b"/SYNC\x00\x00\x00"
b",fx\x00" # x is an unknown param type.
b"?\x00\x00\x00")
class TestOscMessage(unittest.TestCase):
def test_switch_goes_off(self):
msg = osc_message.OscMessage(_DGRAM_SWITCH_GOES_OFF)
self.assertEqual("/SYNC", msg.address)
self.assertEqual(1, len(msg.params))
self.assertTrue(type(msg.params[0]) == float)
self.assertAlmostEqual(0.0, msg.params[0])
def test_switch_goes_on(self):
msg = osc_message.OscMessage(_DGRAM_SWITCH_GOES_ON)
self.assertEqual("/SYNC", msg.address)
self.assertEqual(1, len(msg.params))
self.assertTrue(type(msg.params[0]) == float)
self.assertAlmostEqual(0.5, msg.params[0])
def test_knob_rotates(self):
msg = osc_message.OscMessage(_DGRAM_KNOB_ROTATES)
self.assertEqual("/FB", msg.address)
self.assertEqual(1, len(msg.params))
self.assertTrue(type(msg.params[0]) == float)
def test_no_params(self):
msg = osc_message.OscMessage(_DGRAM_NO_PARAMS)
self.assertEqual("/SYNC", msg.address)
self.assertEqual(0, len(msg.params))
def test_all_standard_types_off_params(self):
msg = osc_message.OscMessage(_DGRAM_ALL_STANDARD_TYPES_OF_PARAMS)
self.assertEqual("/SYNC", msg.address)
self.assertEqual(4, len(msg.params))
self.assertEqual(3, msg.params[0])
self.assertAlmostEqual(2.0, msg.params[1])
self.assertEqual("ABC", msg.params[2])
self.assertEqual(b"stuff\x00\x00\x00", msg.params[3])
self.assertEqual(4, len(list(msg)))
def test_all_non_standard_params(self):
msg = osc_message.OscMessage(_DGRAM_ALL_NON_STANDARD_TYPES_OF_PARAMS)
self.assertEqual("/SYNC", msg.address)
self.assertEqual(2, len(msg.params))
self.assertEqual(True, msg.params[0])
self.assertEqual(False, msg.params[1])
self.assertEqual(2, len(list(msg)))
def test_raises_on_empty_datargram(self):
self.assertRaises(osc_message.ParseError, osc_message.OscMessage, b'')
def test_ignores_unknown_param(self):
msg = osc_message.OscMessage(_DGRAM_UNKNOWN_PARAM_TYPE)
self.assertEqual("/SYNC", msg.address)
self.assertEqual(1, len(msg.params))
self.assertTrue(type(msg.params[0]) == float)
self.assertAlmostEqual(0.5, msg.params[0])
def test_raises_on_incorrect_datargram(self):
self.assertRaises(
osc_message.ParseError, osc_message.OscMessage, b'foobar')
if __name__ == "__main__":
unittest.main()