add memory use and random roundtrip tests for net/uri-codec

This commit is contained in:
Ryan Culpepper 2015-05-12 18:32:41 -04:00
parent 4418442d33
commit dfac49e597
2 changed files with 30 additions and 1 deletions

View File

@ -13,5 +13,6 @@
"net-lib"
"racket-test"
"rackunit-lib"
"sandbox-lib"
"web-server-lib"))
(define update-implies '("net-lib"))

View File

@ -1,5 +1,5 @@
#lang racket
(require net/uri-codec tests/eli-tester)
(require net/uri-codec tests/eli-tester racket/sandbox)
(provide tests)
(module+ main (tests))
@ -97,6 +97,9 @@
(uri-path-segment-unreserved-decode "M~(@%3B%20") => "M~(@; "
(uri-encode "æçè") => "%C3%A6%C3%A7%C3%A8"
(uri-encode "Kidô senkan Nadeshiko") => "Kid%C3%B4%20senkan%20Nadeshiko"
do (memory-tests)
do (random-tests)
))
;; tests adapted from Noel Welsh's original test suite
@ -158,4 +161,29 @@
))
(define (memory-tests)
;; Test that encode/decode don't take excessive memory
(define STRING-SIZE #e1e6)
(define MB-LIMIT 10)
(define big-string
(build-string
STRING-SIZE
(lambda (i) (integer->char (+ (char->integer #\a) (random 26))))))
(define (roundtrip s)
(define encoded (form-urlencoded-encode s))
(form-urlencoded-decode encoded))
(test (call-with-limits 10 MB-LIMIT
(lambda () (roundtrip big-string)))
=> big-string))
(define (random-tests)
(define (random-string length)
(build-string length (lambda (i) (integer->char (add1 (random 255))))))
(define (roundtrip s)
(define encoded (form-urlencoded-encode s))
(form-urlencoded-decode encoded))
(for ([i 1000])
(define s (random-string #e1e3))
(test (roundtrip s) => s)))
(module+ test (require (submod ".." main))) ; for raco test & drdr