;-*- Mode:     Lisp -*-
;;;; Author:   Paul Dietz
;;;; Created:  Fri Jan 24 07:46:29 2003
;;;; Contains: Tests for VECTOR-POP



(deftest vector-pop.1
  (let ((v (make-array '(5) :initial-contents '(a b c d e)
                       :fill-pointer 3)))
    (values
     (length v)
     (check-values (vector-pop v))
     (fill-pointer v)
     (length v)
     v))
  3 c 2 2 #(a b))

;;; Error cases

(deftest vector-pop.error.1
  (signals-error (let ((v (vector 1 2 3)))
                   (if (array-has-fill-pointer-p v)
                       (error 'type-error :datum v :expected-type nil)
                     (vector-pop v)))
                 type-error)
  t)

(deftest vector-pop.error.2
  (let ((v (make-array '(5) :initial-element 'x
                       :fill-pointer 0)))
    (handler-case (vector-pop v)
                  (error () 'error)))
  error)

(deftest vector-pop.error.3
  (signals-error (vector-pop) program-error)
  t)

(deftest vector-pop.error.4
  (signals-error (let ((v (make-array '(5) :fill-pointer t
                                       :initial-element 'x)))
                    (vector-pop v nil))
                 program-error)
  t)
