From bea140234d5bb589ca8215aa884b24ea4eedcf02 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Fri, 25 Nov 2011 09:19:02 -0500 Subject: [PATCH] test: add new test base_virtual_type_check.nit This test verify explicit and implicit type checks on virtual types. Signed-off-by: Jean Privat --- tests/base_virtual_type_check.nit | 90 +++++++++++++++++++++++++++ tests/sav/base_virtual_type_check.sav | 26 ++++++++ tests/sav/base_virtual_type_check_alt1.sav | 1 + tests/sav/base_virtual_type_check_alt10.sav | 26 ++++++++ tests/sav/base_virtual_type_check_alt2.sav | 1 + tests/sav/base_virtual_type_check_alt3.sav | 1 + tests/sav/base_virtual_type_check_alt4.sav | 1 + tests/sav/base_virtual_type_check_alt5.sav | 1 + tests/sav/base_virtual_type_check_alt6.sav | 1 + tests/sav/base_virtual_type_check_alt7.sav | 1 + tests/sav/base_virtual_type_check_alt8.sav | 25 ++++++++ tests/sav/base_virtual_type_check_alt9.sav | 1 + 12 files changed, 175 insertions(+) create mode 100644 tests/base_virtual_type_check.nit create mode 100644 tests/sav/base_virtual_type_check.sav create mode 100644 tests/sav/base_virtual_type_check_alt1.sav create mode 100644 tests/sav/base_virtual_type_check_alt10.sav create mode 100644 tests/sav/base_virtual_type_check_alt2.sav create mode 100644 tests/sav/base_virtual_type_check_alt3.sav create mode 100644 tests/sav/base_virtual_type_check_alt4.sav create mode 100644 tests/sav/base_virtual_type_check_alt5.sav create mode 100644 tests/sav/base_virtual_type_check_alt6.sav create mode 100644 tests/sav/base_virtual_type_check_alt7.sav create mode 100644 tests/sav/base_virtual_type_check_alt8.sav create mode 100644 tests/sav/base_virtual_type_check_alt9.sav diff --git a/tests/base_virtual_type_check.nit b/tests/base_virtual_type_check.nit new file mode 100644 index 0000000..37a682a --- /dev/null +++ b/tests/base_virtual_type_check.nit @@ -0,0 +1,90 @@ +# This file is part of NIT ( http://www.nitlanguage.org ). +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import kernel +class A + type T: K + type U: T + fun check(o: Object) + do + o.output + '<'.output + 'T'.output + (o isa T).output + o.output + '<'.output + 'U'.output + (o isa U).output + end + fun check2(o: T) + do + o.output + '<'.output + 'T'.output + '\n'.output + end + fun check3(o: U) + do + o.output + '<'.output + 'U'.output + '\n'.output + end +end +class B + super A + redef type T: L +end +class J + redef fun output do 'J'.output +end +class K + super J + redef fun output do 'K'.output +end +class L + super K + redef fun output do 'L'.output +end + +var a = new A +a.check(new J) +a.check(new K) +a.check(new L) +#alt1#a.check2(new J) # Static error +a.check2(new K) +a.check2(new L) +#alt2#a.check3(new J) # Static error +a.check3(new K) +a.check3(new L) +var b = new B +b.check(new J) +b.check(new K) +b.check(new L) +#alt3#b.check2(new J) # Static error +#alt4#b.check2(new K) # Static error +b.check2(new L) +#alt5#b.check3(new J) # Static error +#alt6#b.check3(new K) # Static error +b.check3(new L) +var ab: A = new B +ab.check(new J) +ab.check(new K) +ab.check(new L) +#alt7#ab.check2(new J) # Static error +#alt8#ab.check2(new K) # Dynamic error +ab.check2(new L) +#alt9#ab.check3(new J) # Static error +#alt10#ab.check3(new K) # Dynamic error +ab.check3(new L) diff --git a/tests/sav/base_virtual_type_check.sav b/tests/sav/base_virtual_type_check.sav new file mode 100644 index 0000000..43474d8 --- /dev/null +++ b/tests/sav/base_virtual_type_check.sav @@ -0,0 +1,26 @@ +J