From cf610861aa65ce4b55d621b459d3dff9f7c4f185 Mon Sep 17 00:00:00 2001 From: Alexandre Terrasa Date: Tue, 4 Dec 2012 12:27:43 -0500 Subject: [PATCH] tests: add some tests on virtual types. tests use recursive vt declarations Signed-off-by: Alexandre Terrasa --- tests/base_isa_vt1.nit | 48 +++++++++++++++++++++++++++++++++ tests/base_isa_vt2.nit | 41 ++++++++++++++++++++++++++++ tests/sav/base_isa_vt1.res | 1 + tests/sav/base_isa_vt2.res | 1 + tests/sav/nitg-e/base_isa_vt_ft.res | 1 + tests/sav/nitg-e/base_isa_vt_gen1.res | 6 +++++ tests/sav/nitg-e/base_isa_vt_gen3.res | 1 + 7 files changed, 99 insertions(+) create mode 100644 tests/base_isa_vt1.nit create mode 100644 tests/base_isa_vt2.nit create mode 100644 tests/sav/base_isa_vt1.res create mode 100644 tests/sav/base_isa_vt2.res create mode 100644 tests/sav/nitg-e/base_isa_vt_ft.res create mode 100644 tests/sav/nitg-e/base_isa_vt_gen1.res create mode 100644 tests/sav/nitg-e/base_isa_vt_gen3.res diff --git a/tests/base_isa_vt1.nit b/tests/base_isa_vt1.nit new file mode 100644 index 0000000..0cdbb3a --- /dev/null +++ b/tests/base_isa_vt1.nit @@ -0,0 +1,48 @@ +# This file is part of NIT ( http://www.nitlanguage.org ). +# +# Copyright 2012 Alexandre Terrasa +# +# 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 base_minimal + +class A + type T: Bool + type U: T + type V: U + + fun testT(o: Object): Bool do + return o isa T + end + + fun testU(o: Object): Bool do + return o isa U + end + + fun testV(o: Object): Bool do + return o isa V + end +end + +var a = new A + +assert a.testT(true) +assert not a.testT(a) + +assert a.testU(true) +assert not a.testU(a) + +assert a.testV(true) +assert not a.testV(a) + +true.output diff --git a/tests/base_isa_vt2.nit b/tests/base_isa_vt2.nit new file mode 100644 index 0000000..cfb770e --- /dev/null +++ b/tests/base_isa_vt2.nit @@ -0,0 +1,41 @@ +# This file is part of NIT ( http://www.nitlanguage.org ). +# +# Copyright 2012 Alexandre Terrasa +# +# 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 base_minimal + +class A[X] + type T: X + type U: T + + fun testT(o: Object): Bool do + return o isa T + end + + fun testU(o: Object): Bool do + return o isa U + end + +end + +var a = new A[Object] + +assert a.testT(true) +assert a.testT(a) + +assert a.testU(true) +assert a.testU(a) + +true.output diff --git a/tests/sav/base_isa_vt1.res b/tests/sav/base_isa_vt1.res new file mode 100644 index 0000000..27ba77d --- /dev/null +++ b/tests/sav/base_isa_vt1.res @@ -0,0 +1 @@ +true diff --git a/tests/sav/base_isa_vt2.res b/tests/sav/base_isa_vt2.res new file mode 100644 index 0000000..27ba77d --- /dev/null +++ b/tests/sav/base_isa_vt2.res @@ -0,0 +1 @@ +true diff --git a/tests/sav/nitg-e/base_isa_vt_ft.res b/tests/sav/nitg-e/base_isa_vt_ft.res new file mode 100644 index 0000000..03110b0 --- /dev/null +++ b/tests/sav/nitg-e/base_isa_vt_ft.res @@ -0,0 +1 @@ +Runtime error: Assert failed (base_isa_vt_ft.nit:55) diff --git a/tests/sav/nitg-e/base_isa_vt_gen1.res b/tests/sav/nitg-e/base_isa_vt_gen1.res new file mode 100644 index 0000000..6aa8394 --- /dev/null +++ b/tests/sav/nitg-e/base_isa_vt_gen1.res @@ -0,0 +1,6 @@ +base_isa_vt_gen1.nit:30,10--34: Warning: Expression is already a Triple[A#0, A#1, V]. +base_isa_vt_gen1.nit:54,8--43: Warning: Expression is already a Triple[String, Int, Object]. +base_isa_vt_gen1.nit:57,8--46: Warning: Expression is already a Triple[String, String, String]. +base_isa_vt_gen1.nit:60,8--48: Warning: Expression is already a Triple[String, String, B[String]]. +base_isa_vt_gen1.nit:63,8--46: Warning: Expression is already a Triple[String, String, String]. +true diff --git a/tests/sav/nitg-e/base_isa_vt_gen3.res b/tests/sav/nitg-e/base_isa_vt_gen3.res new file mode 100644 index 0000000..4eb1aea --- /dev/null +++ b/tests/sav/nitg-e/base_isa_vt_gen3.res @@ -0,0 +1 @@ +Runtime error: Assert failed (base_isa_vt_gen3.nit:48) -- 1.7.9.5