[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/ryokomy/python2-osc/python2/pythonosc/test/test_osc_message.py [Back]  [Original]

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()

Web Proxy Viewer  |  New URL  |  Original Page