[vector] failing tests for vector-ref
This commit is contained in:
parent
cfd95cc93c
commit
1167e6a12b
33
test/vector-fail.rkt
Normal file
33
test/vector-fail.rkt
Normal 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)))
|
||||
)
|
|
@ -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))
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue
Block a user