summaryrefslogtreecommitdiffstats
path: root/tests/012/type.tl
blob: 97007b3c13bc22142396eaf4850e383ea7dbb531 (plain)
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
58
59
60
61
62
63
64
65
66
67
68
(load "../common")

(mtest
  (subtypep 'a 'a) t
  (subtypep t t) t
  (subtypep nil t) t
  (subtypep t nil) nil
  (subtypep nil nil) t
  (subtypep 'null nil) nil
  (subtypep nil 'null) t
  (subtypep 'null t) t
  (subtypep 'null 'a) nil
  (subtypep 'a 'null) nil
  (subtypep nil 'a) t
  (subtypep 'a nil) nil
  (subtypep 'a t) t)

(mtest
  (subtypep 'stream 'stdio-stream) nil
  (subtypep 'stdio-stream 'stream) t)

(defstruct xtime time)
(defstruct nottime nil)

(mtest
  (typep #S(time) 'time) t
  (typep #S(time) (find-struct-type 'time)) t
  (typep #S(xtime) 'time) t
  (typep #S(xtime) (find-struct-type 'time)) t
  (typep #S(nottime) 'time) nil
  (typep #S(nottime) (find-struct-type 'time)) nil)

(mtest
  (subtypep (find-struct-type 'time) (find-struct-type 'time)) t
  (subtypep (find-struct-type 'time) 'time) t
  (subtypep 'time (find-struct-type 'time)) t)

(mtest
  (subtypep (find-struct-type 'xtime) (find-struct-type 'time)) t
  (subtypep (find-struct-type 'xtime) 'time) t
  (subtypep 'xtime (find-struct-type 'time)) t)

(mtest
  (subtypep (find-struct-type 'time) (find-struct-type 'xtime)) nil
  (subtypep (find-struct-type 'time) 'xtime) nil
  (subtypep 'time (find-struct-type 'xtime)) nil)

(mtest
  (subtypep 'time 'struct) t
  (subtypep (find-struct-type 'time) 'struct) t
  (subtypep 'hash 'struct) nil)

(defstruct listlike nil
  (:method car (me)))

(defstruct veclike nil
  (:method length (me)))

(mtest
  (subtypep 'listlike 'sequence) t
  (subtypep (find-struct-type 'listlike) 'sequence) t
  (subtypep 'veclike 'sequence) t
  (subtypep (find-struct-type 'veclike) 'sequence) t
  (subtypep 'time 'sequence) nil
  (subtypep 'hash 'sequence) nil
  (subtypep 'str 'sequence) t
  (subtypep 'string 'sequence) t
  (subtypep 'vec 'sequence) t)