[vector] failing tests for vector-ref

This commit is contained in:
ben 2016-03-02 12:46:33 -05:00
parent cfd95cc93c
commit 1167e6a12b
3 changed files with 57 additions and 1 deletions

33
test/vector-fail.rkt Normal file
View File

@ -0,0 +1,33 @@
#lang racket/base
(define (expr->typed-module expr)
#`(module t typed/racket/base
(require trivial/vector)
#,expr))
(define TEST-CASE* (map expr->typed-module '(
(vector-ref: (vector 1) 3)
(let-vector: ([v (vector 1 2 3)])
(vector-ref: v 3))
(let ()
(define-vector: v (vector 3 4))
(vector-ref: v 9))
)))
;; -----------------------------------------------------------------------------
(module+ test
(require
rackunit)
(define (vector-eval stx)
(lambda () ;; For `check-exn`
(compile-syntax stx)))
(for ([rkt (in-list TEST-CASE*)])
(check-exn #rx"vector::|Type Checker"
(vector-eval rkt)))
)

View File

@ -81,6 +81,29 @@
Zero)
0))
;; -- vector-ref
(test-case "vector/length ref"
(check-equal? (vector-ref: (vector 1) 0) 1))
(test-case "vector/length ref, via let"
(let-vector: ([v (vector 2)])
(check-equal? (vector-ref: v 0) 2)))
(test-case "vector/length ref, via define"
(define-vector: v (vector "a" "bee" "sea"))
(check-equal? (vector-ref: v 2) "sea"))
(test-case "plain vector ref"
(check-equal?
((lambda (v) (vector-ref: v 3)) (vector 8 2 19 3 0))
3))
(test-case "higher-order vector ref"
(check-exn exn:fail:contract?
(lambda ()
((lambda ([f : (-> (Vectorof Any) Natural Any)])
(f (vector 0 1 2) 10)) vector-ref:))))
;; -- define-vector:
(let ()
(define-vector: v (vector 1 1 2 2))

View File

@ -67,7 +67,7 @@
[(_ e* ...)
#'(let e* ...)]))
(define-for-syntax (vector-ref-error v i reason)
(define-for-syntax (vector-ref-error v i)
(raise-argument-error
errloc-key
(format "Index out-of-bounds: ~a" i)