#lang racket/base
(require (planet neil/testeez:1:2)
"bencode.rkt")
(define (%bencode:unbencode-string str)
(let* ((port (open-input-string str))
(result (unbencode port)))
(close-input-port port)
result))
(testeez
"bencode"
(test/equal "" (%bencode:unbencode-string "4:spam") '(#"spam"))
(test/equal "" (%bencode:unbencode-string "i3e") '(3))
(test/equal "" (%bencode:unbencode-string "i-3e") '(-3))
(test/equal "" (%bencode:unbencode-string "i0e") '(0))
(test/equal "" (%bencode:unbencode-string "i123e") '(123))
(test/equal "" (%bencode:unbencode-string "i-123e") '(-123))
(test/equal ""
(%bencode:unbencode-string "l4:spam4:eggse")
'((#"spam" #"eggs")))
(test/equal ""
(%bencode:unbencode-string "d3:cow3:moo4:spam4:eggse")
'((dictionary (#"cow" . #"moo") (#"spam" . #"eggs"))))
(test/equal ""
(%bencode:unbencode-string "d4:spaml1:a1:bee")
'((dictionary (#"spam" . (#"a" #"b")))))
(test/equal ""
(%bencode:unbencode-string
(string-append "4:spami3ei-3ei0ei123ei-123el4:spam4:eggsed3:co"
"w3:moo4:spam4:eggsed4:spaml1:a1:bee"))
'(#"spam" 3 -3 0 123 -123 (#"spam" #"eggs")
(dictionary (#"cow". #"moo") (#"spam" . #"eggs"))
(dictionary (#"spam". (#"a" #"b"))))))