NX01: First lehmer dial codes and more kaas odeur numbers things
All checks were successful
Run test asserts / Test-Asserts (push) Successful in 1m23s

This commit is contained in:
Willem Cazander 2026-02-15 17:56:51 +01:00
parent b7c933470b
commit af78169898
92 changed files with 985 additions and 287 deletions

View file

@ -91,11 +91,10 @@ public record NetherToneSlugView(
return buf.toString();
}
public List<Class<?>> toNetherTones(int idx) {
Class<?> qClass = qClass(idx);
public List<Class<?>> toNetherTones() {
List<Class<?>> result = new ArrayList<>(11);
for (int i = 0; i < 11; i++) {
Class<?> subClass = qClass.getPermittedSubclasses()[i];
Class<?> subClass = NetherToneScript.class.getPermittedSubclasses()[i];
Class<?>[] valueClasses = subClass.getPermittedSubclasses();
result.add(switch (i) {
case 0: yield valueClasses[ag1];
@ -108,30 +107,16 @@ public record NetherToneSlugView(
case 7: yield valueClasses[db1];
case 8: yield valueClasses[db2];
case 9: yield valueClasses[db3];
case 10: yield valueClasses[er0w];
default:
throw new IllegalArgumentException("Unexpected value: " + i);
default: yield valueClasses[er0w];
});
}
return result;
}
// TODO: idx = 0 = Q1 = maybe enum
static private Class<?> qClass(int idx) {
if (idx < 0) {
throw new IllegalArgumentException("Negative Q index: " + idx);
}
if (idx >= 8) {
throw new IllegalArgumentException("Outside octal Q space boundry: " + idx);
}
return NetherTone.class.getPermittedSubclasses()[idx];
}
static NetherToneSlugView ofQSluq(int idx, Class<? extends NetherTone> q) {
Class<?> qClass = qClass(idx);
static NetherToneSlugView ofQSluq(Class<? extends NetherToneScript> q) {
int[] d = new int[11];
int dataIdx = 0;
for (Class<?> subClass : qClass.getPermittedSubclasses()) {
for (Class<?> subClass : NetherToneScript.class.getPermittedSubclasses()) {
boolean hasValue = false;
Class<?>[] valueClasses = subClass.getPermittedSubclasses();
for (int i = 0; i < valueClasses.length; i++) {
@ -150,9 +135,8 @@ public record NetherToneSlugView(
return new NetherToneSlugView(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], d[8], d[9], d[10]);
}
static boolean slugPresent(int idx, Class<? extends NetherTone> q) {
Class<?> qClass = qClass(idx);
for (Class<?> subClass : qClass.getPermittedSubclasses()) {
static boolean slugPresent(Class<? extends NetherToneScript> q) {
for (Class<?> subClass : NetherToneScript.class.getPermittedSubclasses()) {
boolean hasValue = false;
for (Class<?> valueClass : subClass.getPermittedSubclasses()) {
if (valueClass.isAssignableFrom(q)) {

View file

@ -70,14 +70,14 @@ public class NetherToneSlugViewTest {
@Test
public void testSlugViewErr() {
Assertions.assertThrows(IllegalArgumentException.class, () -> {
NetherToneSlugView.ofQSluq(0, Q1SlugExampleErr.class);
NetherToneSlugView.ofQSluq(Q1SlugExampleErr.class);
});
Assertions.assertFalse(NetherToneSlugView.slugPresent(0, Q1SlugExampleErr.class));
Assertions.assertFalse(NetherToneSlugView.slugPresent(Q1SlugExampleErr.class));
}
@Test
public void testSlugViewParse() {
NetherToneSlugView slug = NetherToneSlugView.ofQSluq(0, Q1SlugExample.class);
NetherToneSlugView slug = NetherToneSlugView.ofQSluq(Q1SlugExample.class);
Assertions.assertNotNull(slug);
Assertions.assertEquals(0, slug.ag1());
Assertions.assertEquals(1, slug.ag2());
@ -86,9 +86,9 @@ public class NetherToneSlugViewTest {
@Test
public void testSlugViewDecompose() {
NetherToneSlugView slug = NetherToneSlugView.ofQSluq(0, Q1SlugExample.class);
NetherToneSlugView slug = NetherToneSlugView.ofQSluq(Q1SlugExample.class);
Assertions.assertNotNull(slug);
List<Class<?>> result = slug.toNetherTones(0);
List<Class<?>> result = slug.toNetherTones();
Assertions.assertNotNull(result);
Assertions.assertEquals(ᐊᐪᔆAG1.ᐅ00.class, result.get(0));
Assertions.assertEquals(ᐊᐪᔆAG2.ᐅ01.class, result.get(1));