Discover Converter capabilities and validate shared binding drafts
This commit is contained in:
+19
@@ -0,0 +1,19 @@
|
||||
package fixture.components;
|
||||
|
||||
@de.neitzel.fxdesigner.preview.ConverterCapabilities(
|
||||
modelType = Integer.class,
|
||||
controlType = String.class,
|
||||
reverse = true)
|
||||
public class BrokenReverseConverter implements de.neitzel.fx.view.Converter {
|
||||
static {
|
||||
System.setProperty("fixture.converter.initialized", "BrokenReverseConverter");
|
||||
}
|
||||
|
||||
public BrokenReverseConverter() {
|
||||
throw new AssertionError("Discovery must not construct Converters");
|
||||
}
|
||||
|
||||
public Object toControlValue(Object value) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package fixture.components;
|
||||
|
||||
@de.neitzel.fxdesigner.preview.ConverterCapabilities(
|
||||
modelType = Integer.class,
|
||||
controlType = String.class)
|
||||
public class ForwardRankConverter implements de.neitzel.fx.view.Converter {
|
||||
static {
|
||||
System.setProperty("fixture.converter.initialized", "ForwardRankConverter");
|
||||
}
|
||||
|
||||
public ForwardRankConverter() {
|
||||
throw new AssertionError("Discovery must not construct Converters");
|
||||
}
|
||||
|
||||
public Object toControlValue(Object value) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package fixture.components;
|
||||
|
||||
public class LegacyRankConverter extends RankConverter {
|
||||
static {
|
||||
System.setProperty("fixture.converter.initialized", "LegacyRankConverter");
|
||||
}
|
||||
|
||||
public LegacyRankConverter() {
|
||||
throw new AssertionError("Discovery must not construct Converters");
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package fixture.components;
|
||||
|
||||
@de.neitzel.fxdesigner.preview.ConverterCapabilities(
|
||||
modelType = String.class,
|
||||
controlType = String.class,
|
||||
reverse = true)
|
||||
public class NameConverterA extends RankConverter {
|
||||
static {
|
||||
System.setProperty("fixture.converter.initialized", "NameConverterA");
|
||||
}
|
||||
|
||||
public NameConverterA() {
|
||||
throw new AssertionError("Discovery must not construct Converters");
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package fixture.components;
|
||||
|
||||
@de.neitzel.fxdesigner.preview.ConverterCapabilities(
|
||||
modelType = String.class,
|
||||
controlType = String.class,
|
||||
reverse = true)
|
||||
public class NameConverterB extends RankConverter {
|
||||
static {
|
||||
System.setProperty("fixture.converter.initialized", "NameConverterB");
|
||||
}
|
||||
|
||||
public NameConverterB() {
|
||||
throw new AssertionError("Discovery must not construct Converters");
|
||||
}
|
||||
}
|
||||
+4
@@ -1,5 +1,9 @@
|
||||
package fixture.components;
|
||||
|
||||
@de.neitzel.fxdesigner.preview.ConverterCapabilities(
|
||||
modelType = Integer.class,
|
||||
controlType = String.class,
|
||||
reverse = true)
|
||||
@jakarta.inject.Singleton
|
||||
public class RankConverter implements de.neitzel.fx.view.Converter {
|
||||
public Object toControlValue(Object value) {
|
||||
|
||||
+39
@@ -90,6 +90,45 @@ public final class PreviewChecks {
|
||||
check(
|
||||
System.getProperty("fixture.provider.initialized") == null,
|
||||
"Discovery initialized provider");
|
||||
try (var in = loader.getResourceAsStream("fixture/components/Full.fxml")) {
|
||||
String full = new String(in.readAllBytes(), java.nio.charset.StandardCharsets.UTF_8);
|
||||
var details = BindingDiscovery.inspect(full, "rank", "both", "rankInput", "text", loader);
|
||||
check(
|
||||
details.problems().isEmpty(),
|
||||
"Valid converter binding rejected: " + details.problems());
|
||||
for (var expected :
|
||||
java.util.Map.of(
|
||||
"RankConverter",
|
||||
"COMPATIBLE",
|
||||
"LegacyRankConverter",
|
||||
"UNVERIFIED",
|
||||
"BrokenReverseConverter",
|
||||
"ERROR",
|
||||
"ForwardRankConverter",
|
||||
"INCOMPATIBLE")
|
||||
.entrySet())
|
||||
check(
|
||||
details.converters().stream()
|
||||
.anyMatch(
|
||||
c ->
|
||||
c.name().equals("fixture.components." + expected.getKey())
|
||||
&& c.status().equals(expected.getValue())),
|
||||
"Converter status: " + expected);
|
||||
var invalid =
|
||||
BindingDiscovery.inspect(
|
||||
full.replace(
|
||||
"converter=\"fixture.components.RankConverter\"",
|
||||
"converter=\"fixture.components.BrokenReverseConverter\""),
|
||||
"rank",
|
||||
"both",
|
||||
loader);
|
||||
check(
|
||||
invalid.problems().stream().anyMatch(v -> v.severity().equals("ERROR")),
|
||||
"Invalid reverse metadata accepted");
|
||||
check(
|
||||
System.getProperty("fixture.converter.initialized") == null,
|
||||
"Discovery initialized Converter");
|
||||
}
|
||||
System.out.println("PASS bindings " + checks);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user