2025-05-07 21:46:32 +02:00
|
|
|
/*
|
|
|
|
|
* Copyright ©Δ∞ 仙上主天
|
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
|
|
|
|
* that the following conditions are met:
|
|
|
|
|
*
|
|
|
|
|
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
|
|
|
|
* following disclaimer.
|
|
|
|
|
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
|
|
|
|
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
|
|
|
|
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
|
|
|
|
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
|
|
|
|
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
|
|
|
|
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
|
|
|
|
*
|
|
|
|
|
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
|
|
|
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
|
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
|
|
|
|
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
|
|
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
|
|
|
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
|
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
|
|
|
|
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
|
|
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ;
|
|
|
|
|
|
2026-01-22 13:08:16 +01:00
|
|
|
import java.lang.module.ModuleDescriptor;
|
2025-05-07 21:46:32 +02:00
|
|
|
import java.text.NumberFormat;
|
|
|
|
|
import java.text.ParseException;
|
|
|
|
|
import java.util.Locale;
|
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
import java.util.function.IntFunction;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import org.junit.jupiter.api.Assertions;
|
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
|
|
|
|
|
|
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.BãßBȍőnCoffinGhostCharm;
|
|
|
|
|
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.ᐧᣞᣛ.低音ᣟ骨ᣟ棺材ᣟ鬼;
|
|
|
|
|
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.ᐧᣞᣛ.低音ᣟ骨ᣟ棺材ᣟ鬼ᣟ魅力ᣟ鎖;
|
|
|
|
|
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
|
|
|
|
|
|
|
|
|
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
|
|
|
|
public class EclipseTest {
|
|
|
|
|
|
2026-01-22 13:08:16 +01:00
|
|
|
@Test
|
|
|
|
|
public void testChinaDotModVersion() throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException {
|
|
|
|
|
ModuleDescriptor.Version.parse("1.2.3-SNAPSHOT");
|
|
|
|
|
Assertions.assertThrows(IllegalArgumentException.class, () -> {
|
|
|
|
|
ModuleDescriptor.Version.parse("〇一。壬寅。一〄-SNAPSHOT");
|
|
|
|
|
});
|
|
|
|
|
ModuleDescriptor.Version v = ModuleDescriptor.Version.parse("5786.SHEVAT〄.1-SNAPSHOT");
|
|
|
|
|
System.out.println("version=" + v);
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-07 21:46:32 +02:00
|
|
|
// =======================================================
|
|
|
|
|
// Case X: Add @Deprecated on String::codePointAt(int idx)
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testStringLoopFailStrange() {
|
|
|
|
|
String test = "𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡 𑀪𑀸𑀕";
|
|
|
|
|
StringBuilder buf = new StringBuilder();
|
|
|
|
|
for (int i=0;i<test.codePoints().count();i++) {
|
|
|
|
|
int v = test.codePointAt(i); // java docs are lying
|
|
|
|
|
buf.appendCodePoint(v);
|
|
|
|
|
}
|
|
|
|
|
Assertions.assertNotEquals(test, buf.toString());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testStringLoopFailJavaDoc() {
|
|
|
|
|
String test = "𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡 𑀪𑀸𑀕";
|
|
|
|
|
StringBuilder buf = new StringBuilder();
|
|
|
|
|
for (int i=0;i<test.length();i++) { // java docs are lying
|
|
|
|
|
int v = test.codePointAt(i);
|
|
|
|
|
buf.appendCodePoint(v);
|
|
|
|
|
}
|
|
|
|
|
Assertions.assertNotEquals(test, buf.toString());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// =======================================================
|
|
|
|
|
// Case X: Add @Deprecated on String::chatAt(int idx)
|
|
|
|
|
// Case X: Add @Deprecated on Character.class
|
|
|
|
|
// Case X: Add @Deprecated on NumberFormat object because it
|
|
|
|
|
// can parse hindi but the formatter can not format hindi...
|
|
|
|
|
// What kind of idiots are coding the JVM ?
|
|
|
|
|
// mmmm Integer vs int, Yes java is made by a type goats who
|
|
|
|
|
// didn't have the eclipse refactoring tools to rename the
|
|
|
|
|
// java.lang.Integer to java.lang.Int to be correct.
|
|
|
|
|
|
|
|
|
|
static String name = "𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡 𑀪𑀸𑀕";// note: only use String.codePoints().xyz (all other methods are broken)
|
|
|
|
|
static int age = 42;
|
|
|
|
|
static String sal = "४२";
|
|
|
|
|
static NumberFormat hindiFormat = NumberFormat.getInstance(new Locale("hi"));//format does not work
|
|
|
|
|
static String hindiNumber = "०१२३४५६७८९";
|
|
|
|
|
static String brahmiNumber = "𑁦𑁧𑁨𑁩𑁪𑁫𑁬𑁭𑁮𑁯";
|
|
|
|
|
static IntFunction<CharSequence> hindiPrinterErr = v -> {
|
|
|
|
|
return Character.toString(hindiNumber.charAt(v-'0')); // if used with real unicode like brahmi this fails.
|
|
|
|
|
};
|
|
|
|
|
static IntFunction<CharSequence> brahmiPrinter = v -> {
|
|
|
|
|
return new StringBuilder().appendCodePoint(brahmiNumber.codePoints().skip(v-'0').findFirst().getAsInt());
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testHindiSalary() throws ParseException {
|
|
|
|
|
int salary = age * hindiFormat.parse(sal).intValue() * hindiFormat.parse(sal).intValue();
|
|
|
|
|
String buggySalary = Integer.toString(salary).codePoints().mapToObj(hindiPrinterErr).collect(Collectors.joining());
|
|
|
|
|
String realSalary = Integer.toString(salary).codePoints().mapToObj(brahmiPrinter).collect(Collectors.joining());
|
|
|
|
|
Assertions.assertNotNull(buggySalary);
|
|
|
|
|
Assertions.assertNotNull(realSalary);
|
|
|
|
|
String str = String.format("Name=%s;Age=%d;Salary=%s;toThePowerOf=%s", name, age, buggySalary, realSalary);
|
|
|
|
|
System.out.println("Let's talk about Ram:" + str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ===========================================================
|
|
|
|
|
// Case X: SAX error on legal unicode attribute name; publicStringObjectFieldUnicodeᒡᒢᑊᒻᒻᓫᔿ="x4o-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡 𑀪𑀸𑀕"
|
|
|
|
|
//Attribute name "publicStringObjectFieldUnicode" associated with an element type "testBean" must be followed by the ' = ' character.
|
|
|
|
|
//at org.x4o.xml.io.sax.X4OErrorHandler.fatalError(X4OErrorHandler.java:121)
|
|
|
|
|
//at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:181)
|
|
|
|
|
//at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)
|
|
|
|
|
//at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
|
|
|
|
|
//at java.xml/com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1465)
|
|
|
|
|
//at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanAttribute(XMLNSDocumentScannerImpl.java:413)
|
|
|
|
|
//
|
|
|
|
|
// The bug is trigger a few line above 413 in;
|
|
|
|
|
// fEntityScanner.scanQName(fAttributeQName, NameType.ATTRIBUTENAME);
|
|
|
|
|
//
|
|
|
|
|
// The source of the bug is in XMLEntityScanner.java:823
|
|
|
|
|
// char c = fCurrentEntity.ch[fCurrentEntity.position];
|
|
|
|
|
|
|
|
|
|
// ===========================================================
|
|
|
|
|
// Case X: Jvm namespace is unlimited by spec which is bad.
|
|
|
|
|
// Older specs limited to 16 bit value which java does not have.
|
|
|
|
|
// What is the eclipse compiler limit ?
|
|
|
|
|
// And we enlarge it a bit i needed 3 extra glyps to add the
|
|
|
|
|
// Abba father postfix but the eclipse did not write a class file.
|
|
|
|
|
|
|
|
|
|
// Add one char any where to break eclipse compiler
|
|
|
|
|
enum FooBar {
|
|
|
|
|
;
|
|
|
|
|
enum Ιͣ̾ͪ͆̿ͨ͡B̿͆̉̽̎̔ͤͤ̎͗ͫͧͮ̚e̅̂͌̉̎̌ͥ͋͌̑ͥ͋ͬ̅́a͆͗̈ͥͥ̊͋̅̆͑ͩ̓̍̅͊m͒ͨ̿̒̍ͨ̀͊̀ͤ̑̇ͤ̄͝ᴰᴺᴬ {
|
|
|
|
|
;
|
|
|
|
|
interface CLASSLENGᐧ𒊹𒈔𒂝𒅒𒅄𒀰𒀱𒋲𒍟ᐧ𒂔𒈾ᐧ𒀊𒁀抽ᒢᐩᐩ {}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
interface CLASS_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_LENGTH12ᐧ𒊹𒈔𒂝𒅒𒅄𒀰𒀱𒁃ᐧ𒂔𒈾ᐧ𒀊𒁀抽ᒢᐩᐩ {}
|
|
|
|
|
|
|
|
|
|
// ===========================================================
|
|
|
|
|
// Case X: no optional brackets brackets brackets and brackets
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testElseBlockWithoutBrackets() {
|
|
|
|
|
int a = 123;
|
|
|
|
|
int b = 456;
|
|
|
|
|
Assertions.assertNotEquals(a, b);
|
|
|
|
|
if (a != b) {
|
|
|
|
|
Assertions.assertFalse(a == b, "JVM Error");
|
|
|
|
|
} else
|
|
|
|
|
Assertions.fail("Bracket missalign");
|
|
|
|
|
a = b;
|
|
|
|
|
Assertions.assertEquals(a, b);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ===========================================================
|
|
|
|
|
// Case X: Static reference works fine in eclipse compiler;
|
|
|
|
|
//[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:testCompile (default-testCompile) on project bassboon-jppre: Compilation failure: Compilation failure:
|
|
|
|
|
//[ERROR] EclipseTest.java: illegal reference to static field from initializer
|
|
|
|
|
|
|
|
|
|
// remove two comments in runnable and all works fine in eclipse but not on javac
|
|
|
|
|
enum 漢語ʸᴰ {
|
|
|
|
|
// اللهᐧأكبر, // note: needed some hebrew to force rendering any (java) code in arabic
|
|
|
|
|
أَكْبَرײꣻײالله;
|
|
|
|
|
public AtomicInteger boonCntInit = new AtomicInteger();
|
|
|
|
|
private Runnable Г̄Ѫӏ = () -> {
|
|
|
|
|
//漢語ʸᴰ.أَكْبَرײꣻײالله.fun(漢語ʸᴰ.أَكْبَرײꣻײالله).init(漢語ʸᴰ.أَكْبَرײꣻײالله);
|
|
|
|
|
//漢語ʸᴰ.أَكْبَرײꣻײالله.Г̄Ѫӏ = () -> boonCntInit.incrementAndGet();
|
|
|
|
|
};
|
|
|
|
|
private 漢語ʸᴰ() {
|
|
|
|
|
init(this);
|
|
|
|
|
}
|
|
|
|
|
public 漢語ʸᴰ fun(Object x) {
|
|
|
|
|
return this;
|
|
|
|
|
}
|
|
|
|
|
public void init(Object y) {
|
|
|
|
|
Г̄Ѫӏ.run();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ===========================================================
|
|
|
|
|
// Case X: Vai unicode is flagged as illigal immigrant
|
|
|
|
|
|
|
|
|
|
void ꕙꔤ() {} // Vai syllabary
|
|
|
|
|
void ꔀꔁꔂꔃꔄꔅꔆꔇꔈꔉꔊꔋꔌꔍꔎꔏ() {}
|
|
|
|
|
void ꔐꔑꔒꔓꔔꔕꔖꔗꔘꔙꔚꔛꔜꔝꔞꔟ() {}
|
|
|
|
|
void ꔠꔡꔢꔣꔤꔥꔦꔧꔨꔩꔪꔫꔬꔭꔮꔯ() {}
|
|
|
|
|
void ꔰꔱꔲꔳꔴꔵꔶꔷꔸꔹꔺꔻꔼꔽꔾꔿ() {}
|
|
|
|
|
void ꕀꕁꕂꕃꕄꕅꕆꕇꕈꕉꕊꕋꕌꕍꕎꕏ() {}
|
|
|
|
|
void ꕐꕑꕒꕓꕔꕕꕖꕗꕘꕙꕚꕛꕜꕝꕞꕟ() {}
|
|
|
|
|
void ꕠꕡꕢꕣꕤꕥꕦꕧꕨꕩꕪꕫꕬꕭꕮ() {}
|
|
|
|
|
void ꕰꕱꕲꕳꕴꕵꕶꕷꕸꕹꕺꕻꕼꕽꕾꕿ() {}
|
|
|
|
|
void ꖀꖁꖂꖃꖄꖅꖆꖇꖈꖉꖊꖋꖌꖍꖎꖏ() {}
|
|
|
|
|
void ꖐꖑꖒꖓꖔꖕꖖꖗꖘꖙꖚꖛꖜꖝꖞꖟ() {}
|
|
|
|
|
void ꖠꖡꖢꖣꖤꖥꖦꖧꖨꖩꖪꖫꖬꖭꖮꖯ() {}
|
|
|
|
|
void ꖰꖱꖲꖳꖴꖵꖶꖷꖸꖹꖺꖻꖼꖽꖾꖿ() {}
|
|
|
|
|
void ꗀꗁꗂꗃꗄꗅꗆꗇꗈꗉꗊꗋꗌꗍꗎꗏ() {}
|
|
|
|
|
void ꗐꗑꗒꗓꗔꗕꗖꗗꗘꗙꗚꗛꗜꗝꗞꗟ() {}
|
|
|
|
|
void ꗠꗡꗢꗣꗤꗥꗦꗧꗨꗩꗪꗫꗬꗭꗮꗯ() {}
|
|
|
|
|
void ꗰꗱꗲꗳꗴꗵꗶꗷꗸꗹꗺꗻꗼꗽꗾꗿ() {}
|
|
|
|
|
void ꘀꘁꘂꘃꘄꘅꘆꘇꘈꘉꘊꘋꘌ() {}
|
|
|
|
|
//void ꘍꘎꘏() {} // why-java-disallowed ?
|
|
|
|
|
void ꘐꘑꘒꘓꘔꘕꘖꘗꘘꘙꘚꘛꘜꘝꘞꘟ() {}
|
|
|
|
|
//void ꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩() {} // why-java-disallowed ?
|
|
|
|
|
void ꘪꘫ() {}
|
|
|
|
|
Class<?> 𓂺() { return ClassLoader.class; } // egyptian seed function is allowed
|
|
|
|
|
|
|
|
|
|
// ===========================================================
|
|
|
|
|
// Case X: Run javadoc via: mvn javadoc:javadoc
|
|
|
|
|
// Generates 824M of HTML
|
|
|
|
|
|
|
|
|
|
// Error in javadoc in valueOf static method on enums, for example see;
|
|
|
|
|
//static T512ᖟ valueOf(int index) Returns the enum constant of this type with the specified name. <=== FAIL
|
|
|
|
|
//static T512ᖟ valueOf(String name) Returns the enum constant of this type with the specified name. <=== CORRECT
|
|
|
|
|
//static T512ᖟ valueOf(T008ᖟ lower, T008ᖟ middle, T008ᖟ upper)
|
|
|
|
|
//static T512ᖟ valueOf(BaseIteratorX3 values) Returns the enum constant of this type with the specified name. <=== FAIL
|
|
|
|
|
|
|
|
|
|
// Error in letter hair, method name rendering selects font-family: 'DejaVu Sans Mono', monospace;
|
|
|
|
|
// for example on Interface BãßꝐḯŕ₳₮ḕBőatRaiseSail
|
|
|
|
|
// default void rͤͯ̇̿ͮͫa̵̸i̷̡͒͂ͬ́ͦ̓͛̄ͧ͂͊sͥͫͬ͢͡eͧ̓͐̌ͯͯ͆T̨̡̂̒̊͂ͣ̔ͧ̃̚͠he̔Ş̀a̢ͧͫ̑̋ͣ͐̍̉̄ͭ̋ͯ͛͞ī̷ͮ̾̉ͩ̽l̵̏̈́ͨ̾ͯ͡ś̶(BãßBȍőnBőatWindKnots storm, BãßBȍőnBőatWind wind)
|
|
|
|
|
// When the method name is rendered as monospace in javadoc the letter hair breaks.
|
|
|
|
|
|
|
|
|
|
// Because of one line listing of the interfaces large interface trees are unreadable;
|
|
|
|
|
// see LegoBrickStairWay and read the LegoBrickStairWay.LegoᐧTerminatorᐧCurveᐧTaxi, the browser
|
|
|
|
|
// windows needs to be made small to force line wrapping of the following items;
|
|
|
|
|
// - H2 Interface title
|
|
|
|
|
// - All Superinterfaces:
|
|
|
|
|
// - All Known Subinterfaces:
|
|
|
|
|
// - All @Documented annotations + newline after method annotation before method doc
|
|
|
|
|
|
|
|
|
|
// Error if the babel enum (used in annotation) like for example in T002ᖟ is private
|
|
|
|
|
// javadoc fails (also on show private), thus keeping all babel enums protected.
|
|
|
|
|
// privatize T002ᖟ.ₜₓₜName and/or T002ᖟ.ₜₓₜChina and no java doc build possible;
|
|
|
|
|
// [ERROR] Exit code: 1
|
|
|
|
|
// [ERROR] ....T002ᖟ.java:40: error: ₜₓₜName has private access in T002ᖟ
|
|
|
|
|
// [ERROR] @Terminator注(slices = 2, duytsName = T002ᖟ.ₜₓₜName.class, duytsChina = T002ᖟ.ₜₓₜChina.class)
|
|
|
|
|
|
|
|
|
|
// javadoc "CODE access level" filtering options should never have been added to javadoc,
|
|
|
|
|
// but anyway the default must the lowest or "private", as its currently called.
|
|
|
|
|
// (And add access level also to the class H2 title for correctness)
|
|
|
|
|
|
|
|
|
|
// Error unicode is escaped in annotations and rendered like this;
|
|
|
|
|
// @DuytsDocAuthor注(name="\u0644\u0644\u064e\u0651\u0670\u0647\u0650ilL\u05e6\u0633\u064f\u0648", copyright="\u00a9\u0394\u221e \u4ed9\u4e0a\u4e3b\u5929")
|
|
|
|
|
// And repeatable annotation don't line wrap and thus are unreadable see; BãßBȍőnSelfKeenCoinMachine
|
|
|
|
|
// @TasteCakeGutterGlitter注(eat=@FoodGlitter注(postfix="\u1da6\u1da6\u1da6"),taste=@FoodSelect注(burn=CLASS_FINAL,sparklerDeclaringEquals=true,sparklerDeclaring=BãßBȍőn𓄯.class)) @TasteCakeGutterGlitter注(eat=@FoodGlitter注(postfix="\u1da6\u1da6\u1da6\u1da6"),taste=@FoodSelect注(burn=CLASS_FINAL,sparklerDeclaringEquals=true,sparklerDeclaring=BãßBȍőn𓄯.class,sparklerDeclaringNot=true)) @TasteCakeGutterGlitter注(eat=@FoodGlitter注(prefix="\u14a2B\u020d\u0151nD\u024d\u01da\ua7ff"),taste=@FoodSelect注(burn=CLASS_FINAL))
|
|
|
|
|
}
|