Compare commits
4 Commits
patternMat
...
master
Author | SHA1 | Date | |
---|---|---|---|
1391206dfe | |||
659bf6b500 | |||
33ed22c06a | |||
70f7857661 |
@ -15,7 +15,7 @@ jobs:
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '22'
|
||||
java-version: '23'
|
||||
cache: 'maven'
|
||||
- name: Compile project
|
||||
run: |
|
||||
|
@ -303,7 +303,7 @@ public class TestComplete {
|
||||
var result = mul.invoke(instanceOfClass_s1, instanceOfClass_s2);
|
||||
System.out.println(instanceOfClass_s1.toString() + " * " + instanceOfClass_s2.toString() + " = " + result.toString());
|
||||
|
||||
assertEquals(result, 8);
|
||||
assertEquals(8, result);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -444,8 +444,8 @@ public class TestComplete {
|
||||
var O = Arrays.stream(typeParaTypes).filter(t -> t.equals(paraTypes[0])).findFirst().get();
|
||||
var N2 = Arrays.stream(typeParaTypes).filter(t -> t.equals(paraTypes[1])).findFirst().get();
|
||||
assertEquals(N, N2);
|
||||
assertEquals(N.getBounds()[0], Object.class);
|
||||
assertEquals(O.getBounds()[0], Object.class);
|
||||
assertEquals(Object.class, N.getBounds()[0]);
|
||||
assertEquals(Object.class, O.getBounds()[0]);
|
||||
|
||||
var m2 = tph4.getDeclaredMethod("m2", Object.class);
|
||||
|
||||
@ -500,8 +500,8 @@ public class TestComplete {
|
||||
var P = Arrays.stream(typeParaTypes).filter(t -> t.equals(paraTypes[0])).findFirst().get();
|
||||
var O = Arrays.stream(typeParaTypes).filter(t -> t.equals(paraTypes[1])).findFirst().get();
|
||||
|
||||
assertEquals(P.getBounds()[0], Object.class);
|
||||
assertEquals(O.getBounds()[0], Object.class);
|
||||
assertEquals(Object.class, P.getBounds()[0]);
|
||||
assertEquals(Object.class, O.getBounds()[0]);
|
||||
|
||||
var m2 = tph5.getDeclaredMethod("m2", Object.class);
|
||||
|
||||
@ -605,7 +605,7 @@ public class TestComplete {
|
||||
var fac1 = classFiles.get("Fac1");
|
||||
var instance = fac1.getDeclaredConstructor().newInstance();
|
||||
var fac = fac1.getDeclaredMethod("fac", Integer.class);
|
||||
assertEquals(fac.invoke(instance, 10), 3628800);
|
||||
assertEquals(3628800, fac.invoke(instance, 10));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -676,16 +676,16 @@ public class TestComplete {
|
||||
var r2 = ctor.newInstance(10, 20f);
|
||||
var r3 = ctor.newInstance(10, r1);
|
||||
|
||||
assertEquals(swtch.invoke(instance, r1), 30);
|
||||
assertEquals(swtch.invoke(instance, r2), 20);
|
||||
assertEquals(swtch.invoke(instance, r3), 40);
|
||||
assertEquals(swtch.invoke(instance, 50), 50);
|
||||
assertEquals(30, swtch.invoke(instance, r1));
|
||||
assertEquals(20, swtch.invoke(instance, r2));
|
||||
assertEquals(40, swtch.invoke(instance, r3));
|
||||
assertEquals(50, swtch.invoke(instance, 50));
|
||||
try {
|
||||
assertEquals(swtch.invoke(instance, "Some string"), 0);
|
||||
assertEquals(0, swtch.invoke(instance, "Some string"));
|
||||
fail("No assertion thrown!");
|
||||
} catch (InvocationTargetException exception) {
|
||||
assertTrue(exception.getCause() instanceof IllegalArgumentException);
|
||||
assertEquals(exception.getCause().getMessage(), "Unhandled case value");
|
||||
assertEquals("Unhandled case value", exception.getCause().getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@ -702,7 +702,7 @@ public class TestComplete {
|
||||
var r1 = ctor.newInstance("asd", "asb");
|
||||
|
||||
|
||||
assertEquals(swtch.invoke(instance, r1), "asd");
|
||||
assertEquals("asd", swtch.invoke(instance, r1));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -753,8 +753,8 @@ public class TestComplete {
|
||||
var r2 = ctor.newInstance(1, clazzNumber.getConstructor().newInstance());
|
||||
|
||||
|
||||
assertEquals(swtch.invoke(instance, r1), "Second Element is a Text");
|
||||
assertEquals(swtch.invoke(instance, r2), "Second Element is a Number");
|
||||
assertEquals("Second Element is a Text", swtch.invoke(instance, r1));
|
||||
assertEquals("Second Element is a Number", swtch.invoke(instance, r2));
|
||||
}
|
||||
@Test
|
||||
public void testSwitchListRecord() throws Exception {
|
||||
@ -776,10 +776,10 @@ public class TestComplete {
|
||||
|
||||
|
||||
var listWithMoreThanOneElement = constructorLinkedElem.newInstance(5, constructorLinkedElem.newInstance(1, constructorElem.newInstance(5)));
|
||||
assertEquals(swtch.invoke(instance, listWithMoreThanOneElement), 11);
|
||||
assertEquals(11, swtch.invoke(instance, listWithMoreThanOneElement));
|
||||
|
||||
var listWithOneElement = constructorLinkedElem.newInstance(5, constructorElem.newInstance(5));
|
||||
assertEquals(swtch.invoke(instance, listWithOneElement), 10);
|
||||
assertEquals(10, swtch.invoke(instance, listWithOneElement));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -795,9 +795,9 @@ public class TestComplete {
|
||||
var r2 = ctor.newInstance(20);
|
||||
var r3 = ctor.newInstance(30);
|
||||
|
||||
assertEquals(m.invoke(instance, r1), 1);
|
||||
assertEquals(m.invoke(instance, r2), 2);
|
||||
assertEquals(m.invoke(instance, r3), 3);
|
||||
assertEquals(1, m.invoke(instance, r1));
|
||||
assertEquals(2, m.invoke(instance, r2));
|
||||
assertEquals(3, m.invoke(instance, r3));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -820,10 +820,10 @@ public class TestComplete {
|
||||
|
||||
|
||||
var listWithMoreThanOneElement = constructorLinkedElem.newInstance(5, constructorLinkedElem.newInstance(1, constructorElem.newInstance(5)));
|
||||
assertEquals(swtch.invoke(instance, listWithMoreThanOneElement), 5);
|
||||
assertEquals(5, swtch.invoke(instance, listWithMoreThanOneElement));
|
||||
|
||||
var listWithOneElement = constructorLinkedElem.newInstance(5, constructorElem.newInstance(5));
|
||||
assertEquals(swtch.invoke(instance, listWithOneElement), 5);
|
||||
assertEquals(5, swtch.invoke(instance, listWithOneElement));
|
||||
}
|
||||
|
||||
|
||||
@ -835,6 +835,7 @@ public class TestComplete {
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
}
|
||||
|
||||
@Ignore("Not implemented")
|
||||
@Test
|
||||
public void testStringSwitch() throws Exception {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "SwitchString.jav");
|
||||
@ -842,11 +843,11 @@ public class TestComplete {
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
var main = clazz.getDeclaredMethod("main", String.class);
|
||||
|
||||
assertEquals(main.invoke(instance, "AaAaAa"), 1);
|
||||
assertEquals(main.invoke(instance, "AaAaBB"), 2);
|
||||
assertEquals(main.invoke(instance, "test"), 3);
|
||||
assertEquals(main.invoke(instance, "TEST"), 3);
|
||||
assertEquals(main.invoke(instance, "awawa"), 4);
|
||||
assertEquals(1, main.invoke(instance, "AaAaAa"));
|
||||
assertEquals(2, main.invoke(instance, "AaAaBB"));
|
||||
assertEquals(3, main.invoke(instance, "test"));
|
||||
assertEquals(3, main.invoke(instance, "TEST"));
|
||||
assertEquals(4, main.invoke(instance, "awawa"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -856,6 +857,7 @@ public class TestComplete {
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
}
|
||||
|
||||
@Ignore("Not implemented")
|
||||
@Test
|
||||
public void testOverloadPattern() throws Exception {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "OverloadPattern.jav");
|
||||
@ -870,17 +872,18 @@ public class TestComplete {
|
||||
var ptInt = rec.getDeclaredConstructor(Number.class, Number.class).newInstance(1, 2);
|
||||
var ptFlt = rec.getDeclaredConstructor(Number.class, Number.class).newInstance(1f, 2f);
|
||||
|
||||
assertEquals(m1.invoke(instance, ptInt, ptFlt), 1);
|
||||
assertEquals(m1.invoke(instance, ptInt, ptInt), 2);
|
||||
assertEquals(m1.invoke(instance, ptFlt, ptInt), 3);
|
||||
assertEquals(m1.invoke(instance, ptFlt, ptFlt), 4);
|
||||
assertEquals(1, m1.invoke(instance, ptInt, ptFlt));
|
||||
assertEquals(2, m1.invoke(instance, ptInt, ptInt));
|
||||
assertEquals(3, m1.invoke(instance, ptFlt, ptInt));
|
||||
assertEquals(4, m1.invoke(instance, ptFlt, ptFlt));
|
||||
|
||||
assertEquals(m2.invoke(instance, ptInt), 5);
|
||||
assertEquals(m2.invoke(instance, ptFlt), 6);
|
||||
assertEquals(5, m2.invoke(instance, ptInt));
|
||||
assertEquals(6, m2.invoke(instance, ptFlt));
|
||||
|
||||
assertEquals(m3.invoke(instance, 10), 10);
|
||||
assertEquals(10, m3.invoke(instance, 10));
|
||||
}
|
||||
|
||||
@Ignore("Not implemented")
|
||||
@Test
|
||||
public void testOverloadNestedPattern() throws Exception {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "OverloadNestedPattern.jav");
|
||||
@ -893,16 +896,16 @@ public class TestComplete {
|
||||
var r2 = ctor.newInstance(r1);
|
||||
|
||||
var m = clazz.getDeclaredMethod("m", rec, rec);
|
||||
assertEquals(m.invoke(instance, r2, r1), 1);
|
||||
assertEquals(1, m.invoke(instance, r2, r1));
|
||||
|
||||
var r3 = ctor.newInstance(2f);
|
||||
var r4 = ctor.newInstance(r3);
|
||||
assertEquals(m.invoke(instance, r4, r3), 2);
|
||||
assertEquals(2, m.invoke(instance, r4, r3));
|
||||
|
||||
assertEquals(m.invoke(instance, r1, r1), 3);
|
||||
assertEquals(3, m.invoke(instance, r1, r1));
|
||||
}
|
||||
|
||||
//@Ignore("Not implemented")
|
||||
@Ignore("Not implemented")
|
||||
@Test
|
||||
public void testPatternMatchingHaskellStyle() throws Exception {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "PatternMatchingHaskellStyle.jav");
|
||||
@ -920,11 +923,12 @@ public class TestComplete {
|
||||
var x = rctor.newInstance(rctor.newInstance(0, rctor.newInstance(0, r2ctor.newInstance(0))), r2ctor.newInstance(0));
|
||||
var y = rctor.newInstance(r2ctor.newInstance(0), r2ctor.newInstance(0));
|
||||
|
||||
assertEquals(m.invoke(instance, x, y), null);
|
||||
assertEquals(m.invoke(instance, y, y), null);
|
||||
assertNull(m.invoke(instance, x, y));
|
||||
assertNull(m.invoke(instance, y, y));
|
||||
|
||||
}
|
||||
|
||||
@Ignore("Not implemented")
|
||||
@Test
|
||||
public void testPatternMatchingListAppend() throws Exception {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "PatternMatchingListAppend.jav");
|
||||
@ -959,8 +963,8 @@ public class TestComplete {
|
||||
var x = rctor.newInstance(10);
|
||||
var d = rctor.newInstance(20.0);
|
||||
|
||||
assertEquals(m.invoke(instance, x, 0), 50);
|
||||
assertEquals(m.invoke(instance, d, 0), 40.0);
|
||||
assertEquals(50, m.invoke(instance, x, 0));
|
||||
assertEquals(40.0, m.invoke(instance, d, 0));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -975,7 +979,7 @@ public class TestComplete {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "Static.jav");
|
||||
var clazz = classFiles.get("Static");
|
||||
var m = clazz.getDeclaredMethod("m");
|
||||
assertEquals(m.invoke(null), 50);
|
||||
assertEquals(50, m.invoke(null));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -984,7 +988,7 @@ public class TestComplete {
|
||||
var clazz = classFiles.get("For");
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
var m = clazz.getDeclaredMethod("m", Integer.class);
|
||||
assertEquals(m.invoke(instance, 10), 60);
|
||||
assertEquals(60, m.invoke(instance, 10));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -993,7 +997,7 @@ public class TestComplete {
|
||||
var clazz = classFiles.get("ForEach");
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
var m = clazz.getDeclaredMethod("m");
|
||||
assertEquals(m.invoke(instance), 6);
|
||||
assertEquals(6, m.invoke(instance));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1011,7 +1015,7 @@ public class TestComplete {
|
||||
var clazz = classFiles.get("FunctionalInterface");
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
var m = clazz.getDeclaredMethod("m");
|
||||
assertEquals(m.invoke(instance), 200);
|
||||
assertEquals(200, m.invoke(instance));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1020,7 +1024,7 @@ public class TestComplete {
|
||||
var clazz = classFiles.get("Chain");
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
var m = clazz.getDeclaredMethod("m");
|
||||
assertEquals(m.invoke(instance), 5);
|
||||
assertEquals(5, m.invoke(instance));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1073,9 +1077,9 @@ public class TestComplete {
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
|
||||
assertNull(clazz.getDeclaredMethod("m").invoke(instance));
|
||||
assertEquals(clazz.getDeclaredMethod("m2").invoke(instance), 'C');
|
||||
assertEquals(clazz.getDeclaredMethod("m3").invoke(instance), 10L);
|
||||
assertEquals(clazz.getDeclaredMethod("m4").invoke(instance), 10.5F);
|
||||
assertEquals('C', clazz.getDeclaredMethod("m2").invoke(instance));
|
||||
assertEquals(10L, clazz.getDeclaredMethod("m3").invoke(instance));
|
||||
assertEquals(10.5F, clazz.getDeclaredMethod("m4").invoke(instance));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1083,7 +1087,7 @@ public class TestComplete {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "OLConstructor.jav");
|
||||
var clazz = classFiles.get("Child");
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
assertEquals(clazz.getSuperclass().getDeclaredField("x").get(instance), 3);
|
||||
assertEquals(3, clazz.getSuperclass().getDeclaredField("x").get(instance));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1091,11 +1095,11 @@ public class TestComplete {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "Op1.jav");
|
||||
var clazz = classFiles.get("Op1");
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
assertEquals(clazz.getDeclaredMethod("not").invoke(instance), true);
|
||||
assertEquals(clazz.getDeclaredMethod("or").invoke(instance), 10 | 20);
|
||||
assertEquals(clazz.getDeclaredMethod("and").invoke(instance), 10 & 20);
|
||||
assertEquals(clazz.getDeclaredMethod("xor").invoke(instance), 10 ^ 20);
|
||||
assertEquals(clazz.getDeclaredMethod("mod").invoke(instance), 10 % 2);
|
||||
assertEquals(true, clazz.getDeclaredMethod("not").invoke(instance));
|
||||
assertEquals(10 | 20, clazz.getDeclaredMethod("or").invoke(instance));
|
||||
assertEquals(10 & 20, clazz.getDeclaredMethod("and").invoke(instance));
|
||||
assertEquals(10 ^ 20, clazz.getDeclaredMethod("xor").invoke(instance));
|
||||
assertEquals(10 % 2, clazz.getDeclaredMethod("mod").invoke(instance));
|
||||
}
|
||||
|
||||
@Ignore("Not implemented")
|
||||
@ -1112,18 +1116,18 @@ public class TestComplete {
|
||||
var clazzPublic = classFiles.get("Access");
|
||||
var clazzDefault = classFiles.get("AccessDefault");
|
||||
|
||||
assertEquals(clazzPublic.getModifiers(), Modifier.PUBLIC);
|
||||
assertEquals(clazzDefault.getModifiers(), 0);
|
||||
assertEquals(Modifier.PUBLIC, clazzPublic.getModifiers());
|
||||
assertEquals(0, clazzDefault.getModifiers());
|
||||
|
||||
assertEquals(clazzPublic.getDeclaredMethod("mPublic").getModifiers(), Modifier.PUBLIC);
|
||||
assertEquals(clazzPublic.getDeclaredMethod("mProtected").getModifiers(), Modifier.PROTECTED);
|
||||
assertEquals(clazzPublic.getDeclaredMethod("mDefault").getModifiers(), 0);
|
||||
assertEquals(clazzPublic.getDeclaredMethod("mPrivate").getModifiers(), Modifier.PRIVATE);
|
||||
assertEquals(Modifier.PUBLIC, clazzPublic.getDeclaredMethod("mPublic").getModifiers());
|
||||
assertEquals(Modifier.PROTECTED, clazzPublic.getDeclaredMethod("mProtected").getModifiers());
|
||||
assertEquals(0, clazzPublic.getDeclaredMethod("mDefault").getModifiers());
|
||||
assertEquals(Modifier.PRIVATE, clazzPublic.getDeclaredMethod("mPrivate").getModifiers());
|
||||
|
||||
assertEquals(clazzPublic.getDeclaredField("fPublic").getModifiers(), Modifier.PUBLIC);
|
||||
assertEquals(clazzPublic.getDeclaredField("fProtected").getModifiers(), Modifier.PROTECTED);
|
||||
assertEquals(clazzPublic.getDeclaredField("fDefault").getModifiers(), 0);
|
||||
assertEquals(clazzPublic.getDeclaredField("fPrivate").getModifiers(), Modifier.PRIVATE);
|
||||
assertEquals(Modifier.PUBLIC, clazzPublic.getDeclaredField("fPublic").getModifiers());
|
||||
assertEquals(Modifier.PROTECTED, clazzPublic.getDeclaredField("fProtected").getModifiers());
|
||||
assertEquals(0, clazzPublic.getDeclaredField("fDefault").getModifiers());
|
||||
assertEquals(Modifier.PRIVATE, clazzPublic.getDeclaredField("fPrivate").getModifiers());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1161,7 +1165,7 @@ public class TestComplete {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "Ternary.jav");
|
||||
var clazz = classFiles.get("Ternary");
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
assertEquals(clazz.getDeclaredMethod("main", Integer.class).invoke(instance, 5), "small");
|
||||
assertEquals("small", clazz.getDeclaredMethod("main", Integer.class).invoke(instance, 5));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1169,8 +1173,8 @@ public class TestComplete {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "While.jav");
|
||||
var clazz = classFiles.get("While");
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
assertEquals(clazz.getDeclaredMethod("m", Integer.class).invoke(instance, 5), 5);
|
||||
assertEquals(clazz.getDeclaredMethod("m2").invoke(instance), 10);
|
||||
assertEquals(5, clazz.getDeclaredMethod("m", Integer.class).invoke(instance, 5));
|
||||
assertEquals(10, clazz.getDeclaredMethod("m2").invoke(instance));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1186,7 +1190,7 @@ public class TestComplete {
|
||||
var clazz = classFiles.get("Assign");
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
var m = clazz.getDeclaredMethod("m");
|
||||
assertEquals(m.invoke(instance), 20);
|
||||
assertEquals(20, m.invoke(instance));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1243,9 +1247,9 @@ public class TestComplete {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "Bug295.jav");
|
||||
var clazz = classFiles.get("Bug295");
|
||||
var instance = clazz.getDeclaredConstructor(Integer.class, Integer.class, Integer.class).newInstance(1, 2, 3);
|
||||
assertEquals(clazz.getDeclaredField("a").get(instance), 1);
|
||||
assertEquals(clazz.getDeclaredField("b").get(instance), 2);
|
||||
assertEquals(clazz.getDeclaredField("c").get(instance), 3);
|
||||
assertEquals(1, clazz.getDeclaredField("a").get(instance));
|
||||
assertEquals(2, clazz.getDeclaredField("b").get(instance));
|
||||
assertEquals(3, clazz.getDeclaredField("c").get(instance));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1275,7 +1279,7 @@ public class TestComplete {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "Bug300.jav");
|
||||
var clazz = classFiles.get("Bug300");
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
assertEquals(clazz.getDeclaredMethod("m").invoke(instance), "Base");
|
||||
assertEquals("Base", clazz.getDeclaredMethod("m").invoke(instance));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1320,7 +1324,7 @@ public class TestComplete {
|
||||
var classFiles = generateClassFiles(new ByteArrayClassLoader(), "Bug310.jav");
|
||||
var clazz = classFiles.get("Bug310");
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
assertEquals(clazz.getDeclaredMethod("toString").invoke(instance), "3");
|
||||
assertEquals("3", clazz.getDeclaredMethod("toString").invoke(instance));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Loading…
x
Reference in New Issue
Block a user