|
|
|
#lang reader (submod "racket.rkt" reader)
|
|
|
|
|
|
|
|
|
|
|
|
#|
|
|
|
|
approximates
|
|
|
|
https://github.com/mbutterick/restructure/blob/master/test/Buffer.coffee
|
|
|
|
|#
|
|
|
|
|
|
|
|
;describe 'Buffer', ->
|
|
|
|
; describe 'decode', ->
|
|
|
|
; it 'should decode', ->
|
|
|
|
(parameterize ([current-input-port (open-input-bytes (bytes #xab #xff #x1f #xb6))])
|
|
|
|
(define buf (+BufferT 2))
|
|
|
|
(check-equal? (decode buf) (bytes #xab #xff))
|
|
|
|
(check-equal? (decode buf) (bytes #x1f #xb6)))
|
|
|
|
|
|
|
|
|
|
|
|
; it 'should decode with parent key length', ->
|
|
|
|
(parameterize ([current-input-port (open-input-bytes (bytes #xab #xff #x1f #xb6))])
|
|
|
|
(define buf (+BufferT 'len))
|
|
|
|
(check-equal? (decode buf #:parent (hash 'len 3)) (bytes #xab #xff #x1f))
|
|
|
|
(check-equal? (decode buf #:parent (hash 'len 1)) (bytes #xb6)))
|
|
|
|
|
|
|
|
|
|
|
|
; describe 'size', ->
|
|
|
|
; it 'should return size', ->
|
|
|
|
(check-equal? (size (+BufferT 2) (bytes #xab #xff)) 2)
|
|
|
|
|
|
|
|
|
|
|
|
; it 'should use defined length if no value given', ->x
|
|
|
|
(check-equal? (size (+BufferT 10)) 10)
|
|
|
|
|
|
|
|
|
|
|
|
; describe 'encode', ->
|
|
|
|
; it 'should encode', (done) ->
|
|
|
|
(let ([buf (+BufferT 2)])
|
|
|
|
(check-equal? (bytes-append
|
|
|
|
(encode buf (bytes #xab #xff) #f)
|
|
|
|
(encode buf (bytes #x1f #xb6) #f)) (bytes #xab #xff #x1f #xb6)))
|
|
|
|
|
|
|
|
|
|
|
|
; it 'should encode length before buffer', (done) ->
|
|
|
|
(check-equal? (encode (+BufferT uint8) (bytes #xab #xff) #f) (bytes 2 #xab #xff))
|