From 868138834bdef7434a4b3fd52cfb075115b747ec Mon Sep 17 00:00:00 2001 From: Arthur Ozga Date: Thu, 18 Jun 2015 16:07:10 -0700 Subject: [PATCH] added tests --- .../classAbstractConstructor.ts | 3 +++ .../classAbstractDeclarations.d.ts | 25 +++++++++++++++++ .../classAbstractInheritance.ts | 21 +++++++++++++++ .../classAbstractMethodWithImplementation.ts | 3 +++ .../classAbstractMixedWithModifiers.ts | 15 +++++++++++ .../classAbstractOverloads.ts | 24 +++++++++++++++++ .../classAbstractProperties.ts | 11 ++++++++ .../classAbstractSuperCalls.ts | 26 ++++++++++++++++++ .../classInstantiatingAbstractClass.ts | 18 +++++++++++++ .../classWithAbstractMethods.ts | 27 +++++++++++++++++++ 10 files changed, 173 insertions(+) create mode 100644 tests/cases/conformance/classes/classDeclarations/classAbstractConstructor.ts create mode 100644 tests/cases/conformance/classes/classDeclarations/classAbstractDeclarations.d.ts create mode 100644 tests/cases/conformance/classes/classDeclarations/classAbstractInheritance.ts create mode 100644 tests/cases/conformance/classes/classDeclarations/classAbstractMethodWithImplementation.ts create mode 100644 tests/cases/conformance/classes/classDeclarations/classAbstractMixedWithModifiers.ts create mode 100644 tests/cases/conformance/classes/classDeclarations/classAbstractOverloads.ts create mode 100644 tests/cases/conformance/classes/classDeclarations/classAbstractProperties.ts create mode 100644 tests/cases/conformance/classes/classDeclarations/classAbstractSuperCalls.ts create mode 100644 tests/cases/conformance/classes/classDeclarations/classInstantiatingAbstractClass.ts create mode 100644 tests/cases/conformance/classes/classDeclarations/classWithAbstractMethods.ts diff --git a/tests/cases/conformance/classes/classDeclarations/classAbstractConstructor.ts b/tests/cases/conformance/classes/classDeclarations/classAbstractConstructor.ts new file mode 100644 index 00000000000..f53b1a3a937 --- /dev/null +++ b/tests/cases/conformance/classes/classDeclarations/classAbstractConstructor.ts @@ -0,0 +1,3 @@ +abstract class A { + abstract constructor() {} +} \ No newline at end of file diff --git a/tests/cases/conformance/classes/classDeclarations/classAbstractDeclarations.d.ts b/tests/cases/conformance/classes/classDeclarations/classAbstractDeclarations.d.ts new file mode 100644 index 00000000000..14dfd1d86d8 --- /dev/null +++ b/tests/cases/conformance/classes/classDeclarations/classAbstractDeclarations.d.ts @@ -0,0 +1,25 @@ +declare abstract class A { + abstract constructor() {} +} + +declare abstract class AA { + abstract foo(); +} + +declare abstract class BB extends AA {} + +declare class CC extends AA {} + +declare class DD extends BB {} + +declare abstract class EE extends BB {} + +declare class FF extends CC {} + +declare abstract class GG extends CC {} + +declare abstract class AAA {} + +declare abstract class BBB extends AAA {} + +declare class CCC extends AAA {} \ No newline at end of file diff --git a/tests/cases/conformance/classes/classDeclarations/classAbstractInheritance.ts b/tests/cases/conformance/classes/classDeclarations/classAbstractInheritance.ts new file mode 100644 index 00000000000..ced15607f84 --- /dev/null +++ b/tests/cases/conformance/classes/classDeclarations/classAbstractInheritance.ts @@ -0,0 +1,21 @@ +abstract class A {} + +abstract class B extends A {} + +class C extends A {} + +abstract class AA { + abstract foo(); +} + +abstract class BB extends AA {} + +class CC extends AA {} + +class DD extends BB {} + +abstract class EE extends BB {} + +class FF extends CC {} + +abstract class GG extends CC {} \ No newline at end of file diff --git a/tests/cases/conformance/classes/classDeclarations/classAbstractMethodWithImplementation.ts b/tests/cases/conformance/classes/classDeclarations/classAbstractMethodWithImplementation.ts new file mode 100644 index 00000000000..432613ca04b --- /dev/null +++ b/tests/cases/conformance/classes/classDeclarations/classAbstractMethodWithImplementation.ts @@ -0,0 +1,3 @@ +abstract class A { + abstract foo() {} +} \ No newline at end of file diff --git a/tests/cases/conformance/classes/classDeclarations/classAbstractMixedWithModifiers.ts b/tests/cases/conformance/classes/classDeclarations/classAbstractMixedWithModifiers.ts new file mode 100644 index 00000000000..d3c2546ac90 --- /dev/null +++ b/tests/cases/conformance/classes/classDeclarations/classAbstractMixedWithModifiers.ts @@ -0,0 +1,15 @@ +abstract class A { + abstract foo_a(); + + public abstract foo_b(); + protected abstract foo_c(); + private abstract foo_d(); + + abstract public foo_bb(); + abstract protected foo_cc(); + abstract private foo_dd(); + + abstract static foo_d(); + + static abstract foo_e(); +} \ No newline at end of file diff --git a/tests/cases/conformance/classes/classDeclarations/classAbstractOverloads.ts b/tests/cases/conformance/classes/classDeclarations/classAbstractOverloads.ts new file mode 100644 index 00000000000..c30a03f8217 --- /dev/null +++ b/tests/cases/conformance/classes/classDeclarations/classAbstractOverloads.ts @@ -0,0 +1,24 @@ +abstract class A { + abstract foo(); + abstract foo() : number; + abstract foo(); + + abstract bar(); + bar(); + abstract bar(); + + abstract baz(); + baz(); + abstract baz(); + baz() {} + + qux(); +} + +abstract class B { + abstract foo() : number; + abstract foo(); + x : number; + abstract foo(); + abstract foo(); +} \ No newline at end of file diff --git a/tests/cases/conformance/classes/classDeclarations/classAbstractProperties.ts b/tests/cases/conformance/classes/classDeclarations/classAbstractProperties.ts new file mode 100644 index 00000000000..3349e878e03 --- /dev/null +++ b/tests/cases/conformance/classes/classDeclarations/classAbstractProperties.ts @@ -0,0 +1,11 @@ +abstract class A { + abstract x : number; + public abstract y : number; + protected abstract z : number; + private abstract w : number; + + abstract foo_x() : number; + public abstract foo_y() : number; + protected abstract foo_z() : number; + private abstract foo_w() : number; +} \ No newline at end of file diff --git a/tests/cases/conformance/classes/classDeclarations/classAbstractSuperCalls.ts b/tests/cases/conformance/classes/classDeclarations/classAbstractSuperCalls.ts new file mode 100644 index 00000000000..90fdc5cc389 --- /dev/null +++ b/tests/cases/conformance/classes/classDeclarations/classAbstractSuperCalls.ts @@ -0,0 +1,26 @@ + +class A { + foo() { return 1; } +} + +abstract class B extends A { + abstract foo(); + bar() { super.foo(); } + baz() { return this.foo; } +} + +class C extends B { + foo() { return 2; } + qux() { return super.foo(); } // error, super is abstract + norf() { return super.bar(); } +} + +class AA { + foo() { return 1; } + bar() { return this.foo(); } +} + +abstract class BB extends AA { + abstract foo(); + // inherits bar. But BB is abstract, so this is OK. +} diff --git a/tests/cases/conformance/classes/classDeclarations/classInstantiatingAbstractClass.ts b/tests/cases/conformance/classes/classDeclarations/classInstantiatingAbstractClass.ts new file mode 100644 index 00000000000..beb44cc7894 --- /dev/null +++ b/tests/cases/conformance/classes/classDeclarations/classInstantiatingAbstractClass.ts @@ -0,0 +1,18 @@ + +abstract class A {} + +class B extends A {} + +abstract class C extends B {} + +new A; +new B; +new C; + +var a : A; +var b : B; +var c : C; + +a = new B; +b = new B; +c = new B; \ No newline at end of file diff --git a/tests/cases/conformance/classes/classDeclarations/classWithAbstractMethods.ts b/tests/cases/conformance/classes/classDeclarations/classWithAbstractMethods.ts new file mode 100644 index 00000000000..e333811c67f --- /dev/null +++ b/tests/cases/conformance/classes/classDeclarations/classWithAbstractMethods.ts @@ -0,0 +1,27 @@ +class A { + abstract foo(); +} + +class B extends A {} + +abstract class C extends A {} + +class D extends A { + foo() {} +} + +abstract class E extends A { + foo() {} +} + +abstract class AA { + abstract foo(); +} + +class BB extends AA {} + +abstract class CC extends AA {} + +class DD extends AA { + foo() {} +} \ No newline at end of file