use "ounit" use "functional" use "date" 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) } 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) } // --- 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) } println runTests()