< prev index next >
modules/web/src/test/java/test/javafx/scene/web/JavaScriptBridgeTest.java
Print this page
rev 9389 : Add testcase and support java.lang.Number
rev 9675 : 8089842: JavaScript2Java Bridge: A char value cannot be set from JavaScript
@@ -324,10 +324,12 @@
public Double d1; // direct access
public Integer i0; // using setter
public Integer i1; // direct access
public Boolean b0; // using setter
public Boolean b1; // direct access
+ public Character c0; // using setter
+ public Character c1; // direct access
public void setNumberVal(Number n) {
n0 = n;
}
@@ -340,10 +342,14 @@
}
public void setBooleanVal(Boolean b) {
b0 = b;
}
+
+ public void setCharacterVal(Character c) {
+ c0 = c;
+ }
}
public @Test void testMethodCallWithWrapperObjects() {
final WebEngine web = getEngine();
@@ -372,10 +378,47 @@
assertEquals(false, obj.b0.booleanValue());
web.executeScript("obj.b1 = true");
assertEquals(true, obj.b1.booleanValue());
web.executeScript("obj.b1 = false");
assertEquals(false, obj.b1.booleanValue());
+ // Test java.lang.Character
+ web.executeScript("obj.setCharacterVal('o')");
+ assertEquals('o', obj.c0.charValue());
+ web.executeScript("obj.c1 = '1'");
+ assertEquals('1', obj.c1.charValue());
+ });
+ }
+
+ // JDK-8089842
+ public static class CharMember {
+ public char c;
+ }
+
+ public @Test void testJSStringToJavaCharSpecilization() {
+ final WebEngine web = getEngine();
+
+ submit(() -> {
+ CharMember charTest = new CharMember();
+ bind("charTest", charTest);
+ // ascii char
+ web.executeScript("charTest.c = 'o';");
+ assertEquals('o', charTest.c);
+ web.executeScript("charTest.c = undefined;");
+ assertEquals('\0', charTest.c);
+ web.executeScript("charTest.c = '11111111o';");
+ assertEquals('1', charTest.c);
+ web.executeScript("charTest.c = null;");
+ assertEquals('\0', charTest.c);
+ web.executeScript("charTest.c = ' ';");
+ assertEquals(' ', charTest.c);
+ web.executeScript("charTest.c = '';");
+ assertEquals('\0', charTest.c);
+ web.executeScript("charTest.c = 65;");
+ assertEquals('A', charTest.c);
+ // unicode
+ web.executeScript("charTest.c = '\u03A9';");
+ assertEquals('Ω', charTest.c);
});
}
public @Test void testBridgeExplicitOverloading() throws InterruptedException {
final WebEngine web = getEngine();
< prev index next >