Use sequence/c's #:min-count for better error messages in `lines' and others

Closes PR13709
This commit is contained in:
Neil Toronto 2014-04-04 21:43:48 -06:00
parent 191ed1cedd
commit 1938928a44
9 changed files with 28 additions and 9 deletions

View File

@ -35,8 +35,8 @@
[else empty]))
(defproc (lines-interval
[v1s (sequence/c (sequence/c real?))]
[v2s (sequence/c (sequence/c real?))]
[v1s (sequence/c (sequence/c #:min-count 2 real?))]
[v2s (sequence/c (sequence/c #:min-count 2 real?))]
[#:x-min x-min (or/c rational? #f) #f] [#:x-max x-max (or/c rational? #f) #f]
[#:y-min y-min (or/c rational? #f) #f] [#:y-max y-max (or/c rational? #f) #f]
[#:color color plot-color/c (interval-color)]

View File

@ -22,7 +22,7 @@
(cond [label (line-legend-entry label color width style)]
[else empty]))
(defproc (lines [vs (sequence/c (sequence/c real?))]
(defproc (lines [vs (sequence/c (sequence/c #:min-count 2 real?))]
[#:x-min x-min (or/c rational? #f) #f] [#:x-max x-max (or/c rational? #f) #f]
[#:y-min y-min (or/c rational? #f) #f] [#:y-max y-max (or/c rational? #f) #f]
[#:color color plot-color/c (line-color)]

View File

@ -21,7 +21,7 @@
(if label (point-legend-entry label sym color fill-color size line-width) empty))
(defproc (points [vs (sequence/c (sequence/c real?))]
(defproc (points [vs (sequence/c (sequence/c #:min-count 2 real?))]
[#:x-min x-min (or/c rational? #f) #f] [#:x-max x-max (or/c rational? #f) #f]
[#:y-min y-min (or/c rational? #f) #f] [#:y-max y-max (or/c rational? #f) #f]
[#:sym sym point-sym/c (point-sym)]
@ -131,7 +131,7 @@
empty)
(defproc (error-bars
[bars (sequence/c (sequence/c real?))]
[bars (sequence/c (sequence/c #:min-count 3 real?))]
[#:x-min x-min (or/c rational? #f) #f] [#:x-max x-max (or/c rational? #f) #f]
[#:y-min y-min (or/c rational? #f) #f] [#:y-max y-max (or/c rational? #f) #f]
[#:color color plot-color/c (error-bar-color)]

View File

@ -25,7 +25,7 @@
[else empty]))
(defproc (rectangles
[rects (sequence/c (sequence/c ivl?))]
[rects (sequence/c (sequence/c #:min-count 2 ivl?))]
[#:x-min x-min (or/c rational? #f) #f] [#:x-max x-max (or/c rational? #f) #f]
[#:y-min y-min (or/c rational? #f) #f] [#:y-max y-max (or/c rational? #f) #f]
[#:color color plot-color/c (rectangle-color)]

View File

@ -35,7 +35,7 @@
(lines3d-render-proc vs-thnk color width style alpha label)))]))
(defproc (lines3d
[vs (sequence/c (sequence/c real?))]
[vs (sequence/c (sequence/c #:min-count 3 real?))]
[#:x-min x-min (or/c rational? #f) #f] [#:x-max x-max (or/c rational? #f) #f]
[#:y-min y-min (or/c rational? #f) #f] [#:y-max y-max (or/c rational? #f) #f]
[#:z-min z-min (or/c rational? #f) #f] [#:z-max z-max (or/c rational? #f) #f]

View File

@ -20,7 +20,7 @@
[else empty]))
(defproc (points3d
[vs (sequence/c (sequence/c real?))]
[vs (sequence/c (sequence/c #:min-count 3 real?))]
[#:x-min x-min (or/c rational? #f) #f] [#:x-max x-max (or/c rational? #f) #f]
[#:y-min y-min (or/c rational? #f) #f] [#:y-max y-max (or/c rational? #f) #f]
[#:z-min z-min (or/c rational? #f) #f] [#:z-max z-max (or/c rational? #f) #f]

View File

@ -25,7 +25,7 @@
[else empty]))
(defproc (rectangles3d
[rects (sequence/c (sequence/c ivl?))]
[rects (sequence/c (sequence/c #:min-count 3 ivl?))]
[#:x-min x-min (or/c rational? #f) #f] [#:x-max x-max (or/c rational? #f) #f]
[#:y-min y-min (or/c rational? #f) #f] [#:y-max y-max (or/c rational? #f) #f]
[#:z-min z-min (or/c rational? #f) #f] [#:z-max z-max (or/c rational? #f) #f]

View File

@ -0,0 +1,19 @@
#lang racket
(require plot rackunit)
(check-exn #rx"'\\(1\\)" (λ () (lines '((1)))))
(check-exn #rx"\\(list \\(ivl 1 2\\)\\)" (λ () (rectangles (list (list (ivl 1 2))))))
(check-exn #rx"'\\(1\\)" (λ () (points '((1)))))
(check-exn #rx"'\\(1\\)" (λ () (error-bars '((1)))))
(check-exn #rx"'\\(1 2\\)" (λ () (error-bars '((1 2)))))
(check-exn #rx"'\\(1\\)" (λ () (lines-interval '((1)) '((1 2)))))
(check-exn #rx"'\\(1\\)" (λ () (lines-interval '((1 2)) '((1)))))
(check-exn #rx"'\\(1\\)" (λ () (lines3d '((1)))))
(check-exn #rx"'\\(1 2\\)" (λ () (lines3d '((1 2)))))
(check-exn #rx"\\(list \\(ivl 1 2\\)\\)" (λ () (rectangles3d (list (list (ivl 1 2))))))
(check-exn #rx"\\(list \\(ivl 1 2\\) \\(ivl 2 3\\)\\)" (λ () (rectangles3d
(list (list (ivl 1 2) (ivl 2 3))))))
(check-exn #rx"'\\(1\\)" (λ () (points3d '((1)))))
(check-exn #rx"'\\(1 2\\)" (λ () (points3d '((1 2)))))