overload with class param test

This commit is contained in:
Louis Grignon 2018-05-13 21:20:54 +02:00
parent 66760638df
commit e9b4b9c29d
4 changed files with 68 additions and 6 deletions

3
.gitignore vendored
View File

@ -2,4 +2,5 @@
classes/
bin/
transpiler/jsweet-transpiler-2.0.1-SNAPSHOT
core-lib/es6/jsweet-core
core-lib/es5/jsweet-core/
core-lib/es6/jsweet-core/

View File

@ -6,4 +6,4 @@
/js/
/.jsweet/
/bin/
jsweet-transpiler-2.*
jsweet-transpiler-2.*

View File

@ -62,6 +62,7 @@ import source.overload.ConstructorOverloadWithFieldInitializer;
import source.overload.InterfaceInheritance;
import source.overload.LocalVariablesNameCollision;
import source.overload.NonPublicRootMethod;
import source.overload.OverLoadWithClassParam;
import source.overload.Overload;
import source.overload.OverloadInInnerClass;
import source.overload.OverloadWithAbstractClass;
@ -96,9 +97,9 @@ public class OverloadTests extends AbstractTest {
public void testOverload() {
eval((logHandler, result) -> {
logHandler.assertNoProblems();
assertEquals("default1", result.<String> get("res1"));
assertEquals("s11", result.<String> get("res2"));
assertEquals("s22", result.<String> get("res3"));
assertEquals("default1", result.<String>get("res1"));
assertEquals("s11", result.<String>get("res2"));
assertEquals("s22", result.<String>get("res3"));
}, getSourceFile(Overload.class));
}
@ -288,6 +289,19 @@ public class OverloadTests extends AbstractTest {
}, getSourceFile(OverloadWithInterfaces.class));
}
@Test
public void testOverloadWithClassParam() {
eval((logHandler, r) -> {
logHandler.assertNoProblems();
assertEquals("ctor_overload_class;OverLoadWithClassParam;0;0," //
+ "ctor_overload_class;OverLoadWithClassParam;4;0," //
+ "ctor_overload_class;OverLoadWithClassParam;10;100," //
+ "m_overload_class;OverLoadWithClassParam;0;0," //
+ "m_overload_class;OverLoadWithClassParam;4;0," //
+ "m_overload_class;OverLoadWithClassParam;10;100", r.get("trace"));
}, getSourceFile(OverLoadWithClassParam.class));
}
@Test
public void testWithAmbients() {
transpile(ModuleKind.none, (logHandler) -> {
@ -372,5 +386,5 @@ public class OverloadTests extends AbstractTest {
getSourceFile(ImplementationB14.class), //
getSourceFile(ImplementationB15.class));
}
}

View File

@ -0,0 +1,47 @@
package source.overload;
import static jsweet.util.Lang.$export;
import def.js.Array;
public class OverLoadWithClassParam {
static Array<String> trace = new Array<>();
OverLoadWithClassParam(Class clazz) {
this(clazz, 0);
}
OverLoadWithClassParam(Class clazz, int p1) {
this(clazz, p1, 0);
}
OverLoadWithClassParam(Class clazz, int p1, int p2) {
trace.push("ctor_overload_class;" + clazz.getSimpleName() + ";" + p1 + ";" + p2);
}
void m(Class clazz) {
m(clazz, 0);
}
void m(Class clazz, int p1) {
m(clazz, p1, 0);
}
void m(Class clazz, int p1, int p2) {
trace.push("m_overload_class;" + clazz.getSimpleName() + ";" + p1 + ";" + p2);
}
public static void main(String[] args) {
new OverLoadWithClassParam(OverLoadWithClassParam.class);
new OverLoadWithClassParam(OverLoadWithClassParam.class, 4);
OverLoadWithClassParam o = new OverLoadWithClassParam(OverLoadWithClassParam.class, 10, 100);
o.m(OverLoadWithClassParam.class);
o.m(OverLoadWithClassParam.class, 4);
o.m(OverLoadWithClassParam.class, 10, 100);
$export("trace", trace.join(","));
}
}