Open
Description
General process
Anyone is welcome to join in and write tests. The process goes like this:
- Pick a function from the list
- Leave a comment on this ticket to claim that function
- Create a new
.cljc
test file for that function - Work through the testing questions, implementing tests for each
- Add any additional tests for all the edge cases you can think of
- Keep your tests dialect-independent (i.e. wrap any Java interop in a reader conditional and provide CLJS equivalents)
- Make a PR to add your new tests!
Testing questions
Common cases
- What happens when the input is
nil
? (apply to all inputs) - What happens if it's given all valid inputs? (this will require some manual work to identify edge cases)
- Are there any special cases for inputs?
- What happens when the transducer arity is called?
Edge cases
- What happens when the input is an incorrect shape (i.e. a number instead of a sequence)? (apply to all inputs)
- If the input accepts a sequence, what happens when it's an infinite sequence?
- If the input accepts a map, what happens with both array maps and hash maps?
- If the input accepts a set, what happens with both sorted sets and hash sets?
- If the function accepts unboxed inputs/outputs, what happens with different combinations?
Things we don't need to test
- Invalid arity (too many/too few args, the runtime does this for us, not the fn itself)
Test progress
-
*
-
*'
-
*1
-
*2
-
*3
-
*agent*
-
*allow-unresolved-vars*
-
*assert*
-
*clojure-version*
-
*command-line-args*
-
*compile-files*
-
*compile-path*
-
*compiler-options*
-
*data-readers*
-
*default-data-reader-fn*
-
*e
-
*err*
-
*file*
-
*flush-on-newline*
-
*fn-loader*
-
*in*
-
*math-context*
-
*ns*
-
*out*
-
*print-dup*
-
*print-length*
-
*print-level*
-
*print-meta*
-
*print-namespace-maps*
-
*print-readably*
-
*read-eval*
-
*reader-resolver*
-
*source-path*
-
*suppress-read*
-
*unchecked-math*
-
*use-context-classloader*
-
*verbose-defrecords*
-
*warn-on-reflection*
-
+
-
+'
-
-
-
-'
-
->
-
->>
-
->ArrayChunk
-
->Eduction
-
->Vec
-
->VecNode
-
->VecSeq
-
-cache-protocol-fn
-
-reset-methods
-
.
-
..
-
/
-
<
-
<=
-
=
-
==
-
>
-
>=
-
abs
-
accessor
-
aclone
-
add-classpath
-
add-tap
-
add-watch
-
agent
-
agent-error
-
agent-errors
-
aget
-
alength
-
alias
-
all-ns
-
alter
-
alter-meta!
-
alter-var-root
-
amap
-
ancestors
-
and
-
any?
-
apply
-
areduce
-
array-map
-
as->
-
aset
-
aset-boolean
-
aset-byte
-
aset-char
-
aset-double
-
aset-float
-
aset-int
-
aset-long
-
aset-short
-
assert
-
assoc
-
assoc!
-
assoc-in
-
associative?
-
atom
-
await
-
await-for
-
await1
-
bases
-
bean
-
bigdec
-
bigint
-
biginteger
-
binding
-
bit-and
-
bit-and-not
-
bit-clear
-
bit-flip
-
bit-not
-
bit-or
-
bit-set
-
bit-shift-left
-
bit-shift-right
-
bit-test
-
bit-xor
-
boolean
-
boolean-array
-
boolean?
-
booleans
-
bound-fn
-
bound-fn*
-
bound?
-
bounded-count
-
butlast
-
byte
-
byte-array
-
bytes
-
bytes?
-
case
-
cast
-
cat
-
catch
-
char
-
char-array
-
char-escape-string
-
char-name-string
-
char?
-
chars
-
chunk
-
chunk-append
-
chunk-buffer
-
chunk-cons
-
chunk-first
-
chunk-next
-
chunk-rest
-
chunked-seq?
-
class
-
class?
-
clear-agent-errors
-
clojure-version
-
coll?
-
comment
-
commute
-
comp
-
comparator
-
compare
-
compare-and-set!
-
compile
-
complement
-
completing
-
concat
-
cond
-
cond->
-
cond->>
-
condp
-
conj
-
conj!
-
cons
-
constantly
-
construct-proxy
-
contains?
-
count
-
counted?
-
create-ns
-
create-struct
-
cycle
-
dec
-
dec'
-
decimal?
-
declare
-
dedupe
-
def
-
default-data-readers
-
definline
-
definterface
-
defmacro
-
defmethod
-
defmulti
-
defn
-
defn-
-
defonce
-
defprotocol
-
defrecord
-
defstruct
-
deftype
-
delay
-
delay?
-
deliver
-
denominator
-
deref
-
derive
-
descendants
-
destructure
-
disj
-
disj!
-
dissoc
-
dissoc!
-
distinct
-
distinct?
-
do
-
doall
-
dorun
-
doseq
-
dosync
-
dotimes
-
doto
-
double
-
double-array
-
double?
-
doubles
-
drop
-
drop-last
-
drop-while
-
eduction
-
empty
-
EMPTY-NODE
-
empty?
-
ensure
-
ensure-reduced
-
enumeration-seq
-
error-handler
-
error-mode
-
eval
-
even?
-
every-pred
-
every?
-
ex-cause
-
ex-data
-
ex-info
-
ex-message
-
extend
-
extend-protocol
-
extend-type
-
extenders
-
extends?
-
false?
-
ffirst
-
file-seq
-
filter
-
filterv
-
finally
-
find
-
find-keyword
-
find-ns
-
find-protocol-impl
-
find-protocol-method
-
find-var
-
first
-
flatten
-
float
-
float-array
-
float?
-
floats
-
flush
-
fn
-
fn?
-
fnext
-
fnil
-
for
-
force
-
format
-
frequencies
-
future
-
future-call
-
future-cancel
-
future-cancelled?
-
future-done?
-
future?
-
gen-class
-
gen-interface
-
gensym
-
get
-
get-in
-
get-method
-
get-proxy-class
-
get-thread-bindings
-
get-validator
-
group-by
-
halt-when
-
hash
-
hash-combine
-
hash-map
-
hash-ordered-coll
-
hash-set
-
hash-unordered-coll
-
ident?
-
identical?
-
identity
-
if
-
if-let
-
if-not
-
if-some
-
ifn?
-
import
-
in-ns
-
inc
-
inc'
-
indexed?
-
infinite?
-
init-proxy
-
Inst
-
inst-ms
-
inst-ms*
-
inst?
-
instance?
-
int
-
int-array
-
int?
-
integer?
-
interleave
-
intern
-
interpose
-
into
-
into-array
-
ints
-
io!
-
isa?
-
iterate
-
iteration
-
iterator-seq
-
juxt
-
keep
-
keep-indexed
-
key
-
keys
-
keyword
-
keyword?
-
last
-
lazy-cat
-
lazy-seq
-
let
-
letfn
-
line-seq
-
list
-
list*
-
list?
-
load
-
load-file
-
load-reader
-
load-string
-
loaded-libs
-
locking
-
long
-
long-array
-
longs
-
loop
-
macroexpand
-
macroexpand-1
-
make-array
-
make-hierarchy
-
map
-
map-entry?
-
map-indexed
-
map?
-
mapcat
-
mapv
-
max
-
max-key
-
memfn
-
memoize
-
merge
-
merge-with
-
meta
-
method-sig
-
methods
-
min
-
min-key
-
mix-collection-hash
-
mod
-
monitor-enter
-
monitor-exit
-
munge
-
name
-
namespace
-
namespace-munge
-
NaN?
-
nat-int?
-
neg-int?
-
neg?
-
new
-
newline
-
next
-
nfirst
-
nil?
-
nnext
-
not
-
not-any?
-
not-empty
-
not-every?
-
not=
-
ns
-
ns-aliases
-
ns-imports
-
ns-interns
-
ns-map
-
ns-name
-
ns-publics
-
ns-refers
-
ns-resolve
-
ns-unalias
-
ns-unmap
-
nth
-
nthnext
-
nthrest
-
num
-
number?
-
numerator
-
object-array
-
odd?
-
or
-
parents
-
parse-boolean
-
parse-double
-
parse-long
-
parse-uuid
-
partial
-
partition
-
partition-all
-
partition-by
-
pcalls
-
peek
-
persistent!
-
pmap
-
pop
-
pop!
-
pop-thread-bindings
-
pos-int?
-
pos?
-
pr
-
pr-str
-
prefer-method
-
prefers
-
primitives-classnames
-
print
-
print-ctor
-
print-dup
-
print-method
-
print-simple
-
print-str
-
printf
-
println
-
println-str
-
PrintWriter-on
-
prn
-
prn-str
-
promise
-
proxy
-
proxy-call-with-super
-
proxy-mappings
-
proxy-name
-
proxy-super
-
push-thread-bindings
-
pvalues
-
qualified-ident?
-
qualified-keyword?
-
qualified-symbol?
-
quot
-
quote
-
rand
-
rand-int
-
rand-nth
-
random-sample
-
random-uuid
-
range
-
ratio?
-
rational?
-
rationalize
-
re-find
-
re-groups
-
re-matcher
-
re-matches
-
re-pattern
-
re-seq
-
read
-
read+string
-
read-line
-
read-string
-
reader-conditional
-
reader-conditional?
-
realized?
-
record?
-
recur
-
reduce
-
reduce-kv
-
reduced
-
reduced?
-
reductions
-
ref
-
ref-history-count
-
ref-max-history
-
ref-min-history
-
ref-set
-
refer
-
refer-clojure
-
reify
-
release-pending-sends
-
rem
-
remove
-
remove-all-methods
-
remove-method
-
remove-ns
-
remove-tap
-
remove-watch
-
repeat
-
repeatedly
-
replace
-
replicate
-
require
-
requiring-resolve
-
reset!
-
reset-meta!
-
reset-vals!
-
resolve
-
rest
-
restart-agent
-
resultset-seq
-
reverse
-
reversible?
-
rseq
-
rsubseq
-
run!
-
satisfies?
-
second
-
select-keys
-
send
-
send-off
-
send-via
-
seq
-
seq-to-map-for-destructuring
-
seq?
-
seqable?
-
seque
-
sequence
-
sequential?
-
set
-
set!
-
set-agent-send-executor!
-
set-agent-send-off-executor!
-
set-error-handler!
-
set-error-mode!
-
set-validator!
-
set?
-
short
-
short-array
-
shorts
-
shuffle
-
shutdown-agents
-
simple-ident?
-
simple-keyword?
-
simple-symbol?
-
slurp
-
some
-
some->
-
some->>
-
some-fn
-
some?
-
sort
-
sort-by
-
sorted-map
-
sorted-map-by
-
sorted-set
-
sorted-set-by
-
sorted?
-
special-symbol?
-
spit
-
split-at
-
split-with
-
StackTraceElement->vec
-
str
-
string?
-
struct
-
struct-map
-
subs
-
subseq
-
subvec
-
supers
-
swap!
-
swap-vals!
-
symbol
-
symbol?
-
sync
-
tagged-literal
-
tagged-literal?
-
take
-
take-last
-
take-nth
-
take-while
-
tap>
-
test
-
the-ns
-
thread-bound?
-
throw
-
Throwable->map
-
time
-
to-array
-
to-array-2d
-
trampoline
-
transduce
-
transient
-
tree-seq
-
true?
-
try
-
type
-
unchecked-add
-
unchecked-add-int
-
unchecked-byte
-
unchecked-char
-
unchecked-dec
-
unchecked-dec-int
-
unchecked-divide-int
-
unchecked-double
-
unchecked-float
-
unchecked-inc
-
unchecked-inc-int
-
unchecked-int
-
unchecked-long
-
unchecked-multiply
-
unchecked-multiply-int
-
unchecked-negate
-
unchecked-negate-int
-
unchecked-remainder-int
-
unchecked-short
-
unchecked-subtract
-
unchecked-subtract-int
-
underive
-
unquote
-
unquote-splicing
-
unreduced
-
unsigned-bit-shift-right
-
update
-
update-in
-
update-keys
-
update-proxy
-
update-vals
-
uri?
-
use
-
uuid?
-
val
-
vals
-
var
-
var-get
-
var-set
-
var?
-
vary-meta
-
vec
-
vector
-
vector-of
-
vector?
-
volatile!
-
volatile?
-
vreset!
-
vswap!
-
when
-
when-first
-
when-let
-
when-not
-
when-some
-
while
-
with-bindings
-
with-bindings*
-
with-in-str
-
with-loading-context
-
with-local-vars
-
with-meta
-
with-open
-
with-out-str
-
with-precision
-
with-redefs
-
with-redefs-fn
-
xml-seq
-
zero?
-
zipmap
Metadata
Metadata
Assignees
Labels
No labels
Activity