/*
* Copyright 2017 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kie.workbench.common.stunner.svg.gen.translator.impl;
import org.kie.workbench.common.stunner.svg.gen.model.StyleDefinition;
import org.kie.workbench.common.stunner.svg.gen.model.TransformDefinition;
import org.kie.workbench.common.stunner.svg.gen.model.ViewRefDefinition;
import org.kie.workbench.common.stunner.svg.gen.model.impl.CircleDefinition;
import org.kie.workbench.common.stunner.svg.gen.model.impl.GroupDefinition;
import org.kie.workbench.common.stunner.svg.gen.model.impl.MultiPathDefinition;
import org.kie.workbench.common.stunner.svg.gen.model.impl.RectDefinition;
import static org.junit.Assert.*;
/**
* Helper class for testing SVG translators.
* It provides the assertions for all SVG attribute values for the elements in
* the svg test-scoped files.
*/
public class SVGTranslationTestAssertions {
public static final String SVG_TEST_PATH = "org/kie/workbench/common/stunner/svg/gen/svg-elements-test.svg";
public static void assertPath(final MultiPathDefinition pathDefinition) {
assertEquals("M150 0 L75 200 L225 200 Z",
pathDefinition.getPath());
assertEquals("p1",
pathDefinition.getId());
assertEquals(1d,
pathDefinition.getAlpha(),
0d);
assertEquals(0d,
pathDefinition.getX(),
0d);
assertEquals(0d,
pathDefinition.getY(),
0d);
final TransformDefinition transformDefinition = pathDefinition.getTransformDefinition();
assertTransformDef(transformDefinition,
0.25d,
0.25d,
10d,
10d);
final StyleDefinition styleDefinition = pathDefinition.getStyleDefinition();
assertStyleDef(styleDefinition,
1d,
"#ff0000",
1d,
"#0000ff",
1d,
2d);
}
public static void assertRectangle(final RectDefinition rectDefinition) {
assertNotNull(rectDefinition);
assertEquals("r1",
rectDefinition.getId());
assertEquals(1d,
rectDefinition.getAlpha(),
0d);
assertEquals(1d,
rectDefinition.getX(),
0d);
assertEquals(2d,
rectDefinition.getY(),
0d);
assertEquals(200d,
rectDefinition.getWidth(),
0d);
assertEquals(230d,
rectDefinition.getHeight(),
0d);
assertEquals(15d,
rectDefinition.getCornerRadius(),
0d);
final TransformDefinition transformDefinition = rectDefinition.getTransformDefinition();
assertTransformDef(transformDefinition,
0.5d,
0.5d,
25d,
30d);
final StyleDefinition styleDefinition = rectDefinition.getStyleDefinition();
assertStyleDef(styleDefinition,
1d,
"#0000ff",
1d,
"#000000",
1d,
3d);
}
public static void assertCircle(final CircleDefinition circleDefinition) {
assertNotNull(circleDefinition);
assertEquals("c1",
circleDefinition.getId());
assertEquals(1d,
circleDefinition.getAlpha(),
0d);
assertEquals(50d,
circleDefinition.getX(),
0d);
assertEquals(51d,
circleDefinition.getY(),
0d);
assertEquals(40d,
circleDefinition.getRadius(),
0d);
final TransformDefinition transformDefinition = circleDefinition.getTransformDefinition();
assertTransformDef(transformDefinition,
0.85d,
0.67d,
4.5d,
2.39d);
final StyleDefinition styleDefinition = circleDefinition.getStyleDefinition();
assertStyleDef(styleDefinition,
1d,
"#ff0000",
1d,
"#ffff00",
1d,
5d);
}
public static void assertGroupRef(final GroupDefinition groupDefinition) {
assertNotNull(groupDefinition);
assertEquals("g1",
groupDefinition.getId());
assertEquals(0d,
groupDefinition.getAlpha(),
0d);
assertEquals(77d,
groupDefinition.getX(),
0d);
assertEquals(88d,
groupDefinition.getY(),
0d);
}
public static void assertViewRef(final ViewRefDefinition viewRefDefinition) {
assertNotNull(viewRefDefinition);
assertEquals("Layer_1",
viewRefDefinition.getViewId());
assertEquals("another-svg.svg",
viewRefDefinition.getViewName());
assertEquals("g1",
viewRefDefinition.getParent());
}
public static void assertStyleDef(final StyleDefinition styleDefinition,
final double alpha,
final String fillColor,
final double fillAlpha,
final String strokeColor,
final double strokeAlpha,
final double strokeWidth) {
final double a = styleDefinition.getAlpha();
final String fc = styleDefinition.getFillColor();
final double fa = styleDefinition.getFillAlpha();
final String sc = styleDefinition.getStrokeColor();
final double sa = styleDefinition.getStrokeAlpha();
final double sw = styleDefinition.getStrokeWidth();
assertEquals(alpha,
a,
0d);
assertEquals(fillColor,
fc);
assertEquals(fillAlpha,
fa,
0d);
assertEquals(strokeColor,
sc);
assertEquals(strokeAlpha,
sa,
0d);
assertEquals(strokeWidth,
sw,
0d);
}
public static void assertTransformDef(final TransformDefinition transformDefinition,
final double scaleX,
final double scaleY,
final double translateX,
final double translateY) {
final double sx = transformDefinition.getScaleX();
final double sy = transformDefinition.getScaleY();
final double tx = transformDefinition.getTranslateX();
final double ty = transformDefinition.getTranslateY();
assertEquals(scaleX,
sx,
0d);
assertEquals(scaleY,
sy,
0d);
assertEquals(translateX,
tx,
0d);
assertEquals(translateY,
ty,
0d);
}
}