use ounit, types, functional, date, files 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) } // --- Date def testNewDate() { d = newDate(2016, 04, 10) assertEquals(2016, d.year) assertEquals(4, d.month) assertEquals(10, d.day) assertEquals(0, d.hour) assertEquals(0, d.minute) assertEquals(0, d.second) assertEquals(0, d.millisecond) } def testCompareDates() { assertTrue(newDate(2016, 04, 10) > newDate(2015, 03, 11)) assertTrue(newDate(2012, 04, 10) < newDate(2015, 03, 11)) assertTrue(newDate(2015, 03, 11, 0, 0, 0) == newDate(2015, 03, 11)) } def testDateFormat() { d = formatDate(newDate(2016, 04, 10), newFormat("yyyy/MM/dd HH:mm:ss")) assertEquals("2016/05/10 00:00:00", d) } def testDateParse() { d = parseDate("2016/05/10", newFormat("yyyy/MM/dd")) assertEquals(2016, d.year) assertEquals(4, d.month) assertEquals(10, d.day) assertEquals(0, d.hour) } // --- Files def testFiles() { // writeLong f = fopen("test.file", "wb") writeLong(f, 1002003004005006007) flush(f) fclose(f) // append & writeFloat fpNumber = 100200.3004005006007 f = fopen("test.file", "wb+") writeFloat(f, fpNumber) flush(f) fclose(f) f = fopen("test.file", "rb") assertEquals(1002003004005006007, readLong(f)) assertEquals(float(fpNumber), readFloat(f)) assertEquals(-1, readInt(f)) // EOF assertEquals(0, FILES_COMPARATOR(f, f)) fclose(f) f = fopen("test.file", "i") delete(f) fclose(f) } println runTests()