mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 16:54:21 +03:00
94 lines
2.1 KiB
Plaintext
94 lines
2.1 KiB
Plaintext
use "std"
|
|
use "types"
|
|
use "functional"
|
|
|
|
def testRangeParams() {
|
|
x = range(10)
|
|
assertEquals(10, length(x))
|
|
assertEquals(0, x[0])
|
|
assertEquals(9, x[9])
|
|
}
|
|
|
|
def testRangeParamsFromTo() {
|
|
x = range(4, 10)
|
|
assertEquals(6, length(x))
|
|
assertEquals(4, x[0])
|
|
assertEquals(9, x[5])
|
|
}
|
|
|
|
def testRangeParamsWithStep() {
|
|
x = range(4, 10, 2)
|
|
assertEquals(3, length(x))
|
|
assertEquals(4, x[0])
|
|
assertEquals(8, x[2])
|
|
}
|
|
|
|
def testRangeParamsReversed() {
|
|
x = range(10, 4, -1)
|
|
assertEquals(6, length(x))
|
|
assertEquals(10, x[0])
|
|
assertEquals(5, x[5])
|
|
}
|
|
|
|
def testRangeLength() {
|
|
assertEquals(10, length(range(0, 10, 1)))
|
|
assertEquals(5, length(range(0, 10, 2)))
|
|
assertEquals(4, length(range(0, 10, 3)))
|
|
assertEquals(3, length(range(0, 10, 4)))
|
|
assertEquals(2, length(range(0, 10, 5)))
|
|
assertEquals(1, length(range(0, 10, 15)))
|
|
}
|
|
|
|
def testRangeReversedLength() {
|
|
assertEquals(10, length(range(10, 0, -1)))
|
|
assertEquals(5, length(range(10, 0, -2)))
|
|
assertEquals(4, length(range(10, 0, -3)))
|
|
assertEquals(3, length(range(10, 0, -4)))
|
|
assertEquals(2, length(range(10, 0, -5)))
|
|
assertEquals(1, length(range(10, 0, -15)))
|
|
}
|
|
|
|
def testRangeHuge() {
|
|
x = range(-1002003004005006007, 1002003004005006007)
|
|
assertEquals(-1002003004005006000, x[7])
|
|
|
|
x = range(-1002003004005006007, 1002003004005006007, 100000000000)
|
|
assertEquals(20040061, length(x))
|
|
|
|
x = range(-10000000, 20000000)
|
|
assertEquals(30000000, length(x))
|
|
assertEquals(0, x[10000000])
|
|
}
|
|
|
|
def testRangeAsString() {
|
|
x = range(1, 6)
|
|
assertEquals("[1, 2, 3, 4, 5]", string(x))
|
|
|
|
x = range(1, 6, 2)
|
|
assertEquals("[1, 3, 5]", string(x))
|
|
assertEquals(string([1,3,5]), string(x))
|
|
}
|
|
|
|
def testRangeIterate() {
|
|
sum = 0
|
|
for x : range(5) {
|
|
sum += x
|
|
}
|
|
assertEquals(10, sum)
|
|
}
|
|
|
|
def testRangeFunctionalForeach() {
|
|
i = 0
|
|
foreach(range(5), def(x) = assertEquals(i++, x))
|
|
}
|
|
|
|
def testRangeFunctionalReduce() {
|
|
sum = reduce(range(5), 0, def(x, y) = x + y)
|
|
assertEquals(10, sum)
|
|
}
|
|
|
|
def testRangeInvalid() {
|
|
assertEquals(0, length(range(-100)))
|
|
assertEquals(0, length(range(0, -100, 1)))
|
|
assertEquals(0, length(range(0, 100, 0)))
|
|
} |