|
1 | 1 | defmodule OSC.MessageTest do
|
2 | 2 | use ExUnit.Case
|
3 | 3 |
|
4 |
| - test "parses a simple osc message" do |
| 4 | + test "parses a simple integer osc message" do |
5 | 5 | msg = <<"/ab", 0, ",", 0, 0, 0>>
|
6 | 6 | assert {"/ab", []} = OSC.Message.parse(msg)
|
7 | 7 |
|
8 | 8 | msg = <<"/ab", 0, ",i", 0, 0, 1000 :: [signed, big, size(32)]>>
|
9 | 9 | assert {"/ab", [{:osc_integer, 1000}]} = OSC.Message.parse(msg)
|
10 |
| - |
| 10 | + |
11 | 11 | msg = <<"/ab", 0, ",ii", 0, 1000 :: [signed, big, size(32)], 16 :: [signed, big, size(32)]>>
|
12 | 12 | assert {"/ab", [{:osc_integer, 1000}, {:osc_integer, 16}]} = OSC.Message.parse(msg)
|
13 | 13 |
|
14 |
| - msg = <<"/ab", 0, ",iii", 0, 0, 0, 0, 1000 :: [signed, big, size(32)], |
| 14 | + msg = <<"/ab", 0, ",iii", 0, 0, 0, 0, 1000 :: [signed, big, size(32)], |
15 | 15 | 16 :: [signed, big, size(32)], 17 :: [signed, big, size(32)] >>
|
16 | 16 | assert {"/ab", [{:osc_integer, 1000}, {:osc_integer, 16}, {:osc_integer, 17}]} = OSC.Message.parse(msg)
|
17 | 17 | end
|
18 | 18 |
|
| 19 | + test "parses a simple float osc message" do |
| 20 | + msg = <<"/ab", 0, ",f", 0, 0, 0x43, 0xdc, 0, 0>> |
| 21 | + assert {"/ab", [{:osc_float, 440.0}]} = OSC.Message.parse(msg) |
| 22 | + |
| 23 | + msg = <<"/ab", 0, ",f", 0, 0, 0x40, 0xb5, 0xb2, 0x2d>> |
| 24 | + {path, [{key, value}]} = OSC.Message.parse(msg) |
| 25 | + assert "/ab" = path |
| 26 | + assert :osc_float = key |
| 27 | + assert_in_delta 5.678, value, 0.001 |
| 28 | + |
| 29 | + msg = <<"/ab", 0, ",f", 0, 0, 0x3f, 0x9d, 0xf3, 0xb6>> |
| 30 | + {path, [{key, value}]} = OSC.Message.parse(msg) |
| 31 | + assert "/ab" = path |
| 32 | + assert :osc_float = key |
| 33 | + assert_in_delta 1.234, value, 0.001 |
| 34 | + end |
| 35 | + |
| 36 | + test "parses combined message" do |
| 37 | + msg = <<"/ab", 0, ",if", 0, 1000 :: [signed, big, size(32)], 0x43dc0000 :: size(32)>> |
| 38 | + {path, [{int_key, int_value}, {float_key, float_value}]} = OSC.Message.parse(msg) |
| 39 | + assert "/ab" = path |
| 40 | + assert :osc_integer = int_key |
| 41 | + assert 1000 = int_value |
| 42 | + assert :osc_float = float_key |
| 43 | + assert_in_delta 440.0, float_value, 0.001 |
| 44 | + end |
| 45 | + |
19 | 46 | end
|
20 | 47 |
|
0 commit comments