add test files

This commit is contained in:
pTalanov
2012-02-27 21:55:57 +04:00
parent 645a3a9f2f
commit c21ea8aa86
240 changed files with 16998 additions and 0 deletions
@@ -0,0 +1,3 @@
package foo
fun box() = if (true) throw Exception() else false
@@ -0,0 +1,19 @@
package foo
val a1 = Array<Int>(10)
fun box() : Boolean {
var c = 0
var d = 0
a1[3] = 3
a1[5] = 5
for (var a : Int? in a1) {
if (a != null) {
c += 1;
} else {
d += 1
}
}
return (c == 2) && (d == 8)
}
@@ -0,0 +1,10 @@
package foo
val a1 = Array<Int>(0)
fun box() : Boolean {
for (a in a1) {
return false;
}
return true;
}
@@ -0,0 +1,67 @@
import java.util.*
class Lifetime() {
val attached = ArrayList< Function0<Unit> >()
public fun attach(action : ()->Unit)
{
attached.add(action)
}
fun close()
{
for(x in attached) x()
attached.clear()
}
}
public class Viewable<T>()
{
val items = ArrayList<T>()
fun add(item:T)
{
items.add(item)
}
fun remove(item:T)
{
items.remove(item)
}
fun view(lifetime: Lifetime, viewer: (itemLifetime:Lifetime, item:T) -> Unit)
{
for(item in items)
viewer(lifetime, item)
}
}
fun lifetime(body: (Lifetime)->Unit)
{
val l = Lifetime()
body(l)
l.close()
}
fun<T> Dump(items:ArrayList<T>)
{
for(item in items)
print(item.toString() + ", ")
println()
}
fun main(args:Array<String>)
{
val v = Viewable<Int>()
val x = ArrayList<Int>()
v.add(1)
v.add(2)
lifetime(
{
v.view(it, {(itemLifetime, item)->
x.add(item)
Dump(x)
itemLifetime.attach { x.remove(item as Any); Dump(x) }
})
})
}
@@ -0,0 +1,9 @@
package foo
fun box() : Boolean {
var sum = 0
val adder = {(a: Int) -> sum += a }
adder(3)
adder(2)
return sum == 5
}
@@ -0,0 +1,9 @@
package foo
fun box() : String {
return apply( "OK", {(arg: String) -> arg } )
}
fun apply(arg : String, f : (p:String) -> String) : String {
return f(arg)
}
@@ -0,0 +1,9 @@
package foo
fun box() : String {
return if (apply( 5, {(arg: Int) -> arg + 13 } ) == 18) "OK" else "fail"
}
fun apply(arg : Int, f : (p:Int) -> Int) : Int {
return f(arg)
}
@@ -0,0 +1,15 @@
package foo
fun f(a : Int = 2, b : Int = 3) = a + b
fun box() : Boolean
{
if (f(1,2) != 3) return false;
if (f(1,3) != 4) return false;
if (f(3) != 6) return false;
if (f() != 5) return false;
return true;
}
@@ -0,0 +1,12 @@
class Point(val x:Int, val y:Int) {
fun mul() : (scalar:Int)->Point {
return { (scalar:Int):Point -> Point(x * scalar, y * scalar) }
}
}
val m = Point(2, 3).mul() : (scalar:Int)->Point
fun box() : String {
val answer = m(5)
return if (answer.x == 10 && answer.y == 15) "OK" else "FAIL"
}
@@ -0,0 +1,42 @@
package foo
import java.util.*;
val d = {(a : Int) -> a + 1}
val p = {(a : Int) -> a * 3}
val list = ArrayList<Function1<Int, Int>>();
fun chain(start : Int) : Int {
var res = start;
for (func in list) {
res = (func)(res);
}
return res;
}
fun box() : Boolean {
if (chain(0) != 0) {
return false;
}
list.add(d);
if (list.get(0)(0) != 1) {
return false;
}
list.add(p);
if (list.get(1)(10) != 30) {
return false;
}
if (chain(0) != 3) {
return false;
}
list.add({it * it});
list.add({it - 100});
if (chain(2) != -19) {
return false;
}
if (({(a : Int) -> a * a}(3)) != 9) {
return false;
}
return true;
}
@@ -0,0 +1,19 @@
package foo
fun box() : Boolean{
fun f() = 3
return (((f() + f()) == 6) && (b() == 24))
}
fun b() : Int {
fun a() : Int {
fun c() = 4
return c() * 3
}
val a = 2
return a() * a
}
@@ -0,0 +1,8 @@
package foo
fun box() : Boolean {
var sum = 0
val addFive = {(a: Int) -> a + 5 }
sum = addFive(sum)
return sum == 5
}
@@ -0,0 +1,14 @@
package foo
fun f(a: (Int) -> Int) = a(1)
fun box() : Boolean {
if (f() {
it + 2
} != 3) return false
if (f() {(a : Int) -> a * 300} != 300) return false;
return true
}
@@ -0,0 +1,10 @@
package foo
fun apply(f : (Int) -> Int, t : Int) : Int {
return f(t)
}
fun box() : Boolean {
return apply({(a: Int) -> a + 5 }, 3) == 8
}
@@ -0,0 +1,13 @@
package foo
fun box() : Boolean
{
return f()
}
fun f() : Boolean {
return true
}
@@ -0,0 +1,9 @@
package foo
fun sum(param1 : Int, param2 : Int) : Int {
return param1 + param2;
}
fun box() : Boolean {
return (sum(1, 5) == 6)
}
@@ -0,0 +1,12 @@
package foo
fun test(f : (Int) -> Boolean, p : Int) = f(p)
fun box() : Boolean {
if (!test({it + 1 == 2}, 1)) return false;
if (!test({it > 1}, 3)) return false;
return (test({((it < 1) == false)}, 1))
}
@@ -0,0 +1,17 @@
package foo
var b = 0
fun loop(var times : Int) {
while(times > 0) {
val u = {(value : Int) ->
b = b + 1
}
u(times--)
}
}
fun box() : Boolean {
loop(5)
return b == 5
}
@@ -0,0 +1,16 @@
package foo
fun test(x: Int, y: Int) = y - x
fun box() : Boolean {
if (test(1,2) != 1) {
return false;
}
if (test(x=1, y=2) != 1) {
return false;
}
if (test(y=2, x=1) != 1) {
return false;
}
return true
}
@@ -0,0 +1,17 @@
package foo
fun testSize(expectedSize : Int, vararg i : Int) : Boolean {
return (i.size == expectedSize)
}
fun testSum(expectedSum : Int, vararg i : Int) : Boolean {
var sum = 0
for (j in i) {
sum += j
}
return (expectedSum == sum)
}
fun box() = testSize(0) && testSum(0) && testSize(3, 1, 1, 1) && testSum(3, 1, 1, 1) && testSize(6, 1, 1, 1, 2, 3, 4) &&
testSum(30, 10, 20, 0)
@@ -0,0 +1,112 @@
package foo
import js.*
class RangeIterator(val start : Int, var count : Int, val reversed : Boolean) {
var i = start
fun next() : Int {
--count
if (reversed) {
i--
return i + 1
} else {
i++
return i - 1
}
}
fun hasNext() = (count > 0);
}
class NumberRange(val start : Int, val size : Int, val reversed : Boolean) {
val end : Int
get() = if (reversed) start - size + 1 else start + size - 1
fun contains(number : Int) : Boolean {
if (reversed) {
return (number <= start) && (number > start - size);
} else {
return (number >= start) && (number < start + size);
}
}
fun iterator() = RangeIterator(start, size, reversed);
}
fun box() = testRange() && testReversedRange();
fun testRange() : Boolean {
val oneToFive = NumberRange(1, 4, false);
if (oneToFive.contains(5)) return false;
if (oneToFive.contains(0)) return false;
if (oneToFive.contains(-100)) return false;
if (oneToFive.contains(10)) return false;
if (!oneToFive.contains(1)) return false;
if (!oneToFive.contains(2)) return false;
if (!oneToFive.contains(3)) return false;
if (!oneToFive.contains(4)) return false;
if (!(oneToFive.start == 1)) return false;
if (!(oneToFive.size == 4)) return false;
if (!(oneToFive.end == 4)) return false;
var sum = 0;
for (i in oneToFive) {
sum += i;
}
for (i in oneToFive) {
print(i)
}
if (sum != 10) return false;
return true;
}
fun testReversedRange() : Boolean {
println("Testing reversed range.");
val tenToFive = NumberRange(10, 5, true);
if (tenToFive.contains(5)) return false;
if (tenToFive.contains(11)) return false;
if (tenToFive.contains(-100)) return false;
if (tenToFive.contains(1000)) return false;
if (!tenToFive.contains(6)) return false;
if (!tenToFive.contains(7)) return false;
if (!tenToFive.contains(8)) return false;
if (!tenToFive.contains(9)) return false;
if (!tenToFive.contains(10)) return false;
if (!(tenToFive.start == 10)) return false;
if (!(tenToFive.size == 5)) return false;
if (!(tenToFive.end == 6)) return false;
for (i in tenToFive) {
println(i)
}
var sum = 0;
for (i in tenToFive) {
sum += i;
}
if (sum != 40) {
return false;
}
return true;
}
fun main(args : Array<String>) {
println(box())
}
@@ -0,0 +1,8 @@
package foo
import jquery.*;
fun box() : String {
val aa = jq("a").attr("a");
return "OK"
}
@@ -0,0 +1,15 @@
package foo
val y = 3
fun f(a:Int) : Int {
val x = 42
val y = 50
return y
}
fun box() : Int
{
return f(y)
}
@@ -0,0 +1,14 @@
package foo
var i = 0
fun test() : Int? = i++
fun box() : Boolean {
if (i != 0) return false
test()?.plus(1)
if (i != 1) return false
test()?.minus(2)
if (i != 2) return false
return true
}
@@ -0,0 +1,7 @@
package foo
fun box() : String {
var number = 3
return ("my age is $number");
}
@@ -0,0 +1,8 @@
package foo
fun box() : String {
var right = 2
var left = 3
return ("left = $left\nright = $right\nsum = ${left + right}\n");
}
@@ -0,0 +1,18 @@
package foo
class A(var i : Int) {
fun toString() = "a$i"
}
fun box() : Boolean {
var p = A(2);
var n = A(1);
if ("$p$n" != "a2a1") {
return false;
}
if ("${A(10)}" != "a10") {
return false;
}
return true;
}
@@ -0,0 +1,10 @@
package foo
fun box() : Boolean {
val a = "bar";
var b = "foo";
b = a;
return (b == "bar");
}
@@ -0,0 +1,8 @@
package foo
fun box() : Boolean {
val a = "String";
return true;
}
@@ -0,0 +1,7 @@
package foo
fun box() : String {
var name = "Hello"
return ("o${name}o");
}