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

132 lines
2.4 KiB
Plaintext
Raw Normal View History

use "ounit"
use "types"
use "functional"
2016-05-19 14:02:46 +03:00
use "date"
use "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)
}
2016-05-19 14:02:46 +03:00
// --- 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()