Own-Programming-Language-Tu.../tests.own

70 lines
1.0 KiB
Plaintext
Raw Normal View History

use "ounit"
use "functional"
def testAdditionOnNumbers() {
assertEquals(6, 0 + 1 + 2 + 3)
}
def testSubtractionOnNumbers() {
assertEquals(-6, 0 - 1 - 2 - 3)
}
def testPrefixIncrement() {
a = 8
assertEquals(9, ++a)
assertEquals(9, a)
}
def testPostfixIncrement() {
a = 8
assertEquals(8, a++)
assertEquals(9, a)
}
def testStringReversing() {
assertEquals("tset", -"test")
}
def testStringMultiplication() {
assertEquals("******", "*" * 6)
}
def testTypes() {
assertSameType(0, 0.0)
}
/*def testFail() {
assertTrue(false)
}*/
def testScope() {
x = 5
def func() {
assertEquals(5, x)
x += 10
assertEquals(15, x)
}
func();
assertEquals(15, x)
}
def testFibonacci() {
def fib(n) {
if n < 2 return n
return fib(n-2) + fib(n-1)
}
assertEquals(3, fib(4))
assertEquals(21, fib(8))
}
def testFunctionalChain() {
data = [1,2,3,4,5,6,7]
result = chain(data,
::filter, def(x) = x <= 4,
::sortby, def(x) = -x,
::map, def(x) = x * 2,
)
assertEquals([8,6,4,2], result)
}
println runTests()