From 3c68ee4ce5652f257d3a982c7e48c1a3c39f3b59 Mon Sep 17 00:00:00 2001 From: Konstantin Anisimov Date: Fri, 28 Oct 2016 16:43:37 +0300 Subject: [PATCH] testsuite updated to reflect recent changes in codegen: branch support --- backend.native/tests/build.gradle | 32 ++++++++++++++++--- .../codegen/branching/advanced_when2-test.c | 10 ++++++ .../tests/codegen/branching/advanced_when2.kt | 11 +++++++ .../codegen/branching/advanced_when5-test.c | 10 ++++++ .../tests/codegen/branching/advanced_when5.kt | 10 ++++++ .../tests/codegen/branching/if_else-test.c | 10 ++++++ .../tests/codegen/branching/if_else.kt | 4 +++ .../tests/codegen/branching/when2-test.c | 10 ++++++ .../tests/codegen/branching/when2.kt | 6 ++++ .../tests/codegen/branching/when4.kt | 10 ++++++ .../tests/codegen/branching/when5-test.c | 10 ++++++ .../tests/codegen/branching/when5.kt | 10 ++++++ .../codegen/branching/when_through-test.c | 10 ++++++ .../tests/codegen/branching/when_through.kt | 10 ++++++ 14 files changed, 149 insertions(+), 4 deletions(-) create mode 100644 backend.native/tests/codegen/branching/advanced_when2-test.c create mode 100644 backend.native/tests/codegen/branching/advanced_when2.kt create mode 100644 backend.native/tests/codegen/branching/advanced_when5-test.c create mode 100644 backend.native/tests/codegen/branching/advanced_when5.kt create mode 100644 backend.native/tests/codegen/branching/if_else-test.c create mode 100644 backend.native/tests/codegen/branching/if_else.kt create mode 100644 backend.native/tests/codegen/branching/when2-test.c create mode 100644 backend.native/tests/codegen/branching/when2.kt create mode 100644 backend.native/tests/codegen/branching/when4.kt create mode 100644 backend.native/tests/codegen/branching/when5-test.c create mode 100644 backend.native/tests/codegen/branching/when5.kt create mode 100644 backend.native/tests/codegen/branching/when_through-test.c create mode 100644 backend.native/tests/codegen/branching/when_through.kt diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index ccdfa495086..874a0ebb469 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -174,7 +174,31 @@ task hello2(type: RunKonanTest) { source = "runtime/basic/hello2.kt" } */ -// TODO: waiting for boolean to be implemented -//task bool_yes(type: KonanTest) { -// source = "codegen/function/boolean.kt" -//} +task if_else(type: UnitKonanTest) { + source = "codegen/branching/if_else.kt" +} + +task when2(type: UnitKonanTest) { + source = "codegen/branching/when2.kt" +} + +task when5(type: UnitKonanTest) { + source = "codegen/branching/when5.kt" +} + +task when_through(type: UnitKonanTest) { + source = "codegen/branching/when_through.kt" +} + +task advanced_when2(type: UnitKonanTest) { + source = "codegen/branching/advanced_when2.kt" +} + +task advanced_when5(type: UnitKonanTest) { + source = "codegen/branching/advanced_when5.kt" +} + +task bool_yes(type: UnitKonanTest) { + source = "codegen/function/boolean.kt" +} + diff --git a/backend.native/tests/codegen/branching/advanced_when2-test.c b/backend.native/tests/codegen/branching/advanced_when2-test.c new file mode 100644 index 00000000000..4695c350045 --- /dev/null +++ b/backend.native/tests/codegen/branching/advanced_when2-test.c @@ -0,0 +1,10 @@ +extern void *resolve_symbol(const char*); + +int +run_test() { + int (*advanced_when2)(int) = resolve_symbol("kfun:advanced_when2"); + + if (advanced_when2(2) != 3) return 1; + + return 0; +} diff --git a/backend.native/tests/codegen/branching/advanced_when2.kt b/backend.native/tests/codegen/branching/advanced_when2.kt new file mode 100644 index 00000000000..bb366c123ec --- /dev/null +++ b/backend.native/tests/codegen/branching/advanced_when2.kt @@ -0,0 +1,11 @@ +fun advanced_when2(i: Int): Int { + var value = 1 + when (i) { + 10 -> {val v = 42; value = v} +// 11 -> {val v = 43; value = v} +// 12 -> {val v = 44; value = v} + } + + return value +} + diff --git a/backend.native/tests/codegen/branching/advanced_when5-test.c b/backend.native/tests/codegen/branching/advanced_when5-test.c new file mode 100644 index 00000000000..f7eb5bce518 --- /dev/null +++ b/backend.native/tests/codegen/branching/advanced_when5-test.c @@ -0,0 +1,10 @@ +extern void *resolve_symbol(const char*); + +int +run_test() { + int (*advanced_when5)(int) = resolve_symbol("kfun:advanced_when5"); + + if (advanced_when5(2) != 3) return 1; + + return 0; +} diff --git a/backend.native/tests/codegen/branching/advanced_when5.kt b/backend.native/tests/codegen/branching/advanced_when5.kt new file mode 100644 index 00000000000..4dafca1c801 --- /dev/null +++ b/backend.native/tests/codegen/branching/advanced_when5.kt @@ -0,0 +1,10 @@ +fun advanced_when5(i: Int): Int { + when (i) { + 0 -> { val v = 42; return v} + 1 -> { val v = 42; return v} + 2 -> { val v = 42; return v} + 3 -> { val v = 42; return v} + 4 -> { val v = 42; return v} + else -> return 24 + } +} \ No newline at end of file diff --git a/backend.native/tests/codegen/branching/if_else-test.c b/backend.native/tests/codegen/branching/if_else-test.c new file mode 100644 index 00000000000..51bce6fc5ad --- /dev/null +++ b/backend.native/tests/codegen/branching/if_else-test.c @@ -0,0 +1,10 @@ +extern void *resolve_symbol(const char*); + +int +run_test() { + int (*if_else)(int) = resolve_symbol("kfun:if_else"); + + if (if_else(0) != 24) return 1; + + return 0; +} diff --git a/backend.native/tests/codegen/branching/if_else.kt b/backend.native/tests/codegen/branching/if_else.kt new file mode 100644 index 00000000000..81cbcaad2fc --- /dev/null +++ b/backend.native/tests/codegen/branching/if_else.kt @@ -0,0 +1,4 @@ +fun if_else(b: Boolean): Int { + if (b) return 42 + else return 24 +} \ No newline at end of file diff --git a/backend.native/tests/codegen/branching/when2-test.c b/backend.native/tests/codegen/branching/when2-test.c new file mode 100644 index 00000000000..5740d124670 --- /dev/null +++ b/backend.native/tests/codegen/branching/when2-test.c @@ -0,0 +1,10 @@ +extern void *resolve_symbol(const char*); + +int +run_test() { + int (*when2)(int) = resolve_symbol("kfun:when2"); + + if (when2(0) != 42) return 1; + + return 0; +} diff --git a/backend.native/tests/codegen/branching/when2.kt b/backend.native/tests/codegen/branching/when2.kt new file mode 100644 index 00000000000..e91720443ad --- /dev/null +++ b/backend.native/tests/codegen/branching/when2.kt @@ -0,0 +1,6 @@ +fun when2(i: Int): Int { + when (i) { + 0 -> return 42 + else -> return 24 + } +} \ No newline at end of file diff --git a/backend.native/tests/codegen/branching/when4.kt b/backend.native/tests/codegen/branching/when4.kt new file mode 100644 index 00000000000..3b666bdb80c --- /dev/null +++ b/backend.native/tests/codegen/branching/when4.kt @@ -0,0 +1,10 @@ +fun when5(i: Int): Int { + when (i) { + 0 -> return 42 + 1 -> return 4 + 2 -> return 3 + 3 -> return 2 + 4 -> return 1 + } + return 24 +} \ No newline at end of file diff --git a/backend.native/tests/codegen/branching/when5-test.c b/backend.native/tests/codegen/branching/when5-test.c new file mode 100644 index 00000000000..d42bfd9e14e --- /dev/null +++ b/backend.native/tests/codegen/branching/when5-test.c @@ -0,0 +1,10 @@ +extern void *resolve_symbol(const char*); + +int +run_test() { + int (*when5)(int) = resolve_symbol("kfun:when5"); + + if (when5(2) != 3) return 1; + + return 0; +} diff --git a/backend.native/tests/codegen/branching/when5.kt b/backend.native/tests/codegen/branching/when5.kt new file mode 100644 index 00000000000..38f4897a7f4 --- /dev/null +++ b/backend.native/tests/codegen/branching/when5.kt @@ -0,0 +1,10 @@ +fun when5(i: Int): Int { + when (i) { + 0 -> return 42 + 1 -> return 4 + 2 -> return 3 + 3 -> return 2 + 4 -> return 1 + else -> return 24 + } +} \ No newline at end of file diff --git a/backend.native/tests/codegen/branching/when_through-test.c b/backend.native/tests/codegen/branching/when_through-test.c new file mode 100644 index 00000000000..b735313477b --- /dev/null +++ b/backend.native/tests/codegen/branching/when_through-test.c @@ -0,0 +1,10 @@ +extern void *resolve_symbol(const char*); + +int +run_test() { + int (*when_through)(int) = resolve_symbol("kfun:when_through"); + + if (when_through(2) != 3) return 1; + + return 0; +} diff --git a/backend.native/tests/codegen/branching/when_through.kt b/backend.native/tests/codegen/branching/when_through.kt new file mode 100644 index 00000000000..e4f6d3ff467 --- /dev/null +++ b/backend.native/tests/codegen/branching/when_through.kt @@ -0,0 +1,10 @@ +fun when_through(i: Int): Int { + var value = 1 + when (i) { + 10 -> value = 42 + 11 -> value = 43 + 12 -> value = 44 + } + + return value +}