mirror of
https://github.com/aNNiMON/HotaruFX.git
synced 2024-09-19 14:14:21 +03:00
Add node properties type checking test
This commit is contained in:
parent
029fc652ae
commit
14c792ee5e
@ -16,5 +16,6 @@ dependencies {
|
|||||||
testRuntime 'org.junit.platform:junit-platform-launcher:1.0.0-RC2'
|
testRuntime 'org.junit.platform:junit-platform-launcher:1.0.0-RC2'
|
||||||
testRuntime 'org.junit.jupiter:junit-jupiter-engine:5.0.0-RC2'
|
testRuntime 'org.junit.jupiter:junit-jupiter-engine:5.0.0-RC2'
|
||||||
testRuntime 'org.junit.vintage:junit-vintage-engine:4.12.0-RC2'
|
testRuntime 'org.junit.vintage:junit-vintage-engine:4.12.0-RC2'
|
||||||
|
testRuntime 'org.junit.jupiter:junit-jupiter-params:5.0.0-RC2'
|
||||||
testImplementation 'org.hamcrest:hamcrest-library:1.3'
|
testImplementation 'org.hamcrest:hamcrest-library:1.3'
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,94 @@
|
|||||||
|
package com.annimon.hotarufx.visual.objects;
|
||||||
|
|
||||||
|
import com.annimon.hotarufx.visual.Property;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
import javafx.beans.value.WritableValue;
|
||||||
|
import javafx.scene.Node;
|
||||||
|
import javafx.scene.paint.Color;
|
||||||
|
import javafx.scene.paint.Paint;
|
||||||
|
import javafx.scene.text.Font;
|
||||||
|
import javafx.scene.text.Text;
|
||||||
|
import lombok.val;
|
||||||
|
import org.junit.jupiter.api.DisplayName;
|
||||||
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
|
import org.junit.jupiter.params.provider.Arguments;
|
||||||
|
import org.junit.jupiter.params.provider.MethodSource;
|
||||||
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
|
import static org.hamcrest.Matchers.is;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
|
|
||||||
|
class NodePropertiesTypeTest {
|
||||||
|
|
||||||
|
static Stream<Arguments> nodeProvider() {
|
||||||
|
return Stream.of(
|
||||||
|
new ArcNode(),
|
||||||
|
new CircleNode(),
|
||||||
|
new EllipseNode(),
|
||||||
|
new GroupNode(Collections.singletonList(new TextNode())),
|
||||||
|
new LineNode(),
|
||||||
|
new PolygonNode(Arrays.asList(0d, 0d, 20d, 20d, 30d, 30d)),
|
||||||
|
new PolylineNode(Arrays.asList(0d, 0d, 20d, 20d, 30d, 30d, 0d, 0d)),
|
||||||
|
new RectangleNode(),
|
||||||
|
new SVGPathNode(),
|
||||||
|
new TextNode()
|
||||||
|
).flatMap(node -> node.propertyBindings()
|
||||||
|
.entrySet()
|
||||||
|
.stream()
|
||||||
|
.map(entry -> Arguments.of(
|
||||||
|
node,
|
||||||
|
entry.getKey(),
|
||||||
|
entry.getValue(),
|
||||||
|
node.getClass().getSimpleName()
|
||||||
|
))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DisplayName("Node properties type checking")
|
||||||
|
@ParameterizedTest(name = "{3}: {1}")
|
||||||
|
@MethodSource("nodeProvider")
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
void testNode(ObjectNode node, String name, Property property, String nodeName) {
|
||||||
|
try {
|
||||||
|
val value = property.getProperty().get().getProperty();
|
||||||
|
switch (property.getType()) {
|
||||||
|
case BOOLEAN:
|
||||||
|
val booleanValue = (WritableValue<Boolean>) value;
|
||||||
|
booleanValue.setValue(true);
|
||||||
|
assertTrue(booleanValue.getValue());
|
||||||
|
break;
|
||||||
|
case NUMBER:
|
||||||
|
val numberValue = (WritableValue<Number>) value;
|
||||||
|
numberValue.setValue(2);
|
||||||
|
assertThat(numberValue.getValue().intValue(), is(2));
|
||||||
|
break;
|
||||||
|
case STRING:
|
||||||
|
val stringValue = (WritableValue<String>) value;
|
||||||
|
stringValue.setValue("0");
|
||||||
|
assertThat(stringValue.getValue(), is("0"));
|
||||||
|
break;
|
||||||
|
case NODE:
|
||||||
|
case CLIP_NODE:
|
||||||
|
val nodeValue = (WritableValue<Node>) value;
|
||||||
|
nodeValue.setValue(new Text("test"));
|
||||||
|
assertThat(((Text) nodeValue.getValue()).getText(), is("test"));
|
||||||
|
break;
|
||||||
|
case PAINT:
|
||||||
|
val paintValue = (WritableValue<Paint>) value;
|
||||||
|
paintValue.setValue(Color.BLUE);
|
||||||
|
assertThat(paintValue.getValue(), is(Color.BLUE));
|
||||||
|
break;
|
||||||
|
case FONT:
|
||||||
|
val fontValue = (WritableValue<Font>) value;
|
||||||
|
fontValue.setValue(Font.getDefault());
|
||||||
|
assertThat(fontValue.getValue().getFamily(), is(Font.getDefault().getFamily()));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
fail(node.getClass().getSimpleName() + ", " + name, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user