TEST: convertion unit tests into run tests

This commit is contained in:
Vasily Levchenko
2016-12-27 13:02:00 +03:00
committed by vvlevchenko
parent 7fd4b4fe34
commit 3fe59cc46c
56 changed files with 188 additions and 411 deletions
@@ -1,17 +0,0 @@
extern void *resolve_symbol(const char*);
int
run_test() {
int (*square)(int) = resolve_symbol("kfun:square(Int)");
int (*sum_of_squares)(int, int) = resolve_symbol("kfun:sumOfSquares(Int;Int)");
int (*diff_of_squares)(int, int) = resolve_symbol("kfun:diffOfSquares(Int;Int)");
int (*mod)(int, int) = resolve_symbol("kfun:mod(Int;Int)");
int (*div)(int, int) = resolve_symbol("kfun:remainder(Int;Int)");
if (square(2) != 4) return 1;
if (sum_of_squares(2, 4) != 20) return 1;
if (diff_of_squares(2, 4) != -12) return 1;
if (mod(5, 2) != 2) return 1;
if (div(5, 2) != 1) return 1;
return 0;
}
@@ -2,4 +2,12 @@ fun square(a:Int):Int = a * a
fun sumOfSquares(a:Int, b:Int):Int = square(a) + square(b)
fun diffOfSquares(a:Int, b:Int):Int = square(a) - square(b)
fun mod(a:Int,b:Int):Int = a / b
fun remainder(a:Int, b:Int):Int = a % b
fun remainder(a:Int, b:Int):Int = a % b
fun main(args:Array<String>) {
if (square(2) != 4) throw Error()
if (sumOfSquares(2, 4) != 20) throw Error()
if (diffOfSquares(2, 4) != -12) throw Error()
if (mod(5, 2) != 2) throw Error()
if (remainder(5, 2) != 1) throw Error()
}
@@ -1,10 +0,0 @@
extern void *resolve_symbol(const char*);
int
run_test() {
int (*bool_yes)() = resolve_symbol("kfun:bool_yes()");
if (!bool_yes()) return 1;
return 0;
}
@@ -1 +1,5 @@
fun bool_yes(): Boolean = true
fun main(args: Array<String>) {
if (!bool_yes()) throw Error()
}
@@ -1,54 +0,0 @@
#include <stdint.h>
extern void *resolve_symbol(const char*);
int
run_test() {
void *(*helloString)() = resolve_symbol("kfun:helloString()");
void *(*goodbyeString)() = resolve_symbol("kfun:goodbyeString()");
uint8_t (*eqeqB)(uint8_t, uint8_t) = resolve_symbol("kfun:eqeqB(Byte;Byte)");
uint8_t (*eqeqS)(int16_t, int16_t) = resolve_symbol("kfun:eqeqS(Short;Short)");
uint8_t (*eqeqI)(int , int ) = resolve_symbol("kfun:eqeqI(Int;Int)");
uint8_t (*eqeqL)(int64_t, int64_t) = resolve_symbol("kfun:eqeqL(Long;Long)");
uint8_t (*eqeqF)(float , float ) = resolve_symbol("kfun:eqeqF(Float;Float)");
uint8_t (*eqeqD)(double , double ) = resolve_symbol("kfun:eqeqD(Double;Double)");
uint8_t (*eqeqStr)(void *, void *) = resolve_symbol("kfun:eqeqStr(String;String)");
uint8_t (*eqeqeq)(void *, void *) = resolve_symbol("kfun:eqeqeq(Any?;Any?)");
uint8_t (*gtI )(int , int ) = resolve_symbol("kfun:gtI(Int;Int)");
uint8_t (*ltI )(int , int ) = resolve_symbol("kfun:ltI(Int;Int)");
uint8_t (*geI )(int , int ) = resolve_symbol("kfun:geI(Int;Int)");
uint8_t (*leI )(int , int ) = resolve_symbol("kfun:leI(Int;Int)");
uint8_t (*neI )(int , int ) = resolve_symbol("kfun:neI(Int;Int)");
uint8_t (*gtF )(float , float ) = resolve_symbol("kfun:gtF(Float;Float)");
uint8_t (*ltF )(float , float ) = resolve_symbol("kfun:ltF(Float;Float)");
uint8_t (*geF )(float , float ) = resolve_symbol("kfun:geF(Float;Float)");
uint8_t (*leF )(float , float ) = resolve_symbol("kfun:leF(Float;Float)");
uint8_t (*neF )(float , float ) = resolve_symbol("kfun:neF(Float;Float)");
if (!eqeqB(3 , 3 )) return 1;
if (!eqeqS(3 , 3 )) return 1;
if (!eqeqI(3 , 3 )) return 1;
if (!eqeqL(3ll , 3ll )) return 1;
if (!eqeqF(3.0f, 3.0f)) return 1;
if (!eqeqD(3.0 , 3.0 )) return 1;
if (!eqeqStr(helloString(), helloString())) return 1;
if (!eqeqeq(helloString(), helloString())) return 1;
if (eqeqeq(helloString(), goodbyeString())) return 1;
if (gtI (2 , 3 )) return 1;
if (ltI (3 , 2 )) return 1;
if (geI (2 , 3 )) return 1;
if (leI (3 , 2 )) return 1;
if (neI (2 , 2 )) return 1;
if (gtF (2.0 , 3.0 )) return 1;
if (ltF (3.0 , 2.0 )) return 1;
if (geF (2.0 , 3.0 )) return 1;
if (leF (3.0 , 2.0 )) return 1;
if (neF (2.0 , 2.0 )) return 1;
return 0;
}
+26 -1
View File
@@ -21,4 +21,29 @@ fun leF (a:Float, b:Float ) = a <= b
fun neF (a:Float, b:Float ) = a != b
fun helloString() = "Hello"
fun goodbyeString() = "Goodbye"
fun goodbyeString() = "Goodbye"
fun main(args: Array<String>) {
if (!eqeqB(3 , 3 )) throw Error()
if (!eqeqS(3 , 3 )) throw Error()
if (!eqeqI(3 , 3 )) throw Error()
if (!eqeqL(3L , 3L )) throw Error()
if (!eqeqF(3.0f, 3.0f)) throw Error()
if (!eqeqD(3.0 , 3.0 )) throw Error()
if (!eqeqStr(helloString(), helloString())) throw Error()
if (!eqeqeq(helloString(), helloString())) throw Error()
if (eqeqeq(helloString(), goodbyeString())) throw Error()
if (gtI (2 , 3 )) throw Error()
if (ltI (3 , 2 )) throw Error()
if (geI (2 , 3 )) throw Error()
if (leI (3 , 2 )) throw Error()
if (neI (2 , 2 )) throw Error()
if (gtF (2.0f , 3.0f )) throw Error()
if (ltF (3.0f , 2.0f )) throw Error()
if (geF (2.0f , 3.0f )) throw Error()
if (leF (3.0f , 2.0f )) throw Error()
if (neF (2.0f , 2.0f )) throw Error()
}
@@ -1,10 +0,0 @@
extern void *resolve_symbol(const char*);
int
run_test() {
int (*intrinsic)(int) = resolve_symbol("kfun:intrinsic(Int)");
if (intrinsic(3) != 4) return 1;
return 0;
}
@@ -9,3 +9,7 @@ fun intrinsic(b: Int): Int {
sum = sum + b
return sum
}
fun main(args: Array<String>) {
if (intrinsic(3) != 4) throw Error()
}
@@ -1,10 +0,0 @@
extern void *resolve_symbol(const char*);
int
run_test() {
int (*minus_eq)(int) = resolve_symbol("kfun:minus_eq(Int)");
if (minus_eq(23) != -12) return 1;
return 0;
}
@@ -3,3 +3,7 @@ fun minus_eq(a: Int): Int {
b -= a
return b
}
fun main(args: Array<String>) {
if (minus_eq(23) != -12) throw Error()
}
@@ -1,10 +0,0 @@
extern void *resolve_symbol(const char*);
int
run_test() {
int (*plus_eq)(int) = resolve_symbol("kfun:plus_eq(Int)");
if (plus_eq(3) != 14) return 1;
return 0;
}
@@ -2,4 +2,8 @@ fun plus_eq(a: Int): Int {
var b = 11
b += a
return b
}
fun main(args: Array<String>) {
if (plus_eq(3) != 14) throw Error()
}
@@ -1,22 +0,0 @@
#include <stdint.h>
extern void *resolve_symbol(const char*);
int
run_test() {
int (*sumIB)(int, uint8_t) = resolve_symbol("kfun:sumIB(Int;Byte)");
int (*sumIS)(int, int16_t) = resolve_symbol("kfun:sumIS(Int;Short)");
int (*sumII)(int, int ) = resolve_symbol("kfun:sumII(Int;Int)");
int64_t (*sumIL)(int, int64_t) = resolve_symbol("kfun:sumIL(Int;Long)");
float (*sumIF)(int, float ) = resolve_symbol("kfun:sumIF(Int;Float)");
double (*sumID)(int, double ) = resolve_symbol("kfun:sumID(Int;Double)");
double (*modID)(int, double ) = resolve_symbol("kfun:modID(Int;Double)");
if (sumIB(2, 3) != 5) return 1;
if (sumIS(2, 3) != 5) return 1;
if (sumII(2, 3) != 5) return 1;
if (sumIL(2, 3l) != 5l) return 1;
if (sumIF(2, 3.0f) != 5.0f) return 1;
if (sumID(2, 3.0) != 5.0) return 1;
if (modID(5, 3.0) != 2.0) return 1;
return 0;
}
+11 -1
View File
@@ -5,4 +5,14 @@ fun sumIL(a:Int, b:Long ) = a + b
fun sumIF(a:Int, b:Float ) = a + b
fun sumID(a:Int, b:Double) = a + b
fun modID(a:Int, b:Double) = a % b
fun modID(a:Int, b:Double) = a % b
fun main(args:Array<String>) {
if (sumIB(2, 3) != 5) throw Error()
if (sumIS(2, 3) != 5) throw Error()
if (sumII(2, 3) != 5) throw Error()
if (sumIL(2, 3L) != 5L) throw Error()
if (sumIF(2, 3.0f) != 5.0f) throw Error()
if (sumID(2, 3.0) != 5.0) throw Error()
if (modID(5, 3.0) != 2.0) throw Error()
}
@@ -1,10 +0,0 @@
extern void *resolve_symbol(const char*);
int
run_test() {
int (*sum3)() = resolve_symbol("kfun:sum3()");
if (sum3() != 36) return 1;
return 0;
}
@@ -1,2 +1,6 @@
fun sum3():Int = sum(1, 2, 33)
fun sum(a:Int, b:Int, c:Int): Int = a + b + c
fun main(args: Array<String>) {
if (sum3() != 36) throw Error()
}
@@ -1,10 +0,0 @@
extern void *resolve_symbol(const char*);
int
run_test() {
int (*sum)(int, int) = resolve_symbol("kfun:sumFooBar(Int;Int)");
if (sum(2, 3) != 5) return 1;
return 0;
}
@@ -1,4 +1,8 @@
fun foo(a:Int):Int = a
fun bar(a:Int):Int = a
fun sumFooBar(a:Int, b:Int):Int = foo(a) + bar(b)
fun sumFooBar(a:Int, b:Int):Int = foo(a) + bar(b)
fun main(args:Array<String>) {
if (sumFooBar(2, 3) != 5) throw Error()
}
@@ -1,10 +0,0 @@
extern void *resolve_symbol(const char*);
int
run_test() {
int (*sum)(int) = resolve_symbol("kfun:sum(Int)");
if (sum(2) != 35) return 1;
return 0;
}
@@ -1 +1,5 @@
fun sum(a:Int): Int = a + 33
fun sum(a:Int): Int = a + 33
fun main(args:Array<String>) {
if (sum(2) != 35) throw Error()
}