clucumber 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +1 -1
- data/README.md +4 -9
- data/lib/clucumber/clucumber-bootstrap.lisp +32 -0
- data/lib/clucumber/vendor/cl-interpol/alias.lisp +55 -0
- data/lib/clucumber/vendor/cl-interpol/cl-interpol.asd +56 -0
- data/lib/clucumber/vendor/cl-interpol/load.lisp +53 -0
- data/lib/clucumber/vendor/cl-interpol/packages.lisp +40 -0
- data/lib/clucumber/vendor/cl-interpol/read.lisp +716 -0
- data/lib/clucumber/vendor/cl-interpol/specials.lisp +113 -0
- data/lib/clucumber/vendor/cl-interpol/test/packages.lisp +34 -0
- data/lib/clucumber/vendor/cl-interpol/test/tests.lisp +128 -0
- data/lib/clucumber/vendor/cl-interpol/test.lisp +177 -0
- data/lib/clucumber/vendor/cl-interpol/test2.lisp +6254 -0
- data/lib/clucumber/vendor/cl-interpol/unicode.lisp +13912 -0
- data/lib/clucumber/vendor/cl-interpol/util.lisp +122 -0
- data/lib/clucumber/vendor/cl-ppcre/api.lisp +1262 -0
- data/lib/clucumber/vendor/cl-ppcre/charmap.lisp +152 -0
- data/lib/clucumber/vendor/cl-ppcre/charset.lisp +242 -0
- data/lib/clucumber/vendor/cl-ppcre/chartest.lisp +98 -0
- data/lib/clucumber/vendor/cl-ppcre/cl-ppcre-test.asd +34 -0
- data/lib/clucumber/vendor/cl-ppcre/cl-ppcre-unicode/packages.lisp +38 -0
- data/lib/clucumber/vendor/cl-ppcre/cl-ppcre-unicode/resolver.lisp +61 -0
- data/lib/clucumber/vendor/cl-ppcre/cl-ppcre-unicode.asd +58 -0
- data/lib/clucumber/vendor/cl-ppcre/cl-ppcre.asd +79 -0
- data/lib/clucumber/vendor/cl-ppcre/closures.lisp +471 -0
- data/lib/clucumber/vendor/cl-ppcre/convert.lisp +875 -0
- data/lib/clucumber/vendor/cl-ppcre/errors.lisp +84 -0
- data/lib/clucumber/vendor/cl-ppcre/lexer.lisp +737 -0
- data/lib/clucumber/vendor/cl-ppcre/lispworks-defsystem.lisp +57 -0
- data/lib/clucumber/vendor/cl-ppcre/load.lisp +67 -0
- data/lib/clucumber/vendor/cl-ppcre/optimize.lisp +578 -0
- data/lib/clucumber/vendor/cl-ppcre/packages.lisp +68 -0
- data/lib/clucumber/vendor/cl-ppcre/parser.lisp +319 -0
- data/lib/clucumber/vendor/cl-ppcre/ppcre-tests.lisp +269 -0
- data/lib/clucumber/vendor/cl-ppcre/regex-class-util.lisp +555 -0
- data/lib/clucumber/vendor/cl-ppcre/regex-class.lisp +259 -0
- data/lib/clucumber/vendor/cl-ppcre/repetition-closures.lisp +833 -0
- data/lib/clucumber/vendor/cl-ppcre/scanner.lisp +506 -0
- data/lib/clucumber/vendor/cl-ppcre/specials.lisp +172 -0
- data/lib/clucumber/vendor/cl-ppcre/test/packages.lisp +37 -0
- data/lib/clucumber/vendor/cl-ppcre/test/perl-tests.lisp +150 -0
- data/lib/clucumber/vendor/cl-ppcre/test/tests.lisp +159 -0
- data/lib/clucumber/vendor/cl-ppcre/test/unicode-tests.lisp +80 -0
- data/lib/clucumber/vendor/cl-ppcre/util.lisp +201 -0
- data/lib/clucumber/vendor/cl-unicode/alias.lisp +135 -0
- data/lib/clucumber/vendor/cl-unicode/api.lisp +412 -0
- data/lib/clucumber/vendor/cl-unicode/build/char-info.lisp +133 -0
- data/lib/clucumber/vendor/cl-unicode/build/dump.lisp +239 -0
- data/lib/clucumber/vendor/cl-unicode/build/read.lisp +280 -0
- data/lib/clucumber/vendor/cl-unicode/build/util.lisp +182 -0
- data/lib/clucumber/vendor/cl-unicode/cl-unicode.asd +90 -0
- data/lib/clucumber/vendor/cl-unicode/conditions.lisp +54 -0
- data/lib/clucumber/vendor/cl-unicode/derived.lisp +120 -0
- data/lib/clucumber/vendor/cl-unicode/hash-tables.lisp +20 -0
- data/lib/clucumber/vendor/cl-unicode/lists.lisp +10 -0
- data/lib/clucumber/vendor/cl-unicode/methods.lisp +15 -0
- data/lib/clucumber/vendor/cl-unicode/packages.lisp +76 -0
- data/lib/clucumber/vendor/cl-unicode/specials.lisp +135 -0
- data/lib/clucumber/vendor/cl-unicode/test/packages.lisp +34 -0
- data/lib/clucumber/vendor/cl-unicode/test/tests.lisp +150 -0
- data/lib/clucumber/vendor/cl-unicode/test-functions.lisp +94 -0
- data/lib/clucumber/vendor/cl-unicode/util.lisp +274 -0
- data/lib/clucumber/vendor/lift/compare/fiveam-tests.lisp +14 -0
- data/lib/clucumber/vendor/lift/compare/lift-tests.lisp +13 -0
- data/lib/clucumber/vendor/lift/compare/rt-tests.lisp +16 -0
- data/lib/clucumber/vendor/lift/compare/xlunit-tests.lisp +15 -0
- data/lib/clucumber/vendor/lift/dev/changes.lisp +61 -0
- data/lib/clucumber/vendor/lift/dev/config.lisp +354 -0
- data/lib/clucumber/vendor/lift/dev/copy-file.lisp +117 -0
- data/lib/clucumber/vendor/lift/dev/introspection.lisp +232 -0
- data/lib/clucumber/vendor/lift/dev/lift-interface.lisp +56 -0
- data/lib/clucumber/vendor/lift/dev/lift-notes.lisp +202 -0
- data/lib/clucumber/vendor/lift/dev/lift-randomized.lisp +45 -0
- data/lib/clucumber/vendor/lift/dev/lift.lisp +2383 -0
- data/lib/clucumber/vendor/lift/dev/macros.lisp +229 -0
- data/lib/clucumber/vendor/lift/dev/measuring.lisp +156 -0
- data/lib/clucumber/vendor/lift/dev/packages.lisp +161 -0
- data/lib/clucumber/vendor/lift/dev/port.lisp +151 -0
- data/lib/clucumber/vendor/lift/dev/prototypes.lisp +282 -0
- data/lib/clucumber/vendor/lift/dev/random-testing.lisp +124 -0
- data/lib/clucumber/vendor/lift/dev/report-locations.lisp +13 -0
- data/lib/clucumber/vendor/lift/dev/reports.lisp +916 -0
- data/lib/clucumber/vendor/lift/dev/utilities.lisp +242 -0
- data/lib/clucumber/vendor/lift/docs/package.lisp +6 -0
- data/lib/clucumber/vendor/lift/docs/setup.lisp +17 -0
- data/lib/clucumber/vendor/lift/examples/basic-examples.lisp +289 -0
- data/lib/clucumber/vendor/lift/examples/random-testing.lisp +32 -0
- data/lib/clucumber/vendor/lift/lift-documentation.asd +28 -0
- data/lib/clucumber/vendor/lift/lift-test.asd +35 -0
- data/lib/clucumber/vendor/lift/lift.asd +77 -0
- data/lib/clucumber/vendor/lift/test/equality-tests.lisp +40 -0
- data/lib/clucumber/vendor/lift/test/finding-tests.lisp +32 -0
- data/lib/clucumber/vendor/lift/test/lift-test.lisp +783 -0
- data/lib/clucumber/vendor/lift/test/order-of-operations.lisp +54 -0
- data/lib/clucumber/vendor/lift/test/packages.lisp +17 -0
- data/lib/clucumber/vendor/lift/test/test-config-files.lisp +20 -0
- data/lib/clucumber/vendor/lift/test/test-dynamic-variables.lisp +57 -0
- data/lib/clucumber/vendor/lift/test/test-maximum-problems.lisp +74 -0
- data/lib/clucumber/vendor/lift/test/test-prototypes.lisp +278 -0
- data/lib/clucumber/vendor/lift/test/test-timeout.lisp +37 -0
- data/lib/clucumber/vendor/lift/test/tests-in-progress.lisp +62 -0
- data/lib/clucumber/vendor/lift/test/testsuite-expects.lisp +60 -0
- data/lib/clucumber/vendor/lift/timeout/package.lisp +13 -0
- data/lib/clucumber/vendor/lift/timeout/with-timeout.lisp +123 -0
- data/lib/clucumber/vendor/lift/website/stuff/Temp.lisp +34 -0
- data/lib/clucumber/vendor/st-json/st-json.asd +3 -0
- data/lib/clucumber/vendor/st-json/st-json.lisp +310 -0
- data/lib/clucumber/vendor/trivial-backtrace/dev/backtrace.lisp +127 -0
- data/lib/clucumber/vendor/trivial-backtrace/dev/fallback.lisp +10 -0
- data/lib/clucumber/vendor/trivial-backtrace/dev/map-backtrace.lisp +103 -0
- data/lib/clucumber/vendor/trivial-backtrace/dev/mucking.lisp +75 -0
- data/lib/clucumber/vendor/trivial-backtrace/dev/packages.lisp +13 -0
- data/lib/clucumber/vendor/trivial-backtrace/dev/utilities.lisp +104 -0
- data/lib/clucumber/vendor/trivial-backtrace/test/packages.lisp +5 -0
- data/lib/clucumber/vendor/trivial-backtrace/test/test-setup.lisp +4 -0
- data/lib/clucumber/vendor/trivial-backtrace/test/tests.lisp +16 -0
- data/lib/clucumber/vendor/trivial-backtrace/trivial-backtrace-test.asd +22 -0
- data/lib/clucumber/vendor/trivial-backtrace/trivial-backtrace.asd +35 -0
- data/lib/clucumber/vendor/usocket/backend/allegro.lisp +199 -0
- data/lib/clucumber/vendor/usocket/backend/armedbear.lisp +491 -0
- data/lib/clucumber/vendor/usocket/backend/clisp.lisp +260 -0
- data/lib/clucumber/vendor/usocket/backend/cmucl.lisp +266 -0
- data/lib/clucumber/vendor/usocket/backend/lispworks.lisp +741 -0
- data/lib/clucumber/vendor/usocket/backend/mcl.lisp +369 -0
- data/lib/clucumber/vendor/usocket/backend/openmcl.lisp +206 -0
- data/lib/clucumber/vendor/usocket/backend/sbcl.lisp +424 -0
- data/lib/clucumber/vendor/usocket/backend/scl.lisp +261 -0
- data/lib/clucumber/vendor/usocket/condition.lisp +227 -0
- data/lib/clucumber/vendor/usocket/package.lisp +82 -0
- data/lib/clucumber/vendor/usocket/server.lisp +45 -0
- data/lib/clucumber/vendor/usocket/test/package.lisp +13 -0
- data/lib/clucumber/vendor/usocket/test/test-usocket.lisp +166 -0
- data/lib/clucumber/vendor/usocket/usocket-test.asd +26 -0
- data/lib/clucumber/vendor/usocket/usocket.asd +37 -0
- data/lib/clucumber/vendor/usocket/usocket.lisp +542 -0
- data/lib/clucumber/vendor/usocket/vendor/kqueue.lisp +1 -0
- data/lib/clucumber/vendor/usocket/vendor/split-sequence.lisp +245 -0
- data/lib/clucumber.rb +29 -7
- metadata +151 -5
@@ -0,0 +1,76 @@
|
|
1
|
+
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Base: 10 -*-
|
2
|
+
;;; $Header: /usr/local/cvsrep/cl-unicode/packages.lisp,v 1.24 2008/07/24 14:46:20 edi Exp $
|
3
|
+
|
4
|
+
;;; Copyright (c) 2008, Dr. Edmund Weitz. All rights reserved.
|
5
|
+
|
6
|
+
;;; Redistribution and use in source and binary forms, with or without
|
7
|
+
;;; modification, are permitted provided that the following conditions
|
8
|
+
;;; are met:
|
9
|
+
|
10
|
+
;;; * Redistributions of source code must retain the above copyright
|
11
|
+
;;; notice, this list of conditions and the following disclaimer.
|
12
|
+
|
13
|
+
;;; * Redistributions in binary form must reproduce the above
|
14
|
+
;;; copyright notice, this list of conditions and the following
|
15
|
+
;;; disclaimer in the documentation and/or other materials
|
16
|
+
;;; provided with the distribution.
|
17
|
+
|
18
|
+
;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED
|
19
|
+
;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
20
|
+
;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
21
|
+
;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
22
|
+
;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
23
|
+
;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
24
|
+
;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
25
|
+
;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
26
|
+
;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
27
|
+
;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
28
|
+
;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29
|
+
|
30
|
+
(in-package :cl-user)
|
31
|
+
|
32
|
+
(defpackage :cl-unicode
|
33
|
+
(:use :cl)
|
34
|
+
(:import-from :cl-ppcre
|
35
|
+
:*standard-optimize-settings*
|
36
|
+
:with-rebinding)
|
37
|
+
(:export :+code-point-limit+
|
38
|
+
:*scripts-to-try*
|
39
|
+
:*try-abbreviations-p*
|
40
|
+
:*try-hex-notation-p*
|
41
|
+
:*try-lisp-names-p*
|
42
|
+
:*try-unicode1-names-p*
|
43
|
+
:age
|
44
|
+
:bidi-class
|
45
|
+
:bidi-classes
|
46
|
+
:bidi-mirroring-glyph
|
47
|
+
:binary-properties
|
48
|
+
:canonicalize-name
|
49
|
+
:character-named
|
50
|
+
:code-block
|
51
|
+
:code-blocks
|
52
|
+
:combining-class
|
53
|
+
:disable-alternative-character-syntax
|
54
|
+
:enable-alternative-character-syntax
|
55
|
+
:general-categories
|
56
|
+
:general-category
|
57
|
+
:has-binary-property
|
58
|
+
:has-property
|
59
|
+
:list-all-characters
|
60
|
+
:lowercase-mapping
|
61
|
+
:numeric-type
|
62
|
+
:numeric-value
|
63
|
+
:property-name
|
64
|
+
:property-symbol
|
65
|
+
:property-test
|
66
|
+
:recognized-properties
|
67
|
+
:script
|
68
|
+
:scripts
|
69
|
+
:titlecase-mapping
|
70
|
+
:unicode-error
|
71
|
+
:unicode-name
|
72
|
+
:unicode1-name
|
73
|
+
:uppercase-mapping))
|
74
|
+
|
75
|
+
(defpackage :cl-unicode-names
|
76
|
+
(:use))
|
@@ -0,0 +1,135 @@
|
|
1
|
+
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-UNICODE; Base: 10 -*-
|
2
|
+
;;; $Header: /usr/local/cvsrep/cl-unicode/specials.lisp,v 1.16 2008/07/24 14:50:37 edi Exp $
|
3
|
+
|
4
|
+
;;; Copyright (c) 2008, Dr. Edmund Weitz. All rights reserved.
|
5
|
+
|
6
|
+
;;; Redistribution and use in source and binary forms, with or without
|
7
|
+
;;; modification, are permitted provided that the following conditions
|
8
|
+
;;; are met:
|
9
|
+
|
10
|
+
;;; * Redistributions of source code must retain the above copyright
|
11
|
+
;;; notice, this list of conditions and the following disclaimer.
|
12
|
+
|
13
|
+
;;; * Redistributions in binary form must reproduce the above
|
14
|
+
;;; copyright notice, this list of conditions and the following
|
15
|
+
;;; disclaimer in the documentation and/or other materials
|
16
|
+
;;; provided with the distribution.
|
17
|
+
|
18
|
+
;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED
|
19
|
+
;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
20
|
+
;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
21
|
+
;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
22
|
+
;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
23
|
+
;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
24
|
+
;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
25
|
+
;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
26
|
+
;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
27
|
+
;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
28
|
+
;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29
|
+
|
30
|
+
(in-package :cl-unicode)
|
31
|
+
|
32
|
+
(defconstant +code-point-limit+ #x110000
|
33
|
+
"The smallest integer which is not a code point in the Unicode codespace.")
|
34
|
+
|
35
|
+
(defvar *canonical-names* (make-hash-table :test 'eq :size 500)
|
36
|
+
"A hash tables which maps property symbols \(see PROPERTY-SYMBOL) to
|
37
|
+
their \"canonical names\", i.e. to strings.")
|
38
|
+
|
39
|
+
(defvar *names-to-code-points* (make-hash-table :test 'equalp :size 20000)
|
40
|
+
"A hash table which \(case-insensitively) maps \"canonicalized\"
|
41
|
+
character names to their code points.")
|
42
|
+
|
43
|
+
(defvar *unicode1-names-to-code-points* (make-hash-table :test 'equalp :size 2000)
|
44
|
+
"A hash table which \(case-insensitively) maps \"canonicalized\"
|
45
|
+
Unicode 1.0 character names to their code points.")
|
46
|
+
|
47
|
+
(defvar *code-points-to-names* (make-hash-table :size 20000)
|
48
|
+
"A hash table which maps code points to the corresponding character
|
49
|
+
names.")
|
50
|
+
|
51
|
+
(defvar *code-points-to-unicode1-names* (make-hash-table :size 2000)
|
52
|
+
"A hash table which maps code points to the corresponding Unicode
|
53
|
+
1.0 character names.")
|
54
|
+
|
55
|
+
(defvar *case-mappings* (make-hash-table :size 2100)
|
56
|
+
"A hash table which maps code points to three-element lists
|
57
|
+
containing the lowercase, uppercase, and titlecasse mapping of the
|
58
|
+
corresponding character \(unless all of them are NIL).")
|
59
|
+
|
60
|
+
(defvar *general-categories* nil
|
61
|
+
"A list of all property symbols which denote general categories.")
|
62
|
+
|
63
|
+
(defvar *scripts* nil
|
64
|
+
"A list of all property symbols which denote scripts.")
|
65
|
+
|
66
|
+
(defvar *code-blocks* nil
|
67
|
+
"A list of all property symbols which denote blocks.")
|
68
|
+
|
69
|
+
(defvar *binary-properties* nil
|
70
|
+
"A list of all property symbols which denote binary properties.")
|
71
|
+
|
72
|
+
(defvar *bidi-classes* nil
|
73
|
+
"A list of all property symbols which denote Bidi classes.")
|
74
|
+
|
75
|
+
(defvar *property-map* (make-hash-table :test 'equalp :size 1000)
|
76
|
+
"A hash table which \(case-insensitively) maps \"canonicalized\"
|
77
|
+
property names \(including aliases) to the corresponding property
|
78
|
+
symbols.")
|
79
|
+
|
80
|
+
(defvar *property-tests* (make-hash-table :test 'eq :size 360)
|
81
|
+
"A hash table which maps property symbols to a test function which
|
82
|
+
tests for the corresponding property.")
|
83
|
+
|
84
|
+
(defvar *jamo-short-names* (make-hash-table :size 70)
|
85
|
+
"A hash table which maps code points to their Jamo short names.
|
86
|
+
Needed to compute Hangul syllable names - see COMPUTE-HANGUL-NAME.")
|
87
|
+
|
88
|
+
(defvar *hangul-syllables-to-code-points* (make-hash-table :test 'equalp :size 12000)
|
89
|
+
"A hash table which \(case-insensitively) maps Hangul syllable name
|
90
|
+
parts to their code points.")
|
91
|
+
|
92
|
+
(defvar *try-unicode1-names-p* t
|
93
|
+
"This is the default value for the :TRY-UNICODE1-NAMES-P keyword
|
94
|
+
argument to CHARACTER-NAMED.")
|
95
|
+
|
96
|
+
(defvar *try-abbreviations-p* nil
|
97
|
+
"This is the default value for the :TRY-ABBREVIATIONS-P keyword
|
98
|
+
argument to CHARACTER-NAMED.")
|
99
|
+
|
100
|
+
(defvar *scripts-to-try* nil
|
101
|
+
"This is the default value for the :SCRIPTS-TO-TRY keyword argument
|
102
|
+
to CHARACTER-NAMED.")
|
103
|
+
|
104
|
+
(defvar *try-hex-notation-p* nil
|
105
|
+
"This is the default value for the :TRY-HEX-NOTATION-P keyword
|
106
|
+
argument to CHARACTER-NAMED.")
|
107
|
+
|
108
|
+
(defvar *try-lisp-names-p* nil
|
109
|
+
"This is the default value for the :TRY-LISP-NAMES-P keyword
|
110
|
+
argument to CHARACTER-NAMED.")
|
111
|
+
|
112
|
+
(defvar *previous-readtables* nil
|
113
|
+
"A stack which holds the previous readtables that have been pushed
|
114
|
+
here by ENABLE-ALTERNATIVE-CHARACTER-SYNTAX.")
|
115
|
+
|
116
|
+
(pushnew :cl-unicode *features*)
|
117
|
+
|
118
|
+
;; stuff for Nikodemus Siivola's HYPERDOC
|
119
|
+
;; see <http://common-lisp.net/project/hyperdoc/>
|
120
|
+
;; and <http://www.cliki.net/hyperdoc>
|
121
|
+
;; also used by LW-ADD-ONS
|
122
|
+
|
123
|
+
(defvar *hyperdoc-base-uri* "http://weitz.de/cl-unicode/")
|
124
|
+
|
125
|
+
(let ((exported-symbols-alist
|
126
|
+
(loop for symbol being the external-symbols of :cl-unicode
|
127
|
+
collect (cons symbol
|
128
|
+
(concatenate 'string
|
129
|
+
"#"
|
130
|
+
(string-downcase symbol))))))
|
131
|
+
(defun hyperdoc-lookup (symbol type)
|
132
|
+
(declare (ignore type))
|
133
|
+
(cdr (assoc symbol
|
134
|
+
exported-symbols-alist
|
135
|
+
:test #'eq))))
|
@@ -0,0 +1,34 @@
|
|
1
|
+
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-USER; Base: 10 -*-
|
2
|
+
;;; $Header: /usr/local/cvsrep/cl-unicode/test/packages.lisp,v 1.2 2008/07/20 12:21:22 edi Exp $
|
3
|
+
|
4
|
+
;;; Copyright (c) 2002-2008, Dr. Edmund Weitz. All rights reserved.
|
5
|
+
|
6
|
+
;;; Redistribution and use in source and binary forms, with or without
|
7
|
+
;;; modification, are permitted provided that the following conditions
|
8
|
+
;;; are met:
|
9
|
+
|
10
|
+
;;; * Redistributions of source code must retain the above copyright
|
11
|
+
;;; notice, this list of conditions and the following disclaimer.
|
12
|
+
|
13
|
+
;;; * Redistributions in binary form must reproduce the above
|
14
|
+
;;; copyright notice, this list of conditions and the following
|
15
|
+
;;; disclaimer in the documentation and/or other materials
|
16
|
+
;;; provided with the distribution.
|
17
|
+
|
18
|
+
;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED
|
19
|
+
;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
20
|
+
;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
21
|
+
;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
22
|
+
;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
23
|
+
;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
24
|
+
;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
25
|
+
;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
26
|
+
;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
27
|
+
;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
28
|
+
;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29
|
+
|
30
|
+
(in-package :cl-user)
|
31
|
+
|
32
|
+
(defpackage :cl-unicode-test
|
33
|
+
(:use :cl :cl-unicode)
|
34
|
+
(:export :run-all-tests))
|
@@ -0,0 +1,150 @@
|
|
1
|
+
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-UNICODE-TEST; Base: 10 -*-
|
2
|
+
;;; $Header: /usr/local/cvsrep/cl-unicode/test/tests.lisp,v 1.17 2008/07/23 11:25:07 edi Exp $
|
3
|
+
|
4
|
+
;;; Copyright (c) 2008, Dr. Edmund Weitz. All rights reserved.
|
5
|
+
|
6
|
+
;;; Redistribution and use in source and binary forms, with or without
|
7
|
+
;;; modification, are permitted provided that the following conditions
|
8
|
+
;;; are met:
|
9
|
+
|
10
|
+
;;; * Redistributions of source code must retain the above copyright
|
11
|
+
;;; notice, this list of conditions and the following disclaimer.
|
12
|
+
|
13
|
+
;;; * Redistributions in binary form must reproduce the above
|
14
|
+
;;; copyright notice, this list of conditions and the following
|
15
|
+
;;; disclaimer in the documentation and/or other materials
|
16
|
+
;;; provided with the distribution.
|
17
|
+
|
18
|
+
;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED
|
19
|
+
;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
20
|
+
;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
21
|
+
;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
22
|
+
;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
23
|
+
;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
24
|
+
;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
25
|
+
;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
26
|
+
;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
27
|
+
;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
28
|
+
;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29
|
+
|
30
|
+
(in-package :cl-unicode-test)
|
31
|
+
|
32
|
+
(defvar *this-file* (load-time-value
|
33
|
+
(or #.*compile-file-pathname* *load-pathname*))
|
34
|
+
"The location of this source file. Needed to find the data files.")
|
35
|
+
|
36
|
+
(defmacro do-tests ((name &optional show-progress-p) &body body)
|
37
|
+
"Helper macro which repeatedly executes BODY until the code in body
|
38
|
+
calls the function DONE. It is assumed that each invocation of BODY
|
39
|
+
will be the execution of one test which returns NIL in case of success
|
40
|
+
and a list of strings describing errors otherwise.
|
41
|
+
|
42
|
+
The macro prints a simple progress indicator \(one dots for ten tests)
|
43
|
+
to *STANDARD-OUTPUT* unless SHOW-PROGRESS-P is NIL and returns a true
|
44
|
+
value iff all tests succeeded. Errors in BODY are caught and reported
|
45
|
+
\(and counted as failures)."
|
46
|
+
`(let ((successp t)
|
47
|
+
(testcount 1))
|
48
|
+
(block test-block
|
49
|
+
(flet ((done ()
|
50
|
+
(return-from test-block successp)))
|
51
|
+
(format t "~&Test: ~A~%" ,name)
|
52
|
+
(loop
|
53
|
+
(when (and ,show-progress-p (zerop (mod testcount 10)))
|
54
|
+
(format t ".")
|
55
|
+
(when (zerop (mod testcount 100))
|
56
|
+
(terpri))
|
57
|
+
(force-output))
|
58
|
+
(let ((errors
|
59
|
+
(handler-case
|
60
|
+
(progn ,@body)
|
61
|
+
(error (msg)
|
62
|
+
(list (format nil "~&got an unexpected error: ~A" msg))))))
|
63
|
+
(setq successp (and successp (null errors)))
|
64
|
+
(when errors
|
65
|
+
(format t "~&~4@A:~{~& ~A~}~%" testcount errors))
|
66
|
+
(incf testcount)))))
|
67
|
+
successp))
|
68
|
+
|
69
|
+
(defun simple-tests (&key (file-name
|
70
|
+
(make-pathname :name "simple"
|
71
|
+
:type nil :version nil
|
72
|
+
:defaults *this-file*))
|
73
|
+
verbose)
|
74
|
+
"Loops through all the forms in the file FILE-NAME and executes each
|
75
|
+
of them using EVAL. Reads all forms with the alternative character
|
76
|
+
syntax enabled. It is assumed that each FORM specifies a test which
|
77
|
+
returns a true value iff it succeeds. Prints each test form to
|
78
|
+
*STANDARD-OUTPUT* if VERBOSE is true and shows a simple progress
|
79
|
+
indicator otherwise. Returns a true value iff all tests succeeded."
|
80
|
+
(enable-alternative-character-syntax)
|
81
|
+
(unwind-protect
|
82
|
+
(with-open-file (stream file-name)
|
83
|
+
(let ((*package* (find-package :cl-unicode-test))
|
84
|
+
(*try-unicode1-names-p* t)
|
85
|
+
(*try-abbreviations-p* t)
|
86
|
+
(*scripts-to-try* '("Hebrew"))
|
87
|
+
(*try-hex-notation-p* t)
|
88
|
+
(*try-lisp-names-p* t))
|
89
|
+
(do-tests ((format nil "Simple tests from file ~S" (file-namestring file-name))
|
90
|
+
(not verbose))
|
91
|
+
(let ((form (or (read stream nil) (done))))
|
92
|
+
(when verbose
|
93
|
+
(format t "~&~S" form))
|
94
|
+
(cond ((eval form) nil)
|
95
|
+
(t (list (format nil "~S returned NIL" form))))))))
|
96
|
+
(disable-alternative-character-syntax)))
|
97
|
+
|
98
|
+
(defun property-tests (&key (file-name
|
99
|
+
(make-pathname :name "properties"
|
100
|
+
:type nil :version nil
|
101
|
+
:defaults *this-file*))
|
102
|
+
verbose)
|
103
|
+
"Loops through all the forms in the file FILE-NAME and executes each
|
104
|
+
of them as a test for a property. The forms must be lists \(C S B)
|
105
|
+
where C is a code point \(an integer), S is a string denoting the
|
106
|
+
property, and B is boolean denoting whether the character has the
|
107
|
+
property or not. Tests are performed using HAS-PROPERTY. Prints each
|
108
|
+
test to *STANDARD-OUTPUT* if VERBOSE is true and shows a simple
|
109
|
+
progress indicator otherwise. Returns a true value iff all tests
|
110
|
+
succeeded."
|
111
|
+
(with-open-file (stream file-name)
|
112
|
+
(do-tests ((format nil "Properties from file ~S" (file-namestring file-name))
|
113
|
+
(not verbose))
|
114
|
+
(let ((input-line (or (read stream nil) (done))))
|
115
|
+
(destructuring-bind (char-code property-name expected-result)
|
116
|
+
input-line
|
117
|
+
(when verbose
|
118
|
+
(format t "~&~A: #x~X" property-name char-code))
|
119
|
+
(let* ((char (and (< char-code char-code-limit) (code-char char-code)))
|
120
|
+
(result-1 (has-property char-code property-name))
|
121
|
+
(result-2 (and char (has-property char property-name)))
|
122
|
+
errors)
|
123
|
+
(unless (eq expected-result (not (not result-1)))
|
124
|
+
(push (format nil "code point #x~X should ~:[not ~;~]have property \"~A\""
|
125
|
+
char-code expected-result property-name)
|
126
|
+
errors))
|
127
|
+
(when char
|
128
|
+
(unless (eq expected-result (not (not result-2)))
|
129
|
+
(push (format nil "\(code-char #x~X) should ~:[not ~;~]have property \"~A\""
|
130
|
+
char-code expected-result property-name)
|
131
|
+
errors)))
|
132
|
+
errors))))))
|
133
|
+
|
134
|
+
(defun run-all-tests (&key verbose)
|
135
|
+
"Runs all tests for CL-UNICODE and returns a true value iff all
|
136
|
+
tests succeeded. VERBOSE is interpreted by the individual test suites
|
137
|
+
above."
|
138
|
+
(let ((successp t))
|
139
|
+
(macrolet ((run-test-suite (&body body)
|
140
|
+
`(unless (progn ,@body)
|
141
|
+
(setq successp nil))))
|
142
|
+
;; run the automatically generated tests for derived properties
|
143
|
+
(run-test-suite (property-tests :verbose verbose
|
144
|
+
:file-name (make-pathname :name "derived-properties"
|
145
|
+
:type nil :version nil
|
146
|
+
:defaults *this-file*)))
|
147
|
+
(run-test-suite (property-tests :verbose verbose))
|
148
|
+
(run-test-suite (simple-tests :verbose verbose)))
|
149
|
+
(format t "~2&~:[Some tests failed~;All tests passed~]." successp)
|
150
|
+
successp))
|
@@ -0,0 +1,94 @@
|
|
1
|
+
;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-UNICODE; Base: 10 -*-
|
2
|
+
;;; $Header: /usr/local/cvsrep/cl-unicode/test-functions.lisp,v 1.6 2008/07/21 20:04:13 edi Exp $
|
3
|
+
|
4
|
+
;;; Copyright (c) 2008, Dr. Edmund Weitz. All rights reserved.
|
5
|
+
|
6
|
+
;;; Redistribution and use in source and binary forms, with or without
|
7
|
+
;;; modification, are permitted provided that the following conditions
|
8
|
+
;;; are met:
|
9
|
+
|
10
|
+
;;; * Redistributions of source code must retain the above copyright
|
11
|
+
;;; notice, this list of conditions and the following disclaimer.
|
12
|
+
|
13
|
+
;;; * Redistributions in binary form must reproduce the above
|
14
|
+
;;; copyright notice, this list of conditions and the following
|
15
|
+
;;; disclaimer in the documentation and/or other materials
|
16
|
+
;;; provided with the distribution.
|
17
|
+
|
18
|
+
;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED
|
19
|
+
;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
20
|
+
;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
21
|
+
;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
22
|
+
;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
23
|
+
;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
24
|
+
;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
25
|
+
;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
26
|
+
;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
27
|
+
;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
28
|
+
;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29
|
+
|
30
|
+
(in-package :cl-unicode)
|
31
|
+
|
32
|
+
(defun install-one-test (property-symbol test-function)
|
33
|
+
(setf (gethash property-symbol *property-tests*)
|
34
|
+
test-function
|
35
|
+
(gethash (canonicalize-name (property-name property-symbol)) *property-map*)
|
36
|
+
property-symbol))
|
37
|
+
|
38
|
+
(defun install-script-tests ()
|
39
|
+
(dolist (script *scripts*)
|
40
|
+
(install-one-test script
|
41
|
+
(let ((script script))
|
42
|
+
(lambda (c)
|
43
|
+
(eq (nth-value 1 (script c)) script))))))
|
44
|
+
|
45
|
+
(defun install-code-block-tests ()
|
46
|
+
(dolist (code-block *code-blocks*)
|
47
|
+
(install-one-test (register-property-symbol
|
48
|
+
(format nil "Block:~A" (property-name code-block)))
|
49
|
+
(let ((code-block code-block))
|
50
|
+
(lambda (c)
|
51
|
+
(eq (nth-value 1 (code-block c)) code-block))))))
|
52
|
+
|
53
|
+
(defun install-general-category-tests ()
|
54
|
+
(dolist (general-category *general-categories*)
|
55
|
+
(install-one-test general-category
|
56
|
+
(let ((general-category general-category))
|
57
|
+
(lambda (c)
|
58
|
+
(eq (nth-value 1 (general-category c)) general-category))))))
|
59
|
+
|
60
|
+
(defun install-binary-properties-tests ()
|
61
|
+
(dolist (binary-property *binary-properties*)
|
62
|
+
(install-one-test binary-property
|
63
|
+
(let ((binary-property binary-property))
|
64
|
+
(lambda (c)
|
65
|
+
(has-binary-property c binary-property))))))
|
66
|
+
|
67
|
+
(defun install-bidi-class-tests ()
|
68
|
+
(dolist (bidi-class *bidi-classes*)
|
69
|
+
(install-one-test (register-property-symbol
|
70
|
+
(format nil "BidiClass:~A" (property-name bidi-class)))
|
71
|
+
(let ((bidi-class bidi-class))
|
72
|
+
(lambda (c)
|
73
|
+
(eq (nth-value 1 (bidi-class c)) bidi-class))))))
|
74
|
+
|
75
|
+
(defun install-miscellaneous-tests ()
|
76
|
+
(install-one-test (register-property-symbol "ASCII")
|
77
|
+
(lambda (c)
|
78
|
+
(<= 0 (ensure-code-point c) 127)))
|
79
|
+
(install-one-test (register-property-symbol "Assigned")
|
80
|
+
(lambda (c)
|
81
|
+
(not (eq (nth-value 1 (general-category c))
|
82
|
+
'#.(property-symbol "Cn")))))
|
83
|
+
(install-one-test (register-property-symbol "GraphemeLink")
|
84
|
+
(lambda (c)
|
85
|
+
;; Canonical_Combining_Class=Virama
|
86
|
+
(eql (combining-class c) 9))))
|
87
|
+
|
88
|
+
(defun install-tests ()
|
89
|
+
(install-script-tests)
|
90
|
+
(install-code-block-tests)
|
91
|
+
(install-general-category-tests)
|
92
|
+
(install-binary-properties-tests)
|
93
|
+
(install-bidi-class-tests)
|
94
|
+
(install-miscellaneous-tests))
|