From: Jean Privat Date: Tue, 22 Jul 2014 14:53:49 +0000 (-0400) Subject: tests: add base_attr_lazy X-Git-Tag: v0.6.7~30^2 X-Git-Url: http://nitlanguage.org tests: add base_attr_lazy Signed-off-by: Jean Privat --- diff --git a/tests/base_attr_lazy.nit b/tests/base_attr_lazy.nit new file mode 100644 index 0000000..d271411 --- /dev/null +++ b/tests/base_attr_lazy.nit @@ -0,0 +1,48 @@ +# 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 Foo + var a1: Object = fa1 is lazy + var a2: Object = fa2 is lazy + fun fa1: Object do + 1.output + return 10 + end + fun fa2: Object do + 2.output + return 20 + end + #alt1#var a3: Object is lazy +end + +var f = new Foo +f.a1.output +f.a1.output +f.a2.output +f.a2.output +'\n'.output + +var g = new Foo +g.a2.output +g.a1.output +g.a2.output +g.a1.output +'\n'.output + +var h = new Foo +h.a1 = 100 +h.a1.output +h.a1.output diff --git a/tests/base_attr_lazy_int.nit b/tests/base_attr_lazy_int.nit new file mode 100644 index 0000000..5197740 --- /dev/null +++ b/tests/base_attr_lazy_int.nit @@ -0,0 +1,47 @@ +# 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 Foo + var a1: Int = fa1 is lazy + var a2: Int = fa2 is lazy + fun fa1: Int do + 1.output + return 10 + end + fun fa2: Int do + 2.output + return 20 + end +end + +var f = new Foo +f.a1.output +f.a1.output +f.a2.output +f.a2.output +'\n'.output + +var g = new Foo +g.a2.output +g.a1.output +g.a2.output +g.a1.output +'\n'.output + +var h = new Foo +h.a1 = 100 +h.a1.output +h.a1.output diff --git a/tests/base_attr_lazy_nullable.nit b/tests/base_attr_lazy_nullable.nit new file mode 100644 index 0000000..ba3b404 --- /dev/null +++ b/tests/base_attr_lazy_nullable.nit @@ -0,0 +1,57 @@ +# 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 Foo + var a1: nullable Object = fa1 is lazy + var a2: nullable Object = fa2 is lazy + fun fa1: nullable Object do + 1.output + return 10 + end + fun fa2: nullable Object do + 2.output + return 20 + end +end + +fun o(o: nullable Object) +do + if o == null then + 'n'.output + '\n'.output + else + o.output + end +end + +var f = new Foo +o f.a1 +o f.a1 +o f.a2 +o f.a2 +'\n'.output + +var g = new Foo +o g.a2 +o g.a1 +o g.a2 +o g.a1 +'\n'.output + +var h = new Foo +h.a1 = 100 +h.a1.output +h.a1.output diff --git a/tests/sav/base_attr_lazy.res b/tests/sav/base_attr_lazy.res new file mode 100644 index 0000000..540f9b8 --- /dev/null +++ b/tests/sav/base_attr_lazy.res @@ -0,0 +1,16 @@ +1 +10 +10 +2 +20 +20 + +2 +20 +1 +10 +20 +10 + +100 +100 diff --git a/tests/sav/base_attr_lazy_alt1.res b/tests/sav/base_attr_lazy_alt1.res new file mode 100644 index 0000000..d628b21 --- /dev/null +++ b/tests/sav/base_attr_lazy_alt1.res @@ -0,0 +1 @@ +alt/base_attr_lazy_alt1.nit:28,20--23: Error: a lazy attribute needs a value diff --git a/tests/sav/base_attr_lazy_int.res b/tests/sav/base_attr_lazy_int.res new file mode 100644 index 0000000..540f9b8 --- /dev/null +++ b/tests/sav/base_attr_lazy_int.res @@ -0,0 +1,16 @@ +1 +10 +10 +2 +20 +20 + +2 +20 +1 +10 +20 +10 + +100 +100 diff --git a/tests/sav/base_attr_lazy_nullable.res b/tests/sav/base_attr_lazy_nullable.res new file mode 100644 index 0000000..540f9b8 --- /dev/null +++ b/tests/sav/base_attr_lazy_nullable.res @@ -0,0 +1,16 @@ +1 +10 +10 +2 +20 +20 + +2 +20 +1 +10 +20 +10 + +100 +100