From b66f1df35ed8205dda837e884e699a453134a2d9 Mon Sep 17 00:00:00 2001 From: Florian Deljarry Date: Mon, 30 Sep 2019 11:48:33 -0400 Subject: [PATCH] tests: Add tests for generic and virtual types Signed-off-by: Florian Deljarry --- tests/contracts_generic_type.nit | 43 ++++++++++++++++++++++++++++++++++ tests/contracts_virtual_type.nit | 31 ++++++++++++++++++++++++ tests/sav/contracts_generic_type.res | 1 + tests/sav/contracts_virtual_type.res | 1 + 4 files changed, 76 insertions(+) create mode 100644 tests/contracts_generic_type.nit create mode 100644 tests/contracts_virtual_type.nit create mode 100644 tests/sav/contracts_generic_type.res create mode 100644 tests/sav/contracts_virtual_type.res diff --git a/tests/contracts_generic_type.nit b/tests/contracts_generic_type.nit new file mode 100644 index 0000000..900d296 --- /dev/null +++ b/tests/contracts_generic_type.nit @@ -0,0 +1,43 @@ +# 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. + +# Test the creation of contract with generic class + +class MyGenericClass[E] + + fun foo(x: E) + is + expects(x == 1) + do + if x != 1 then print "Error x != 1" + end +end + +class MyGenericClass2[E] + + var real = new Array[E] + + fun add_all(x: Array[Object]) + is + expects(x.length != 0) + do + real.add_all x + end +end + +var first = new MyGenericClass[Int] +first.foo(1) +var second = new MyGenericClass2[Int] +second.add_all([1,2,3]) +second.add_all(new Array[Int]) diff --git a/tests/contracts_virtual_type.nit b/tests/contracts_virtual_type.nit new file mode 100644 index 0000000..a765cf8 --- /dev/null +++ b/tests/contracts_virtual_type.nit @@ -0,0 +1,31 @@ +# 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. + +# Test the creation of contract with virtual type + +class MyClass + + type VIRTUAL: Int + + fun foo(x: VIRTUAL) + is + expects(x == 1) + do + + end +end + +var first = new MyClass +first.foo(1) +first.foo(3) # Fail 3 != 1 diff --git a/tests/sav/contracts_generic_type.res b/tests/sav/contracts_generic_type.res new file mode 100644 index 0000000..656a320 --- /dev/null +++ b/tests/sav/contracts_generic_type.res @@ -0,0 +1 @@ +Runtime error: Assert 'expects' failed (contracts_generic_type.nit:33) diff --git a/tests/sav/contracts_virtual_type.res b/tests/sav/contracts_virtual_type.res new file mode 100644 index 0000000..0cc6a25 --- /dev/null +++ b/tests/sav/contracts_virtual_type.res @@ -0,0 +1 @@ +Runtime error: Assert 'expects' failed (contracts_virtual_type.nit:23) -- 1.7.9.5