Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > fff2921ff40d1f832561027dc17323f5 > files > 49

epic5-1.1.9-3.mga5.i586.rpm

#
# EPIC3 ESL regression tests -- built in functions test
# Public Domain. Distribute freely.
#
# NOTE: If you find a test that is missing, please let me know so
# i can add it.  Doubly so if you find a test that exposes a bug!
#

@ misses = 0

alias clear {
	if (misses) {@ [$"[RETURN]"];@ misses = 0}
	//clear
}

alias assert {
	eval @ foo = $*
	if (foo == 1) { echo Test [$[60]*] passed }
		      { echo Test [$[60]*] FAILED! ;@misses++ }
}

# testing $after()
clear
assert after(!)==[]
assert after(! one)==[]
assert after(! one!)==[]
assert after(! one!two)==[two]
assert after(! one!two!three)==[two!three]
assert after(1)==[]
assert after(1 !)==[]
assert after(1 ! one)==[]
assert after(1 ! one!)==[]
assert after(1 ! one!two)==[two]
assert after(1 ! one!two!three)==[two!three]
assert after(-1)==[]
assert after(-1 !)==[]
assert after(-1 ! one)==[]
assert after(-1 ! one!)==[]
assert after(-1 ! one!two!three)==[three]
assert after(-1 ! one!two)==[two]
assert after(2 ! one)==[]
assert after(2 ! one!)==[]
assert after(2 ! one!two)==[]
assert after(2 ! one!two!three)==[three]
assert after(-2 ! one)==[]
assert after(-2 ! one!)==[]
assert after(-2 ! one!two)==[]
assert after(-2 ! one!two!three)==[two!three]

# testing $afterw()
clear
assert afterw() == []
assert afterw(one) == []
assert afterw(one two) == []
assert afterw(one two three one four five) == [four five]
assert afterw(two two three four five two) == [three four five two]
assert afterw(one one) == []
assert afterw(one three four five) == []

# testing $ascii() -- see test for $jot()

# testing $before()
clear
assert before(!)==[]
assert before(! one)==[]
assert before(! one!)==[one]
assert before(! one!two)==[one]
assert before(! one!two!three)==[one]
assert before(1)==[]
assert before(1 !)==[]
assert before(1 ! one)==[]
assert before(1 ! one!)==[one]
assert before(1 ! one!two)==[one]
assert before(1 ! one!two!three)==[one]
assert before(-1)==[]
assert before(-1 !)==[]
assert before(-1 ! one)==[]
assert before(-1 ! one!)==[one]
assert before(-1 ! one!two)==[one]
assert before(-1 ! one!two!three)==[one!two]
assert before(2 ! one)==[]
assert before(2 ! one!)==[]
assert before(2 ! one!two)==[]
assert before(2 ! one!two!three)==[one!two]
assert before(-2 ! one)==[]
assert before(-2 ! one!)==[]
assert before(-2 ! one!two)==[]
assert before(-2 ! one!two!three)==[one]

# testing $beforew()
clear
assert beforew() == []
assert beforew(one) == []
assert beforew(one two) == []
assert beforew(one two three one four five) == [two three]
assert beforew(two two three four five two) == []
assert beforew(one one) == []
assert beforew(one three four five) == []

# testing $center()
clear
assert center() == []
assert center(10) == [     ]
assert center(10 foo) == [   foo]
assert center(10 boog) == [   boog]

# testing $chanusers() -- cant be tested right now.

# testing $chngw()
clear
assert chngw() == []
assert chngw(1) == []
assert chngw(1 one) == [one]
assert chngw(0 one) == [one]
assert chngw(0 one two) == [one]
assert chngw(1 one two) == [two one]
assert chngw(1 one two three) == [two one]
assert chngw(2 one two three) == [two three one]
assert chngw(0 one five four three two one) == [one four three two one]

# testing $chops() -- cant be tested right now.
# testing $chr() -- see test for $jot()

# testing $common()
clear
assert common() == []
assert common(/) == []
assert common(one/one) == [one]
assert common(one/two) == []
assert common(one two / one two) == [one two]
assert common(one three / one four) == [one]
assert common(one three / three four one) == [one three]
assert common(one two / phone foobar) == []
assert common(one two one / one three) == [one]
assert common(/one two three) == []
assert common(one two three/) == []

# testing $connect() -- cant be tested right now
# testing $convert() -- cant be tested right now

# testing $copattern()
clear
@ one = []
@ two = []
assert copattern(* one two) == []
@ one = [foo]
@ two = [bar]
assert copattern(* one two) == [bar]
assert copattern(b* one two) == []
assert copattern(*o one two) == [bar]
@ one = [one two three four]
@ two = [five six seven eight]
assert copattern(* one two) == [five six seven eight]
assert copattern(*e one two) == [five seven]
assert copattern(t* one two) == [six seven]
@ one = [one two three four]
@ two = [boo]
assert copattern(t* one two) == []
assert copattern(o* one two) == [boo]
assert copattern(*o* one two) == [boo]

# testing $curpos -- cant be tested right now

# testing $decode() and $encode()
clear
assert encode() == []
assert decode() == []
assert decode($encode()) == []
assert decode($encode(foo)) == [foo]

# testing $diff()
clear
assert diff() == []
assert diff(/) == []
assert diff(one/one) == []
assert diff(one/two) == [one two]
assert diff(one two / one two) == []
assert diff(one three / one four) == [three four]
assert diff(one three / three four one) == [four]
assert diff(/one two three) == [one two three]
assert diff(one two three/) == [one two three]

# testing $eof() -- cant be tested right now

# testing $filter()
clear
assert filter() == []
assert filter(*) == []
assert filter(* one two) == []
assert filter(o* one two) == [two]
assert filter(t* one two) == [one]
assert filter(r* one two) == [one two]
assert filter(t* one two three) == [one]
assert filter(*e one two three) == [two]

# testing $fromw()
clear
assert fromw() == []
assert fromw(one) == []
assert fromw(one two) == []
assert fromw(one two three one four five) == [one four five]
assert fromw(two two three four five two) == [two three four five two]
assert fromw(one one) == [one]
assert fromw(one three four five) == []

# testing $index()
clear
assert index() == []
assert index(/ one) == -1
assert index(/ /one) == 0
assert index(/ o/ne) == 1
assert index(/ on/e) == 2
assert index(/ one/) == 3
assert index(/ /one/) == 0
assert index(^/ ///one/) == 3
assert index(the one) == 2
assert index(the het) == 0
assert index(^the the) == -1
assert index(^the one) == 0
assert index(^the eon) == 1

clear
assert indextoword(0 one . ..  two ) == 0
assert indextoword(1 one . ..  two ) == 0
assert indextoword(2 one . ..  two ) == 0
assert indextoword(3 one . ..  two ) == 0
assert indextoword(4 one . ..  two ) == 1
assert indextoword(5 one . ..  two ) == 1
assert indextoword(6 one . ..  two ) == 2
assert indextoword(7 one . ..  two ) == 2
assert indextoword(8 one . ..  two ) == 2
assert indextoword(9 one . ..  two ) == 3
assert indextoword(10 one . ..  two ) == 3
assert indextoword(11 one . ..  two ) == 3
assert indextoword(12 one . ..  two ) == 3
assert indextoword(13 one . ..  two ) == 3
assert indextoword(14 one . ..  two ) == 3 
assert indextoword(15 one . ..  two ) == []

# testing $insertw()
clear
assert insertw() == []
assert insertw(-1) == []
assert insertw(1) == []
assert insertw(1 one) == [one]
assert insertw(0 one) == [one]
assert insertw(0 one two) == [one two]
assert insertw(1 one two) == [two one]
assert insertw(1 one two three) == [two one three]
assert insertw(2 one two three) == [two three one]
assert insertw(4 one two three) == [two three one]
assert insertw(-1 one two three) == [one two three]

# testing $iptoname() -- cant be tested right now

# testing $isalpha()
clear
assert isalpha() == 0
assert isalpha(1) == 0
assert isalpha(x) == 1
assert isalpha(X) == 1
assert isalpha(^) == 0

# testing $ischannel()
clear
assert ischannel() == 0
assert ischannel(#) == 1
assert ischannel(&) == 1
assert ischannel(L) == 0
assert ischannel(#foo) == 1
assert ischannel(&foo) == 1

# testing $ischanop() -- cant be tested right now

# testing $isdigit()
clear
assert isdigit() == 0
assert isdigit(1) == 1
assert isdigit(x) == 0
assert isdigit(X) == 0
assert isdigit(^) == 0

# testing $jot()
clear
assert jot() == []
assert jot(1 3) == [1 2 3]
assert jot(3 1) == [3 2 1]
assert jot(-10 10) == [-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10]
assert jot(-10 10 2) == [-10 -8 -6 -4 -2 0 2 4 6 8 10]
assert chr($jot($ascii(a) $ascii(z))) == [abcdefghijklmnopqrstuvwxyz]
assert chr($jot($ascii(a) $ascii(z) 2)) == [acegikmoqsuwy]
assert chr($jot($ascii(a) $ascii(z))) == reverse($chr($jot($ascii(z) $ascii(a))))
assert jot(10 -10 2) == [10 8 6 4 2 0 -2 -4 -6 -8 -10]
assert jot(10 -10 2) == jot(10 -10 -2)

/*
# testing $key()
clear
assert key() == []
assert key(*) == []
assert key(#some_channel_that_doesnt_exist) == []
//join #some_channel_that_doesnt_exist
//wait
//mode #some_channel_that_doesnt_exist +k this_is_a_stupid_key
//wait
assert key() == [this_is_a_stupid_key]
assert key(*) == [this_is_a_stupid_key]
assert key(#some_channel_that_doesnt_exist) == [this_is_a_stupid_key]
//join #some_stupid_channel_2
//wait
//mode #some_stupid_channel_2 +k stupid_key_2
//wait
assert key(*) == [stupid_key_2]
//channel #some_channel_that_doesnt_exist
assert key(*) == [this_is_a_stupid_key]
assert key(#some_stupid_channel_2) == [stupid_key_2]
//join 0
wait
*/

# testing $left()
clear
assert left(one)==[]
assert left(1 one)==[o]
assert left(2 one)==[on]
assert left(3 one)==[one]
assert left(4 one)==[one]

# testing $leftw()
clear
assert leftw() == []
assert leftw(0) == []
assert leftw(0 one) == []
assert leftw(-1) == []
assert leftw(-1 one) == []
assert leftw(1) == []
assert leftw(1 one) == [one]
assert leftw(1 one two) == [one]
assert leftw(2) == []
assert leftw(2 one) == [one]
assert leftw(2 one two) == [one two]
assert leftw(2 one two three) == [one two]

# testing $listen() -- cant be tested right now

# testing $match()
clear
assert match() == []
assert match(one two three) == 0
assert match(two two three) == 1
assert match(three two three) == 2
assert match(*) == 0
assert match(* one) == 1
assert match(%) == 0
assert match(% one) == 1
assert match(?) == 0
assert match(? one) == 0
assert match(? o one) == 1
assert match(? one o) == 2
assert match(?? one on) == 2
assert match(m* marble mantle) == 1
assert match(m*n* marble mantle) == 2
assert match(f*o* marble mantle) == 0
assert match(one* one two) == 1
assert match(*one one two) == 1
assert match(*one* one two) == 1
assert match(** one two) == 1
assert match(*%* one two) == 1

# testing $mid()
clear
assert mid(-1) == []
assert mid(-1 3) == []
assert mid(-1 3 one) == []
assert mid(0 1 one) == [o]
assert mid(1 1 one) == [n]
assert mid(2 1 one) == [e]
assert mid(3 1 one) == []
assert mid(0 2 one) == [on]
assert mid(1 2 one) == [ne]
assert mid(2 2 one) == [e]
assert mid(3 2 one) == []
assert mid(0 3 one) == [one]
assert mid(1 3 one) == [ne]
assert mid(2 3 one) == [e]
assert mid(3 3 one)==[]
assert mid(4 3 one)==[]

# testing $midw()
clear
assert midw() == []
assert midw(0) == []
assert midw(-1) == []
assert midw(1) == []
assert midw(0 0) == []
assert midw(0 1) == []
assert midw(1 1) == []
assert midw(1 -1) == []
assert midw(-1 1) == []
assert midw(0 1 one) == [one]
assert midw(0 1 one two) == [one]
assert midw(1 1 one two) == [two]
assert midw(1 2 one two) == [two]
assert midw(1 -1 one two) == []
assert midw(1 0 one two) == []

# testing $mychannels() -- cant be tested right now
# testing $myservers() -- cant be tested right now
# testing $nametoip() -- cant be tested right now
# testing $nochops() -- cant be tested right now

# testing $notw()
clear
assert notw() == []
assert notw(1) == []
assert notw(-1) == []
assert notw(1 one) == [one]
assert notw(-1 one) == [one]
assert notw(-1 one two) == [one two]
assert notw(1 one two) == [one]
assert notw(0 one two) == [two]
assert notw(3 one two) == [one two]

# testing $numonchannel() -- cant be tested right now.
# testing $onchannel() -- cant be tested right now.

# testing $pattern()
clear
assert pattern() == []
assert pattern(*) == []
assert pattern(* one two) == [one two]
assert pattern(o* one two) == [one]
assert pattern(t* one two) == [two]
assert pattern(r* one two) == []
assert pattern(t* one two three) == [two three]
assert pattern(*e one two three) == [one three]

# testing $pid()
clear
assert pid() != []
assert pid(foo) != []

# testing $push() and $shift()
clear
@ one = []
assert push() == []
assert push(one) == []
assert push(one one) == [one]
assert push(one two) == [one two]
assert push(one three) == [one two three]
assert push(one four) == [one two three four]
clear
assert shift() == []
#assert shift( $one ) == [one]
assert shift( one ) == [one]
assert shift( one ) == [two]
assert shift( one ) == [three]
assert shift( one ) == [four]
assert shift( one ) == []
assert one == []

# testing $pop(), $unshift()
clear
assert unshift() == []
assert unshift(one) == []
assert unshift(one one) == [one]
assert unshift(one two) == [two one]
assert unshift(one three) == [three two one]
assert unshift(one four) == [four three two one]
assert one == [four three two one]
clear
assert pop( ) == []
#assert pop( $one ) == [one]
assert pop( one ) == [one]
assert pop( one ) == [two]
assert pop( one ) == [three]
assert pop( one ) == [four]
assert pop( one ) == []

# testing $ppid()
clear
assert ppid() != []
assert ppid(foo) != []

# testing $prefix()
assert prefix(12345 12340 1234) === [1234]
assert prefix(asdfg asdfx asdf) === [asdf]
assert prefix(ASDFG asdfx asdf) === [ASDF]

# testing $rand() -- cant be tested right now

# testing $remw()
clear
assert remw() == []
assert remw(one) == []
assert remw(one one) == []
assert remw(one two) == [two]
assert remw(one two one three) == [two three]
assert remw(one two three one) == [two three]
assert remw(\\foo foo \\foo \\foo \\foo) == [foo \\foo \\foo]
# remw() tests that failed previously
assert remw(1 11 1) == [11]

# testing $rename() -- cant be tested right now.

# testing $restw()
clear
assert restw() == []
assert restw(1) == []
assert restw(-1) == []
assert restw(1 one) == []
assert restw(-1 one) == []
assert restw(1 one two) == [two]
assert restw(0 one two) == [one two]
assert restw(3 one two) == []

# testing $reverse()
clear
assert reverse() == []
assert reverse(madamimadam) == [madamimadam]
assert reverse(foobar) == [raboof]
assert reverse(one tiny tubesock) == [kcosebut ynit eno]

# testing $revw()
clear
assert revw() == []
assert revw(1) == [1]
assert revw(1 2 3) == [3 2 1]
assert revw("1 2" 3) == [3 "1 2"]

# testing $rfilter()
clear
assert rfilter() == []
assert rfilter(foo) == []
assert rfilter(*) == []
assert rfilter(one o* * *e *t*) == [*t*]
assert rfilter(two o* * *e *t*) == [o* *e]
assert rfilter(foo o* *e *t*) == [o* *e *t*]

# testing $right()
clear
assert right(one) == []
assert right(1 one) == [e]
assert right(2 one) == [ne]
assert right(3 one) == [one]
assert right(4 one) == [one]

# testing $rightw()
clear
assert rightw() == []
assert rightw(0) == []
assert rightw(0 one) == []
assert rightw(-1) == []
assert rightw(-1 one) == []
assert rightw(1) == []
assert rightw(1 one) == [one]
assert rightw(1 one two) == [two]
assert rightw(2) == []
assert rightw(2 one) == [one]
assert rightw(2 one two) == [one two]
assert rightw(2 one two three) == [two three]

# testing $rindex()
clear
assert rindex() == []
assert rindex(/ one) == -1
assert rindex(/ /one) == 0
assert rindex(/ o/ne) == 1
assert rindex(/ on/e) == 2
assert rindex(/ one/) == 3
assert rindex(/ /one/) == 4
assert rindex(^/ ///one/) == 5
assert rindex(the one) == 2
assert rindex(the het) == 2
assert rindex(^the the) == -1
assert rindex(^the one) == 1
assert rindex(^the eon) == 2

# testing $rmatch()
clear
assert rmatch() == []
assert rmatch(one two three) == 0
assert rmatch(two two three) == 1
assert rmatch(three two three) == 2
assert rmatch(one) == 0
assert rmatch(*) == 0
assert rmatch(one *) == 1
assert rmatch(%) == 0
assert rmatch(one %) == 1
assert rmatch(?) == 0
assert rmatch(o ?) == 1
assert rmatch(one ?) == 0
assert rmatch(one ???) == 1
assert rmatch(marble m* n*) == 1
assert rmatch(marble *e *r*b*) == 2
assert rmatch(marble * **) == 1

# testing $rmdir() -- cant be tested right now.

# testing $rpattern()
clear
assert rpattern() == []
assert rpattern(foo) == []
assert rpattern(*) == []
assert rpattern(one o* * *e *t*) == [o* * *e]
assert rpattern(two o* * *e *t*) == [* *t*]
assert rpattern(foo o* *e *t*) == []

# testing $sar()
clear
assert sar() == []
assert sar(/) == []
assert sar(//) == []
assert sar(/one/two/foo one bar) == [foo two bar]
assert sar(/one/two/foo one bar one) == [foo two bar one]
assert sar(g/one/two/foo one bar one) == [foo two bar two]
@ boo = [foo one bar]
assert sar(r/one/two/boo) == [foo two bar]
assert boo == [foo two bar]
@ boo = [foo one bar one]
assert sar(r/one/two/boo) == [foo two bar one]
assert boo == [foo two bar one]
@ boo = [foo one bar one]
assert sar(rg/one/two/boo) == [foo two bar two]
assert boo == [foo two bar two]

# testing $splice() 
clear
@ boo = [foo one bar one]
assert splice(boo 1 2 booya booya) == [one bar]
assert splice(boo 0 3 blah1) == [foo booya booya]
assert splice(boo 3 0 blah2) == []
assert splice(boo 4 1 blah3) == []
assert splice(boo -1 3 blah4) == [blah1 one]
assert splice(boo 0 0 blah5) == []
assert boo == [blah5 blah4 blah2 blah3]

# testing $split()
clear
assert split() == []
assert split(#) == []
assert split(# one) == [one]
assert split(# one##two) == [one  two]
assert split(# one##two##) == [one  two  ]

# testing $srand() -- cant be tested right now

# testing $time() and $stime()
clear
assert time() != []
assert time(FOO) != []
assert stime() == []
assert stime($time()) != []

# testing $strip()
clear
assert strip() == []
assert strip(~) == []
assert strip(~ ~) == []
assert strip(~ ~~) == []
assert strip(~ ~ ~) == [ ]
assert strip(~ ~one t~o th~ree) == [one to three]
assert strip(~ one two three) == [one two three]
assert strip(~ ~on~ ~tw= thre~==) == [on tw= thre==]

# testing $tdiff()
clear
assert tdiff() == []
assert tdiff(3663) == [1 hour 1 minute 3 seconds]
assert tdiff(60) == [1 minute]
assert tdiff(0) == [0 seconds]

# testing $tolower()
clear
assert tolower() == []
assert tolower(one two three) === [one two three]
assert tolower(ONE TWO THREE) === [one two three]
assert tolower(oNe TwO tHrEe) === [one two three]
assert tolower(one @#\$ t\$r!e) === [one @#\$ t\$r!e]

# testing $toupper()
clear
assert toupper() === []
assert toupper(one two three) === [ONE TWO THREE]
assert toupper(ONE TWO THREE) === [ONE TWO THREE]
assert toupper(oNe TwO tHrEe) === [ONE TWO THREE]
assert toupper(one @#\$ t\$r!e) === [ONE @#\$ T\$R!E]

# testing $tow()
clear
assert tow() == []
assert tow(one) == []
assert tow(one two) == []
assert tow(one two three one four five) == [two three one]
assert tow(two two three four five two) == [two]
assert tow(one one) == [one]
assert tow(one three four five) == []

# testing $tr()
clear
assert tr() == []
assert tr(/abc/def/Mary had a little lamb) == [Mdry hdd d little ldme]
assert tr(/abc//Mary had a little lamb) == [Mry hd  little lm]
assert tr(/abc/d/Mary had a little lamb) == [Mdry hdd d little ldmd]

# testing $trunc()
#XXX NEEDS TEST

# testing $unlink() -- cant be tested right now
# testing $userhost() -- cant be tested right now
# testing $version() -- cant be tested right now
# testing $which() -- cant be tested right now
# testing $winnam() -- cant be tested right now
# testing $winnum() -- cant be tested right now

# testing $word()
clear
assert word() == []
assert word(1) == []
assert word(0 one) == [one]
assert word(1 one) == []
assert word(1  one two) == [two]
assert word(2  one two three four five) == [three]

# testing $open(), $read() $write() $close()
assert (::rfd = open(/dev/zero r)) >= 3
assert (::wfd = open(/dev/zero w)) >= 4
assert writeb($wfd $read($rfd 100000)) == 100000
assert write($wfd $read($rfd 100000)) == 200001
assert close($rfd) == 0
assert close($rfd) == -1
assert close($wfd) == 0
assert close($wfd) == -1

# testing xform
assert xform("+sed +url -url -sed" "pass" "pass" this is a test) == [this is a test]
assert xform("+sed +enc -enc -sed" "pass" "pass" this is a test) == [this is a test]
assert xform("+sed +b64 -b64 -sed" "pass" "pass" this is a test) == [this is a test]
assert xform("+sed +ctcp -ctcp -sed" "pass" "pass" this is a test) == [this is a test]
assert xform("+bf +url -url -bf" "pass" "pass" this is a test) == [this is a test]
assert xform("+bf +enc -enc -bf" "pass" "pass" this is a test) == [this is a test]
assert xform("+bf +b64 -b64 -bf" "pass" "pass" this is a test) == [this is a test]
assert xform("+bf +ctcp -ctcp -bf" "pass" "pass" this is a test) == [this is a test]
assert xform("+cast +url -url -cast" "pass" "pass" this is a test) == [this is a test]
assert xform("+cast +enc -enc -cast" "pass" "pass" this is a test) == [this is a test]
assert xform("+cast +b64 -b64 -cast" "pass" "pass" this is a test) == [this is a test]
assert xform("+cast +ctcp -ctcp -cast" "pass" "pass" this is a test) == [this is a test]
assert xform("+aes +url -url -aes" "pass" "pass" this is a test) == [this is a test]
assert xform("+aes +enc -enc -aes" "pass" "pass" this is a test) == [this is a test]
assert xform("+aes +b64 -b64 -aes" "pass" "pass" this is a test) == [this is a test]
assert xform("+aes +ctcp -ctcp -aes" "pass" "pass" this is a test) == [this is a test]
assert xform("+aessha +url -url -aessha" "pass" "pass" this is a test) == [this is a test]
assert xform("+aessha +enc -enc -aessha" "pass" "pass" this is a test) == [this is a test]
assert xform("+aessha +b64 -b64 -aessha" "pass" "pass" this is a test) == [this is a test]
assert xform("+aessha +ctcp -ctcp -aessha" "pass" "pass" this is a test) == [this is a test]

# Testing Karll Arrays.
#XXX Incomplete.
clear
assert delarray(testarray) <= 0
assert setitem(testarray 0 3) == 1
assert setitem(testarray 1 2) == 2
assert setitem(testarray 2 1) == 2
assert setitem(testarray 3 0) == 2
assert numitems(testarray) == 4
assert getitem(testarray 0 1 2 3) == [3 2 1 0]
assert igetitem(testarray 0 1 2 3) == [0 1 2 3]
assert itemtoindex(testarray 0 1 2 3) == [3 2 1 0]
assert indextoitem(testarray 0 1 2 3) == [3 2 1 0]
assert delitem(testarray 3) == 0
assert delitem(testarray 3) == -2
assert delitem(testarray 1) == 0
assert delarray(testarray) == 0
assert delarray(testarray) == -1

# Testing internal array consistency.
echo
fe (function fnexist command cexist set) label exist {
	@ :last = []
	@ :array = [get${label}s]
	echo Checking $label array consistency.
	fe ( ${ [$array]() } ) fn {
		if ( sort($last $fn) != uniq($last $fn) ) {
			echo ${label}s $last and $fn are not in the correct order.
		} elsif ( exist && ![$exist]($fn) ) {
			echo Can't find $label $fn
		}
		@ :last = fn
	}
}

# Check whether documentation exists.
echo
if (fexist($getset(help_path))) {
	fe (function 6* command [1-5]* set 4*/set*) type section {
		@ :list = [get${type}s]()
		@ :list = tolower($list)
		@ :section = [$getset(help_path)/$section]
		fe list item {
			@ item = 0 < fsize($globi($section/$item)) ? [] : item
		}
		if (#list) {
			echo Undocumented ${type}s: $list
		}
	}
} else {
	echo Skipping documentation test since no documentation was found.
}

echo
echo
echo
echo ALL TESTS ARE DONE!