From 0df98c57d59cea06ae969ca1f7f46889c8dff7f3 Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Wed, 13 Jun 2018 19:57:21 +0200 Subject: [PATCH] tests: Add more invalid class tests to increase coverage --- tests/Makefile.am | 9 +++++++++ tests/methods/prepostconditions.vala | 7 ++++++- tests/semantic/class-base-type-invalid.test | 10 ++++++++++ tests/semantic/class-base-type-less-accessible.test | 11 +++++++++++ .../class-compact-derived-instance-field.test | 13 +++++++++++++ tests/semantic/class-compact-interface.test | 11 +++++++++++ .../class-missing-implement-interface-method.test | 11 +++++++++++ .../class-missing-implement-interface-property.test | 11 +++++++++++ tests/semantic/class-missing-implement-method.test | 11 +++++++++++ tests/semantic/class-missing-implement-property.test | 11 +++++++++++ tests/semantic/class-missing-prerequisites.test | 19 +++++++++++++++++++ 11 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 tests/semantic/class-base-type-invalid.test create mode 100644 tests/semantic/class-base-type-less-accessible.test create mode 100644 tests/semantic/class-compact-derived-instance-field.test create mode 100644 tests/semantic/class-compact-interface.test create mode 100644 tests/semantic/class-missing-implement-interface-method.test create mode 100644 tests/semantic/class-missing-implement-interface-property.test create mode 100644 tests/semantic/class-missing-implement-method.test create mode 100644 tests/semantic/class-missing-implement-property.test create mode 100644 tests/semantic/class-missing-prerequisites.test diff --git a/tests/Makefile.am b/tests/Makefile.am index c62cc62b3..4d53645e2 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -467,6 +467,15 @@ TESTS = \ parser/yield-method.test \ parser/bug728574.vala \ parser/bug749576.vala \ + semantic/class-base-type-invalid.test \ + semantic/class-base-type-less-accessible.test \ + semantic/class-compact-derived-instance-field.test \ + semantic/class-compact-interface.test \ + semantic/class-missing-implement-interface-method.test \ + semantic/class-missing-implement-interface-property.test \ + semantic/class-missing-implement-method.test \ + semantic/class-missing-implement-property.test \ + semantic/class-missing-prerequisites.test \ semantic/class-too-few-type-arguments.test \ semantic/class-too-many-type-arguments.test \ semantic/constant-extern.test \ diff --git a/tests/methods/prepostconditions.vala b/tests/methods/prepostconditions.vala index 871bfa7fe..aeae32a9f 100644 --- a/tests/methods/prepostconditions.vala +++ b/tests/methods/prepostconditions.vala @@ -3,10 +3,15 @@ class Foo { public void foo () ensures (ensured = true) { } + + public string bar () ensures (result.length >= 3) { + return "bar"; + } } void main () { var foo = new Foo(); foo.foo(); assert(foo.ensured); -} \ No newline at end of file + assert(foo.bar () == "bar"); +} diff --git a/tests/semantic/class-base-type-invalid.test b/tests/semantic/class-base-type-invalid.test new file mode 100644 index 000000000..36ce87c4c --- /dev/null +++ b/tests/semantic/class-base-type-invalid.test @@ -0,0 +1,10 @@ +Invalid Code + +class Bar { +} + +public class Foo : Bar { +} + +void main () { +} diff --git a/tests/semantic/class-base-type-less-accessible.test b/tests/semantic/class-base-type-less-accessible.test new file mode 100644 index 000000000..4f8826f3f --- /dev/null +++ b/tests/semantic/class-base-type-less-accessible.test @@ -0,0 +1,11 @@ +Invalid Code + +struct Bar { + public int i; +} + +class Foo : Bar { +} + +void main () { +} diff --git a/tests/semantic/class-compact-derived-instance-field.test b/tests/semantic/class-compact-derived-instance-field.test new file mode 100644 index 000000000..b33e71eb9 --- /dev/null +++ b/tests/semantic/class-compact-derived-instance-field.test @@ -0,0 +1,13 @@ +Invalid Code + +[Compact] +class Bar { +} + +[Compact] +class Foo : Bar { + public int i; +} + +void main () { +} diff --git a/tests/semantic/class-compact-interface.test b/tests/semantic/class-compact-interface.test new file mode 100644 index 000000000..46de90510 --- /dev/null +++ b/tests/semantic/class-compact-interface.test @@ -0,0 +1,11 @@ +Invalid Code + +interface Bar { +} + +[Compact] +class Foo : Bar { +} + +void main () { +} diff --git a/tests/semantic/class-missing-implement-interface-method.test b/tests/semantic/class-missing-implement-interface-method.test new file mode 100644 index 000000000..1d20e84a7 --- /dev/null +++ b/tests/semantic/class-missing-implement-interface-method.test @@ -0,0 +1,11 @@ +Invalid Code + +interface Bar { + public abstract void bar (); +} + +class Foo : Bar { +} + +void main () { +} diff --git a/tests/semantic/class-missing-implement-interface-property.test b/tests/semantic/class-missing-implement-interface-property.test new file mode 100644 index 000000000..9178af5e2 --- /dev/null +++ b/tests/semantic/class-missing-implement-interface-property.test @@ -0,0 +1,11 @@ +Invalid Code + +interface Bar { + public abstract string bar { get; set; } +} + +class Foo : Bar { +} + +void main () { +} diff --git a/tests/semantic/class-missing-implement-method.test b/tests/semantic/class-missing-implement-method.test new file mode 100644 index 000000000..c5b154a50 --- /dev/null +++ b/tests/semantic/class-missing-implement-method.test @@ -0,0 +1,11 @@ +Invalid Code + +abstract class Bar { + public abstract void bar (); +} + +class Foo : Bar { +} + +void main () { +} diff --git a/tests/semantic/class-missing-implement-property.test b/tests/semantic/class-missing-implement-property.test new file mode 100644 index 000000000..e958a7782 --- /dev/null +++ b/tests/semantic/class-missing-implement-property.test @@ -0,0 +1,11 @@ +Invalid Code + +abstract class Bar { + public abstract string bar { get; set; } +} + +class Foo : Bar { +} + +void main () { +} diff --git a/tests/semantic/class-missing-prerequisites.test b/tests/semantic/class-missing-prerequisites.test new file mode 100644 index 000000000..3395c5075 --- /dev/null +++ b/tests/semantic/class-missing-prerequisites.test @@ -0,0 +1,19 @@ +Invalid Code + +interface IFoo { +} + +interface IBaz { +} + +interface IBar : IFoo, IBaz { +} + +class Bar : IBar { +} + +class Foo : Bar { +} + +void main () { +} -- 2.11.4.GIT