Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions test/integration/decorators.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import { Expect, Test, TestCase } from "alsatian";

import * as util from "../src/util";
const fs = require("fs");

export class DecoratorTests {

// Expect the passed lua string to be equal to the file's contents.
private ExpectEqualToFile(lua: string, path: string) {
const expected = fs.readFileSync(path).toString();
Expect(lua).toBe(expected.trim().split("\r\n").join("\n"));
}

@Test("RegularEnum")
public regularEnum() {
const lua = util.transpileFile("test/integration/testfiles/enum.ts");
this.ExpectEqualToFile(lua, "test/integration/testfiles/enum-expected.lua");
}

@Test("MembersOnlyEnumDecorator")
public membersOnly() {
const lua = util.transpileFile("test/integration/testfiles/enumMembersOnly.ts");
this.ExpectEqualToFile(lua, "test/integration/testfiles/enumMembersOnly-expected.lua");
}

@Test("RegularClassExtend")
public regularClassExtend() {
const lua = util.transpileFile("test/integration/testfiles/class.ts");
this.ExpectEqualToFile(lua, "test/integration/testfiles/class-expected.lua");
}

@Test("PureAbstractClassExtend")
public pureAbstractClassExtend() {
const lua = util.transpileFile("test/integration/testfiles/classPureAbstract.ts");
this.ExpectEqualToFile(lua, "test/integration/testfiles/classPureAbstract-expected.lua");
}

@Test("ExtensionClass")
public extensionClass() {
const lua = util.transpileFile("test/integration/testfiles/classExtension.ts");
this.ExpectEqualToFile(lua, "test/integration/testfiles/classExtension-expected.lua");
}

@Test("RegularNamespace")
public regularNamespace() {
const lua = util.transpileFile("test/integration/testfiles/namespace.ts");
this.ExpectEqualToFile(lua, "test/integration/testfiles/namespace-expected.lua");
}

@Test("PhantomNamespace")
public phantomNamespace() {
const lua = util.transpileFile("test/integration/testfiles/namespacePhantom.ts");
this.ExpectEqualToFile(lua, "test/integration/testfiles/namespacePhantom-expected.lua");
}
}
8 changes: 8 additions & 0 deletions test/integration/testfiles/class-expected.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
ClassB = ClassB or ClassA.new()
ClassB.__index = ClassB
ClassB.__base = ClassA
function ClassB.new(construct, ...)
local instance = setmetatable({}, ClassB)
if construct and ClassB.constructor then ClassB.constructor(instance, ...) end
return instance
end
31 changes: 2 additions & 29 deletions test/integration/testfiles/class.ts
Original file line number Diff line number Diff line change
@@ -1,29 +1,2 @@
class testA {
fieldA: number = 5;
constructor(a: number) {
this.fieldA = a;
}

testMethod(): number {
return this.fieldA;
}
}

class testB extends testA {
fieldB: number;
constructor(a: number, b: number) {
super(a);
this.fieldB = b;
}

mul(): number {
return this.fieldA * this.fieldB;
}
}

declare function print(...args:any[]): void;

let instance = new testB(4, 6);
print(instance.fieldA);
print(instance.fieldB);
print(instance.mul());
declare class ClassA {}
class ClassB extends ClassA {}
2 changes: 2 additions & 0 deletions test/integration/testfiles/classExtension-expected.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
function MyClass.myFunction(self)
end
4 changes: 4 additions & 0 deletions test/integration/testfiles/classExtension.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/** !Extension */
class MyClass {
myFunction() {}
}
7 changes: 7 additions & 0 deletions test/integration/testfiles/classPureAbstract-expected.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
ClassB = ClassB or {}
ClassB.__index = ClassB
function ClassB.new(construct, ...)
local instance = setmetatable({}, ClassB)
if construct and ClassB.constructor then ClassB.constructor(instance, ...) end
return instance
end
3 changes: 3 additions & 0 deletions test/integration/testfiles/classPureAbstract.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/** !PureAbstract */
declare class ClassA {}
class ClassB extends ClassA {}
4 changes: 4 additions & 0 deletions test/integration/testfiles/enum-expected.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
TestEnum={}
TestEnum.val1=0
TestEnum.val2=2
TestEnum.val3=3
5 changes: 5 additions & 0 deletions test/integration/testfiles/enum.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enum TestEnum {
val1 = 0,
val2 = 2,
val3
}
3 changes: 3 additions & 0 deletions test/integration/testfiles/enumMembersOnly-expected.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
val1=0
val2=2
val3=3
6 changes: 6 additions & 0 deletions test/integration/testfiles/enumMembersOnly.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/** !CompileMembersOnly */
enum TestEnum {
val1 = 0,
val2 = 2,
val3
}
6 changes: 6 additions & 0 deletions test/integration/testfiles/namespace-expected.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
myNamespace = myNamespace or {}
do
function nsMember()
end
myNamespace.nsMember = nsMember
end
3 changes: 3 additions & 0 deletions test/integration/testfiles/namespace.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
namespace myNamespace {
function nsMember() {}
}
2 changes: 2 additions & 0 deletions test/integration/testfiles/namespacePhantom-expected.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
function nsMember()
end
4 changes: 4 additions & 0 deletions test/integration/testfiles/namespacePhantom.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/** !Phantom */
namespace myNamespace {
function nsMember() {}
}
99 changes: 0 additions & 99 deletions test/integration/testfiles/test.ts

This file was deleted.

Loading