Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
parenscript
parenscript
Commits
2806eec2
Verified
Commit
2806eec2
authored
Oct 27, 2018
by
Vladimir Sedach
Browse files
Added ARRAYP, LISTP predicates
Thanks to Paul M. Rodriguez for the patch.
parent
b2af98bf
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/macros.lisp
View file @
2806eec2
...
...
@@ -145,6 +145,15 @@
(
defpsmacro
booleanp
(
x
)
`
(
string=
(
typeof
,
x
)
"boolean"
))
(
defpsmacro
listp
(
x
)
(
if
(
js-target-at-least
"1.8.5"
)
`
(
funcall
(
getprop
Array
'is-array
)
,
x
)
`
(
string=
(
funcall
(
getprop
Object
'prototype
'to-string
'call
)
,
x
)
"[object Array]"
)))
(
defpsmacro
arrayp
(
x
)
`
(
listp
,
x
))
;;; Data structures
(
defpsmacro
make-array
(
&rest
args
)
...
...
tests/eval-tests.lisp
View file @
2806eec2
...
...
@@ -1040,6 +1040,16 @@
(
funcall
(
ps:getprop
obj
'foo
)))
4
)
(
test-js-eval
arrayp1
(
arrayp
'
(
1
2
3
))
t
:js-target-version
"1.3"
)
(
test-js-eval
arrayp2
(
arrayp
'
(
1
2
3
))
t
:js-target-version
"1.8.5"
)
;;; Multiple value cases that are currently unimplemented
;; (test-js-eval multiple-value-call-twice
...
...
tests/test.lisp
View file @
2806eec2
...
...
@@ -56,19 +56,25 @@
((
null
x
)
:null
)
(
t
x
)))
(
defmacro
%test-js-eval
(
testname
parenscript
test-statement
)
(
defmacro
%test-js-eval
(
testname
parenscript
test-statement
js-target-version
)
`
(
fiveam:test
,
testname
()
(
cl-js:with-js-env
()
(
let
((
js-result
(
cl-js:run-js
(
ps-doc*
',parenscript
))))
(
let*
((
*js-target-version*
,
js-target-version
)
(
js-result
(
cl-js:run-js
(
ps-doc*
',parenscript
))))
,
test-statement
))))
(
defmacro
test-js-eval
(
testname
parenscript
expected
)
(
defmacro
test-js-eval
(
testname
parenscript
expected
&key
(
js-target-version
*js-target-version*
))
`
(
%test-js-eval
,
testname
,
parenscript
(
fiveam:is
(
equalp
js-result
(
js-repr
,
expected
)))))
(
fiveam:is
(
equalp
js-result
(
js-repr
,
expected
)))
,
js-target-version
))
(
defmacro
test-js-eval-epsilon
(
testname
parenscript
expected
)
(
defmacro
test-js-eval-epsilon
(
testname
parenscript
expected
&key
(
js-target-version
*js-target-version*
))
`
(
%test-js-eval
,
testname
,
parenscript
(
fiveam:is
(
<
(
abs
(
-
js-result
,
expected
))
0.0001
))))
(
fiveam:is
(
<
(
abs
(
-
js-result
,
expected
))
0.0001
))
,
js-target-version
))
(
fiveam:def-suite
parenscript-tests
)
(
fiveam:def-suite
output-tests
:in
parenscript-tests
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment