cryoscopy
This commit is contained in:
parent
625a937a10
commit
75f4ea8a27
1 changed files with 212 additions and 0 deletions
212
osc-tests.lisp
Normal file
212
osc-tests.lisp
Normal file
|
@ -0,0 +1,212 @@
|
|||
;; -*- mode: lisp -*-
|
||||
;;
|
||||
;; Quick and dirty tests for cl-osc
|
||||
;;
|
||||
;; You are granted the rights to distribute and use this software
|
||||
;; as governed by the terms of GNU Public License (aka the GPL)
|
||||
;; see the LICENCE file.
|
||||
|
||||
;; Authors
|
||||
;; - nik gaffney <nik@fo.am>
|
||||
|
||||
#+sbcl (require 'sb-bsd-sockets)
|
||||
|
||||
(defun osc-write ()
|
||||
"a basic test function which sends various osc stuff on port 5555"
|
||||
(let ((sock (sb-bsd-sockets::make-instance
|
||||
'inet-socket
|
||||
:type :datagram
|
||||
:protocol :udp)))
|
||||
(sb-bsd-sockets::socket-connect sock #(127 0 0 1) 5555)
|
||||
(let ((stream
|
||||
(sb-bsd-sockets::socket-make-stream
|
||||
sock
|
||||
:input t
|
||||
:output t
|
||||
:element-type '(unsigned-byte 8)
|
||||
:buffering :full)))
|
||||
(prin1 "int? ")
|
||||
(write-sequence (oti) stream)
|
||||
(force-output stream)
|
||||
(prin1 "float? ")
|
||||
(write-sequence (otf) stream)
|
||||
(force-output stream)
|
||||
(prin1 "string?")
|
||||
(write-sequence (ots) stream)
|
||||
(force-output stream)
|
||||
(prin1 "mutliple args?")
|
||||
(write-sequence (otm) stream)
|
||||
(force-output stream)
|
||||
(sb-bsd-sockets::socket-close sock)
|
||||
)))
|
||||
|
||||
(defun oti () (osc:encode-message "/test/int" 3))
|
||||
(defun otf () (osc:encode-message "/test/float" 4.337))
|
||||
(defun ots () (osc:encode-message "/test/string" "wonky_stringpuk"))
|
||||
(defun otbl () (osc:encode-message "/test/blob" #(0 0 0 0 0 0 0 0 0 0 0 0 0 0)))
|
||||
(defun otm () (osc:encode-message "/test/multi 5.78 1" "five point seven eight" "and one"))
|
||||
(defun otbn () (osc-encode-bundle (osc-make-test-bundle)))
|
||||
|
||||
;; test todo
|
||||
;; - negative floats
|
||||
;; - bignums
|
||||
;; - blobs, and long args
|
||||
;; - byte aligning 0,1,2,3,4 mod
|
||||
;; - error catching, junk data
|
||||
|
||||
(defun osc-test ()
|
||||
(list
|
||||
(osc-t2) (osc-t3) (osc-t4) (osc-t5) (osc-t6) (osc-t7) (osc-t8) (osc-t9)
|
||||
(osc-t10) (osc-t11) (osc-t12) (osc-t13)
|
||||
))
|
||||
|
||||
(defun osc-t2 ()
|
||||
(equalp '("/dip/lop" 666)
|
||||
(osc:decode-message #(47 100 105 112 47 108 111 112 0 0 0 0 44 105 0 0 0 0 2 154))))
|
||||
|
||||
(defun osc-t3 ()
|
||||
(equalp '#(0 0 0 3 116 101 115 116 0 0 0 0 0 0 0 2 0 0 0 1 64 159 92 41)
|
||||
(osc::encode-data '(3 "test" 2 1 4.98))))
|
||||
|
||||
(defun osc-t4 ()
|
||||
(equalp #(44 105 115 102 0 0 0 0)
|
||||
(osc::encode-typetags '(1 "terrr" 3.4))))
|
||||
|
||||
(defun osc-t5 ()
|
||||
(equalp #(44 105 105 102 0 0 0 0)
|
||||
(osc::encode-typetags '(1 2 3.3))))
|
||||
|
||||
(defun osc-t6 ()
|
||||
(equal '("/test/one" 1 2 3.3)
|
||||
(osc:decode-message #(47 116 101 115 116 47 111 110 101 0 0 0 44 105 105 102 0 0 0 0 0 0 0 1 0 0 0 2 64 83 51 51))))
|
||||
|
||||
(defun osc-t7 ()
|
||||
(equalp '(#(0 0 0 0 0 0 0 1) ("/voices/0/tm/start" 0.0)
|
||||
("/foo/stringmessage" "a" "few" "strings") ("/documentation/all-messages"))
|
||||
(osc:decode-bundle
|
||||
#(#x23 #x62 #x75 #x6e
|
||||
#x64 #x6c #x65 0
|
||||
0 0 0 0
|
||||
0 0 0 #x1
|
||||
0 0 0 #x20
|
||||
#x2f #x64 #x6f #x63
|
||||
#x75 #x6d #x65 #x6e
|
||||
#x74 #x61 #x74 #x69
|
||||
#x6f #x6e #x2f #x61
|
||||
#x6c #x6c #x2d #x6d
|
||||
#x65 #x73 #x73 #x61
|
||||
#x67 #x65 #x73 0
|
||||
#x2c 0 0 0
|
||||
0 0 0 #x2c
|
||||
#x2f #x66 #x6f #x6f
|
||||
#x2f #x73 #x74 #x72
|
||||
#x69 #x6e #x67 #x6d
|
||||
#x65 #x73 #x73 #x61
|
||||
#x67 #x65 0 0
|
||||
#x2c #x73 #x73 #x73
|
||||
0 0 0 0
|
||||
#x61 0 0 0
|
||||
#x66 #x65 #x77 0
|
||||
#x73 #x74 #x72 #x69
|
||||
#x6e #x67 #x73 0
|
||||
0 0 0 #x1c
|
||||
#x2f #x76 #x6f #x69
|
||||
#x63 #x65 #x73 #x2f
|
||||
#x30 #x2f #x74 #x6d
|
||||
#x2f #x73 #x74 #x61
|
||||
#x72 #x74 0 0
|
||||
#x2c #x66 0 0
|
||||
0 0 0 0))))
|
||||
|
||||
(defun osc-t8 ()
|
||||
(equalp (osc::encode-message "/blob/x" #(1 2 3 4 5 6 7 8 9))
|
||||
#(47 98 108 111 98 47 120 0 44 98 0 0 0 0 0 9 1 2 3 4 5 6 7 8 9 0 0 0)))
|
||||
|
||||
(defun osc-t9 ()
|
||||
(equalp '("/blob/x" #(1 2 3 4 5 6 7 8 9))
|
||||
(osc::decode-message
|
||||
#(47 98 108 111 98 47 120 0 44 98 0 0 0 0 0 9 1 2 3 4 5 6 7 8 9 0 0 0))))
|
||||
|
||||
(defun osc-t10 ()
|
||||
(equalp '("/blob" #(1 29 32 43 54 66 78 81) 2 "lop")
|
||||
(osc:decode-message
|
||||
#(47 98 108 111 98 0 0 0 44 98 105 115 0 0 0 0
|
||||
0 0 0 8 1 29 32 43 54 66 78 81 0 0 0 0 0 0 0 2 108 111 112 0))))
|
||||
|
||||
(defun osc-t11 ()
|
||||
(equalp '(#(0 0 0 0 0 0 0 1) ("/string/a/ling" "slink" "slonk" "slank")
|
||||
("/we/wo/w" 1 2 3.4) ("/blob" #(1 29 32 43 54 66 78 81 90) "lop" -0.44))
|
||||
(osc:decode-bundle
|
||||
#(35 98 117 110 100 108 101 0 0 0 0 0 0 0 0 1 0 0 0 40 47 98 108 111 98 0 0 0
|
||||
44 98 115 102 0 0 0 0 0 0 0 9 1 29 32 43 54 66 78 81 90 0 0 0 108 111 112 0
|
||||
190 225 71 174 0 0 0 32 47 119 101 47 119 111 47 119 0 0 0 0 44 105 105 102 0
|
||||
0 0 0 0 0 0 1 0 0 0 2 64 89 153 154 0 0 0 48 47 115 116 114 105 110 103 47 97
|
||||
47 108 105 110 103 0 0 44 115 115 115 0 0 0 0 115 108 105 110 107 0 0 0 115
|
||||
108 111 110 107 0 0 0 115 108 97 110 107 0 0 0))))
|
||||
|
||||
|
||||
|
||||
(defun osc-read (port)
|
||||
"a basic test function which attempts to decode osc stuff on port xc"
|
||||
(let ((s (make-instance 'inet-socket
|
||||
:type :datagram
|
||||
:protocol (get-protocol-by-name "udp")))
|
||||
(buffer (make-sequence '(vector (unsigned-byte 8)) 512)))
|
||||
(format t "Socket type is ~A on port ~A~%" (sockopt-type s) port)
|
||||
(socket-bind s #(127 0 0 1) port)
|
||||
(socket-receive s buffer nil :waitall t)
|
||||
(socket-close s)
|
||||
(osc:decode-message buffer)
|
||||
))
|
||||
|
||||
;(osc-decode-message data)
|
||||
|
||||
(defun osc-ft ()
|
||||
(and (eql (osc::DECODE-FLOAT32 #(63 84 32 93)) 0.8286188)
|
||||
(eql (osc::DECODE-FLOAT32 #(190 124 183 78)) -0.246793)))
|
||||
|
||||
|
||||
;; equalp but not eql
|
||||
(defun osc-t12 ()
|
||||
(equalp (osc:encode-message "/asdasd" 3.6 4.5)
|
||||
#(47 97 115 100 97 115 100 0 44 102 102 0 64 102 102 102 64 144 0 0)))
|
||||
|
||||
;; equal but not eql
|
||||
(defun osc-t13 ()
|
||||
(equal (osc:decode-message #(47 97 115 100 97 115 100 0 44 102 102 0 64 102 102 102 64 144 0 0))
|
||||
(list "/asdasd" 3.6 4.5)))
|
||||
|
||||
;; not symmetrical? how much of a problem is this?
|
||||
(defun osc-asym-t1 ()
|
||||
"this test will fail"
|
||||
(osc:decode-message
|
||||
(osc:encode-message
|
||||
(osc:decode-message #(47 97 115 100 97 115 100 0 44 102 102 0 64 102 102 102 64 144 0 0)))))
|
||||
|
||||
(defun osc-asym-t2 ()
|
||||
"testing the assumptions about representations of messages"
|
||||
(setf packed-msg #(47 97 115 100 97 115 100 0 44 102 102 0 64 102 102 102 64 144 0 0))
|
||||
(setf cons-msg (osc:decode-message packed-msg))
|
||||
(osc:encode-message (values-list cons-msg)))
|
||||
|
||||
;;
|
||||
|
||||
|
||||
#|
|
||||
sc3 server
|
||||
|
||||
32 byte message:
|
||||
2f (/) 6e (n) 5f (_) 73 (s)
|
||||
65 (e) 74 (t) 0 () 0 ()
|
||||
2c (,) 69 (i) 73 (s) 66 (f)
|
||||
0 () 0 () 0 () 0 ()
|
||||
0 () 0 () 1 () fffffff6 (?)
|
||||
66 (f) 72 (r) 65 (e) 71 (q)
|
||||
0 () 0 () 0 () 0 ()
|
||||
3f (?) ffffff80 (?) 0 () 0 ()
|
||||
|
||||
/n_set 502 "freq" 1.000000
|
||||
|
||||
|#
|
||||
|
||||
;; (osc-test)
|
Loading…
Reference in a new issue