This repository has been archived by the owner on May 14, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 10
/
tests.lisp
57 lines (47 loc) · 1.81 KB
/
tests.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
;;; -*- Mode:Lisp; Syntax:ANSI-Common-Lisp; Coding:utf-8 -*-
(defpackage #:cl-slice-tests
(:use #:cl #:cl-slice #:clunit))
(in-package #:cl-slice-tests)
(defsuite slice-suite ())
;; (run-suite 'representation-suite)
(defsuite representation-suite (slice-suite))
(deffixture representation-suite (@body)
(let ((vec10 #(0 1 2 3 4 5 6 7 8 9)))
@body))
(deftest test-representation (representation-suite)
;; singletons
(assert-equalp 1 (slice vec10 1))
(assert-equalp 9 (slice vec10 -1))
(assert-condition error (slice vec10 10))
(assert-condition error (slice vec10 nil))
(assert-condition error (slice vec10 11))
(assert-condition error (slice vec10 -11))
;; ranges
(assert-equalp #(3 4) (slice vec10 (cons 3 5)))
(assert-equalp #(7 8 9) (slice vec10 (cons 7 nil)))
(assert-equalp #(7 8) (slice vec10 (cons 7 -1)))
(assert-condition error (slice vec10 (cons 5 4))) ; not increasing
;; vectors
(assert-equalp #(2 3 5) (slice vec10 #(2 3 5)))
(assert-equalp #(2 3 3 7) (slice vec10 #(2 3 3 -3)))
;; masks
(assert-equalp #(3 4 7) (slice vec10 #*0001100100))
(assert-condition error (slice vec10 #*00)) ; too short
)
(defsuite array-suite (slice-suite))
(deffixture array-suite (@body)
(let ((arr35 #2A((0 1 2 3 4)
(5 6 7 8 9)
(10 11 12 13 14))))
@body))
(deftest array-slices (array-suite)
(assert-equalp #(0 5 10) (slice arr35 t 0))
(assert-equalp #2A((0) (5) (10)) (slice arr35 t (cons 0 1)))
(assert-equalp #2A((1 4)
(6 9)
(11 14))
(slice arr35 #(0 1 2) #(1 -1)))
(assert-equalp #(5 6 7 8 9) (slice arr35 1 t))
(assert-equalp #2A((5 6 7 8 9)) (slice arr35 (cons 1 2) t))
(assert-equalp #(6 7 8) (slice arr35 1 (cons 1 -1)))
(assert-equalp #2A((6 7 8)) (slice arr35 (cons 1 2) (cons 1 -1))))