diff --git a/core/test/processing/visual/__screenshots__/blend-modes/background-blend-win32.png b/core/test/processing/visual/__screenshots__/blend-modes/background-blend-win32.png new file mode 100644 index 000000000..680839503 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/blend-modes/background-blend-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/blend-modes/hard-light-win32.png b/core/test/processing/visual/__screenshots__/blend-modes/hard-light-win32.png new file mode 100644 index 000000000..884cef932 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/blend-modes/hard-light-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/blend-modes/mode-reset-win32.png b/core/test/processing/visual/__screenshots__/blend-modes/mode-reset-win32.png new file mode 100644 index 000000000..6b4810078 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/blend-modes/mode-reset-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/blend-modes/overlay-win32.png b/core/test/processing/visual/__screenshots__/blend-modes/overlay-win32.png new file mode 100644 index 000000000..e97036a34 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/blend-modes/overlay-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/blend-modes/soft-light-win32.png b/core/test/processing/visual/__screenshots__/blend-modes/soft-light-win32.png new file mode 100644 index 000000000..feaf2d745 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/blend-modes/soft-light-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/arc-center-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/arc-center-win32.png new file mode 100644 index 000000000..124d3c8db Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/arc-center-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/arc-corner-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/arc-corner-win32.png new file mode 100644 index 000000000..124d3c8db Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/arc-corner-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/arc-corners-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/arc-corners-win32.png new file mode 100644 index 000000000..124d3c8db Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/arc-corners-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/arc-negative-dimensions-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/arc-negative-dimensions-win32.png new file mode 100644 index 000000000..a97455efb Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/arc-negative-dimensions-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/arc-radius-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/arc-radius-win32.png new file mode 100644 index 000000000..124d3c8db Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/arc-radius-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/ellipse-center-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/ellipse-center-win32.png new file mode 100644 index 000000000..e0fd115f3 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/ellipse-center-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/ellipse-corner-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/ellipse-corner-win32.png new file mode 100644 index 000000000..e0fd115f3 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/ellipse-corner-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/ellipse-corners-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/ellipse-corners-win32.png new file mode 100644 index 000000000..e0fd115f3 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/ellipse-corners-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/ellipse-negative-dimensions-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/ellipse-negative-dimensions-win32.png new file mode 100644 index 000000000..fe97057fa Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/ellipse-negative-dimensions-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/ellipse-radius-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/ellipse-radius-win32.png new file mode 100644 index 000000000..e0fd115f3 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/ellipse-radius-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/rect-center-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/rect-center-win32.png new file mode 100644 index 000000000..f8b37838e Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/rect-center-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/rect-corner-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/rect-corner-win32.png new file mode 100644 index 000000000..f8b37838e Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/rect-corner-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/rect-corners-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/rect-corners-win32.png new file mode 100644 index 000000000..f8b37838e Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/rect-corners-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/rect-negative-dimensions-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/rect-negative-dimensions-win32.png new file mode 100644 index 000000000..18a0a4a46 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/rect-negative-dimensions-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shape-modes/rect-radius-win32.png b/core/test/processing/visual/__screenshots__/shape-modes/rect-radius-win32.png new file mode 100644 index 000000000..f8b37838e Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shape-modes/rect-radius-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes-3d/box-win32.png b/core/test/processing/visual/__screenshots__/shapes-3d/box-win32.png new file mode 100644 index 000000000..e07fe529c Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes-3d/box-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes-3d/per-vertex-fills-win32.png b/core/test/processing/visual/__screenshots__/shapes-3d/per-vertex-fills-win32.png new file mode 100644 index 000000000..f8e58c38c Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes-3d/per-vertex-fills-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes-3d/per-vertex-strokes-win32.png b/core/test/processing/visual/__screenshots__/shapes-3d/per-vertex-strokes-win32.png new file mode 100644 index 000000000..7270c1532 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes-3d/per-vertex-strokes-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes-3d/sphere-win32.png b/core/test/processing/visual/__screenshots__/shapes-3d/sphere-win32.png new file mode 100644 index 000000000..e07fe529c Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes-3d/sphere-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes-3d/transform-win32.png b/core/test/processing/visual/__screenshots__/shapes-3d/transform-win32.png new file mode 100644 index 000000000..e07fe529c Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes-3d/transform-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes-3d/vertex-coordinates-win32.png b/core/test/processing/visual/__screenshots__/shapes-3d/vertex-coordinates-win32.png new file mode 100644 index 000000000..e07fe529c Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes-3d/vertex-coordinates-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/arc-win32.png b/core/test/processing/visual/__screenshots__/shapes/arc-win32.png new file mode 100644 index 000000000..3b1e137e5 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/arc-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/bezier-curves-win32.png b/core/test/processing/visual/__screenshots__/shapes/bezier-curves-win32.png new file mode 100644 index 000000000..e628f4054 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/bezier-curves-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/closed-curves-win32.png b/core/test/processing/visual/__screenshots__/shapes/closed-curves-win32.png new file mode 100644 index 000000000..272f56575 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/closed-curves-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/closed-polylines-win32.png b/core/test/processing/visual/__screenshots__/shapes/closed-polylines-win32.png new file mode 100644 index 000000000..43a6cc68b Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/closed-polylines-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/color-background-win32.png b/core/test/processing/visual/__screenshots__/shapes/color-background-win32.png new file mode 100644 index 000000000..cbfe0ec44 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/color-background-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/color-fill-alpha-win32.png b/core/test/processing/visual/__screenshots__/shapes/color-fill-alpha-win32.png new file mode 100644 index 000000000..fdc34eaf9 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/color-fill-alpha-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/color-fill-rgb-win32.png b/core/test/processing/visual/__screenshots__/shapes/color-fill-rgb-win32.png new file mode 100644 index 000000000..fefc4c7e2 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/color-fill-rgb-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/color-hsb-win32.png b/core/test/processing/visual/__screenshots__/shapes/color-hsb-win32.png new file mode 100644 index 000000000..fb7e3d858 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/color-hsb-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/color-stroke-win32.png b/core/test/processing/visual/__screenshots__/shapes/color-stroke-win32.png new file mode 100644 index 000000000..320286e0c Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/color-stroke-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/contours-win32.png b/core/test/processing/visual/__screenshots__/shapes/contours-win32.png new file mode 100644 index 000000000..c7460ad10 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/contours-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/curves-tightness-win32.png b/core/test/processing/visual/__screenshots__/shapes/curves-tightness-win32.png new file mode 100644 index 000000000..aecfee50e Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/curves-tightness-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/curves-win32.png b/core/test/processing/visual/__screenshots__/shapes/curves-win32.png new file mode 100644 index 000000000..5a629e80f Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/curves-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/ellipse-win32.png b/core/test/processing/visual/__screenshots__/shapes/ellipse-win32.png new file mode 100644 index 000000000..313ef6472 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/ellipse-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/image-draw-win32.png b/core/test/processing/visual/__screenshots__/shapes/image-draw-win32.png new file mode 100644 index 000000000..509bd0cc6 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/image-draw-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/image-resize-win32.png b/core/test/processing/visual/__screenshots__/shapes/image-resize-win32.png new file mode 100644 index 000000000..0c9e4dd55 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/image-resize-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/image-tint-win32.png b/core/test/processing/visual/__screenshots__/shapes/image-tint-win32.png new file mode 100644 index 000000000..5f0160ca2 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/image-tint-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/line-win32.png b/core/test/processing/visual/__screenshots__/shapes/line-win32.png new file mode 100644 index 000000000..0e8129c0a Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/line-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/lines-win32.png b/core/test/processing/visual/__screenshots__/shapes/lines-win32.png new file mode 100644 index 000000000..f2e42539e Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/lines-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/point-win32.png b/core/test/processing/visual/__screenshots__/shapes/point-win32.png new file mode 100644 index 000000000..d7439edeb Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/point-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/points-win32.png b/core/test/processing/visual/__screenshots__/shapes/points-win32.png new file mode 100644 index 000000000..d0aecf8d3 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/points-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/polylines-win32.png b/core/test/processing/visual/__screenshots__/shapes/polylines-win32.png new file mode 100644 index 000000000..8f0a6ad36 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/polylines-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/quad-strips-win32.png b/core/test/processing/visual/__screenshots__/shapes/quad-strips-win32.png new file mode 100644 index 000000000..10ace8706 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/quad-strips-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/quadratic-beziers-win32.png b/core/test/processing/visual/__screenshots__/shapes/quadratic-beziers-win32.png new file mode 100644 index 000000000..85416ec26 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/quadratic-beziers-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/quads-win32.png b/core/test/processing/visual/__screenshots__/shapes/quads-win32.png new file mode 100644 index 000000000..b7d2c80f9 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/quads-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/rect-win32.png b/core/test/processing/visual/__screenshots__/shapes/rect-win32.png new file mode 100644 index 000000000..05d23cb9e Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/rect-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/single-closed-contour-win32.png b/core/test/processing/visual/__screenshots__/shapes/single-closed-contour-win32.png new file mode 100644 index 000000000..401b9974d Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/single-closed-contour-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/single-unclosed-contour-win32.png b/core/test/processing/visual/__screenshots__/shapes/single-unclosed-contour-win32.png new file mode 100644 index 000000000..401b9974d Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/single-unclosed-contour-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/stroke-cap-round-win32.png b/core/test/processing/visual/__screenshots__/shapes/stroke-cap-round-win32.png new file mode 100644 index 000000000..1d5bc814c Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/stroke-cap-round-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/stroke-cap-square-win32.png b/core/test/processing/visual/__screenshots__/shapes/stroke-cap-square-win32.png new file mode 100644 index 000000000..8d9d12251 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/stroke-cap-square-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/stroke-join-bevel-win32.png b/core/test/processing/visual/__screenshots__/shapes/stroke-join-bevel-win32.png new file mode 100644 index 000000000..a8fa870ca Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/stroke-join-bevel-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/stroke-join-miter-win32.png b/core/test/processing/visual/__screenshots__/shapes/stroke-join-miter-win32.png new file mode 100644 index 000000000..cb77c6962 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/stroke-join-miter-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/stroke-join-round-win32.png b/core/test/processing/visual/__screenshots__/shapes/stroke-join-round-win32.png new file mode 100644 index 000000000..18cad5394 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/stroke-join-round-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/stroke-weight-win32.png b/core/test/processing/visual/__screenshots__/shapes/stroke-weight-win32.png new file mode 100644 index 000000000..0ac975d79 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/stroke-weight-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/transform-pushpop-win32.png b/core/test/processing/visual/__screenshots__/shapes/transform-pushpop-win32.png new file mode 100644 index 000000000..5d24f94bf Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/transform-pushpop-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/transform-rotate-win32.png b/core/test/processing/visual/__screenshots__/shapes/transform-rotate-win32.png new file mode 100644 index 000000000..4e35f03dd Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/transform-rotate-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/transform-scale-win32.png b/core/test/processing/visual/__screenshots__/shapes/transform-scale-win32.png new file mode 100644 index 000000000..7469724b5 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/transform-scale-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/transform-translate-win32.png b/core/test/processing/visual/__screenshots__/shapes/transform-translate-win32.png new file mode 100644 index 000000000..56141c7eb Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/transform-translate-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/triangle-fans-win32.png b/core/test/processing/visual/__screenshots__/shapes/triangle-fans-win32.png new file mode 100644 index 000000000..c7c2b87e6 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/triangle-fans-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/triangle-strips-win32.png b/core/test/processing/visual/__screenshots__/shapes/triangle-strips-win32.png new file mode 100644 index 000000000..14ee9cd38 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/triangle-strips-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/triangle-win32.png b/core/test/processing/visual/__screenshots__/shapes/triangle-win32.png new file mode 100644 index 000000000..bf8f452ab Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/triangle-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/shapes/triangles-win32.png b/core/test/processing/visual/__screenshots__/shapes/triangles-win32.png new file mode 100644 index 000000000..0e25fdbc0 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/shapes/triangles-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/multi-line-center-bottom-win32.png b/core/test/processing/visual/__screenshots__/typography/align/multi-line-center-bottom-win32.png new file mode 100644 index 000000000..8fb9873b4 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/multi-line-center-bottom-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/multi-line-center-center-win32.png b/core/test/processing/visual/__screenshots__/typography/align/multi-line-center-center-win32.png new file mode 100644 index 000000000..a7cb8e609 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/multi-line-center-center-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/multi-line-center-top-win32.png b/core/test/processing/visual/__screenshots__/typography/align/multi-line-center-top-win32.png new file mode 100644 index 000000000..92f71fee1 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/multi-line-center-top-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/multi-line-left-bottom-win32.png b/core/test/processing/visual/__screenshots__/typography/align/multi-line-left-bottom-win32.png new file mode 100644 index 000000000..e08a0792e Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/multi-line-left-bottom-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/multi-line-left-center-win32.png b/core/test/processing/visual/__screenshots__/typography/align/multi-line-left-center-win32.png new file mode 100644 index 000000000..2dfc4168f Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/multi-line-left-center-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/multi-line-left-top-win32.png b/core/test/processing/visual/__screenshots__/typography/align/multi-line-left-top-win32.png new file mode 100644 index 000000000..33624d9ff Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/multi-line-left-top-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/multi-line-right-bottom-win32.png b/core/test/processing/visual/__screenshots__/typography/align/multi-line-right-bottom-win32.png new file mode 100644 index 000000000..49c26f06f Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/multi-line-right-bottom-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/multi-line-right-center-win32.png b/core/test/processing/visual/__screenshots__/typography/align/multi-line-right-center-win32.png new file mode 100644 index 000000000..9e93f280b Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/multi-line-right-center-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/multi-line-right-top-win32.png b/core/test/processing/visual/__screenshots__/typography/align/multi-line-right-top-win32.png new file mode 100644 index 000000000..e75985de7 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/multi-line-right-top-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/single-word-center-bottom-win32.png b/core/test/processing/visual/__screenshots__/typography/align/single-word-center-bottom-win32.png new file mode 100644 index 000000000..0bad1d591 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/single-word-center-bottom-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/single-word-center-center-win32.png b/core/test/processing/visual/__screenshots__/typography/align/single-word-center-center-win32.png new file mode 100644 index 000000000..4ce4544ba Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/single-word-center-center-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/single-word-center-top-win32.png b/core/test/processing/visual/__screenshots__/typography/align/single-word-center-top-win32.png new file mode 100644 index 000000000..7bc60b3c3 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/single-word-center-top-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/single-word-left-bottom-win32.png b/core/test/processing/visual/__screenshots__/typography/align/single-word-left-bottom-win32.png new file mode 100644 index 000000000..d8a6a114a Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/single-word-left-bottom-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/single-word-left-center-win32.png b/core/test/processing/visual/__screenshots__/typography/align/single-word-left-center-win32.png new file mode 100644 index 000000000..327bae858 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/single-word-left-center-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/single-word-left-top-win32.png b/core/test/processing/visual/__screenshots__/typography/align/single-word-left-top-win32.png new file mode 100644 index 000000000..ff4d242f0 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/single-word-left-top-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/single-word-right-bottom-win32.png b/core/test/processing/visual/__screenshots__/typography/align/single-word-right-bottom-win32.png new file mode 100644 index 000000000..cf73e7bde Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/single-word-right-bottom-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/single-word-right-center-win32.png b/core/test/processing/visual/__screenshots__/typography/align/single-word-right-center-win32.png new file mode 100644 index 000000000..fd9b7c69e Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/single-word-right-center-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/align/single-word-right-top-win32.png b/core/test/processing/visual/__screenshots__/typography/align/single-word-right-top-win32.png new file mode 100644 index 000000000..852c46f5f Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/align/single-word-right-top-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/complex/colored-text-win32.png b/core/test/processing/visual/__screenshots__/typography/complex/colored-text-win32.png new file mode 100644 index 000000000..df8be566f Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/complex/colored-text-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/complex/rotated-text-win32.png b/core/test/processing/visual/__screenshots__/typography/complex/rotated-text-win32.png new file mode 100644 index 000000000..b90e1aaca Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/complex/rotated-text-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/complex/transparent-text-win32.png b/core/test/processing/visual/__screenshots__/typography/complex/transparent-text-win32.png new file mode 100644 index 000000000..a9118ac7c Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/complex/transparent-text-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/font/default-font-win32.png b/core/test/processing/visual/__screenshots__/typography/font/default-font-win32.png new file mode 100644 index 000000000..5e34f068e Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/font/default-font-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/font/monospace-font-win32.png b/core/test/processing/visual/__screenshots__/typography/font/monospace-font-win32.png new file mode 100644 index 000000000..1f9d570c3 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/font/monospace-font-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/font/system-font-win32.png b/core/test/processing/visual/__screenshots__/typography/font/system-font-win32.png new file mode 100644 index 000000000..de10f5149 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/font/system-font-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/leading/different-values-win32.png b/core/test/processing/visual/__screenshots__/typography/leading/different-values-win32.png new file mode 100644 index 000000000..ae57773e1 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/leading/different-values-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/pfont/ascent-descent-win32.png b/core/test/processing/visual/__screenshots__/typography/pfont/ascent-descent-win32.png new file mode 100644 index 000000000..85dab54b3 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/pfont/ascent-descent-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/pfont/char-availability-win32.png b/core/test/processing/visual/__screenshots__/typography/pfont/char-availability-win32.png new file mode 100644 index 000000000..78356e34f Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/pfont/char-availability-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/size/sizes-comparison-win32.png b/core/test/processing/visual/__screenshots__/typography/size/sizes-comparison-win32.png new file mode 100644 index 000000000..0d28198cf Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/size/sizes-comparison-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/textmode/mode-switching-win32.png b/core/test/processing/visual/__screenshots__/typography/textmode/mode-switching-win32.png new file mode 100644 index 000000000..9f57131ef Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/textmode/mode-switching-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/textmode/model-mode-win32.png b/core/test/processing/visual/__screenshots__/typography/textmode/model-mode-win32.png new file mode 100644 index 000000000..a22c000c2 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/textmode/model-mode-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/textmode/shape-mode-win32.png b/core/test/processing/visual/__screenshots__/typography/textmode/shape-mode-win32.png new file mode 100644 index 000000000..80dc55a4e Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/textmode/shape-mode-win32.png differ diff --git a/core/test/processing/visual/__screenshots__/typography/width/string-width-win32.png b/core/test/processing/visual/__screenshots__/typography/width/string-width-win32.png new file mode 100644 index 000000000..d44f86015 Binary files /dev/null and b/core/test/processing/visual/__screenshots__/typography/width/string-width-win32.png differ diff --git a/core/test/processing/visual/src/test/blendmodes/BlendModeTest.java b/core/test/processing/visual/src/test/blendmodes/BlendModeTest.java index 74531b75b..a89d43bd6 100644 --- a/core/test/processing/visual/src/test/blendmodes/BlendModeTest.java +++ b/core/test/processing/visual/src/test/blendmodes/BlendModeTest.java @@ -158,4 +158,92 @@ public void draw(PApplet p) { } }, new TestConfig(50, 50)); } + @Test + @Order(12) + @DisplayName("blendMode(OVERLAY)") + public void testOverlay() { + assertVisualMatch("blend-modes/overlay", + createBlendTest(PApplet.OVERLAY), + new TestConfig(50, 50)); + } + + @Test + @Order(13) + @DisplayName("blendMode(HARD_LIGHT)") + public void testHardLight() { + assertVisualMatch("blend-modes/hard-light", + createBlendTest(PApplet.HARD_LIGHT), + new TestConfig(50, 50)); + } + + @Test + @Order(14) + @DisplayName("blendMode(SOFT_LIGHT)") + public void testSoftLight() { + assertVisualMatch("blend-modes/soft-light", + createBlendTest(PApplet.SOFT_LIGHT), + new TestConfig(50, 50)); + } + @Test + @Order(15) + @DisplayName("blendMode with background color change") + public void testBlendWithBackground() { + assertVisualMatch("blend-modes/background-blend", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.noStroke(); + } + + @Override + public void draw(PApplet p) { + p.background(255); + + // Draw gradient-like background + for (int i = 0; i < 50; i++) { + p.fill(i * 5, 0, 255 - i * 5); + p.rect(i, 0, 1, 50); + } + + // Overlay with different blend modes + p.blendMode(PApplet.MULTIPLY); + p.fill(255, 200, 0, 180); + p.rect(5, 5, 40, 40); + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(16) + @DisplayName("Blend mode reset to BLEND after change") + public void testBlendModeReset() { + assertVisualMatch("blend-modes/mode-reset", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.noStroke(); + } + + @Override + public void draw(PApplet p) { + p.background(128); + + p.blendMode(PApplet.ADD); + p.fill(200, 0, 0, 160); + p.rect(5, 5, 20, 40); + + // Reset back to BLEND + p.blendMode(PApplet.BLEND); + p.fill(0, 200, 0, 160); + p.rect(15, 5, 20, 40); + + p.blendMode(PApplet.SUBTRACT); + p.fill(0, 0, 200, 160); + p.rect(25, 5, 20, 40); + + // Final reset + p.blendMode(PApplet.BLEND); + p.fill(200, 200, 0, 160); + p.rect(35, 5, 10, 40); + } + }, new TestConfig(50, 50)); + } } diff --git a/core/test/processing/visual/src/test/shapes/ColorTest.java b/core/test/processing/visual/src/test/shapes/ColorTest.java new file mode 100644 index 000000000..f83b567b8 --- /dev/null +++ b/core/test/processing/visual/src/test/shapes/ColorTest.java @@ -0,0 +1,120 @@ +package processing.visual.src.test.shapes; + +import org.junit.jupiter.api.*; +import processing.core.*; +import processing.visual.src.test.base.VisualTest; +import processing.visual.src.core.ProcessingSketch; +import processing.visual.src.core.TestConfig; + +@Tag("shapes") +@Tag("color") +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class ColorTest extends VisualTest { + + @Test + @Order(1) + @DisplayName("Fill with RGB color") + public void testFillRGB() { + assertVisualMatch("shapes/color-fill-rgb", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(255); + p.noStroke(); + } + @Override + public void draw(PApplet p) { + p.fill(255, 0, 0); + p.rect(5, 5, 15, 40); + p.fill(0, 255, 0); + p.rect(20, 5, 15, 40); + p.fill(0, 0, 255); + p.rect(35, 5, 10, 40); + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(2) + @DisplayName("Fill with alpha transparency") + public void testFillAlpha() { + assertVisualMatch("shapes/color-fill-alpha", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(255); + p.noStroke(); + } + @Override + public void draw(PApplet p) { + p.fill(255, 0, 0); + p.rect(5, 5, 30, 40); + p.fill(0, 0, 255, 128); + p.rect(15, 5, 30, 40); + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(3) + @DisplayName("Stroke color") + public void testStrokeColor() { + assertVisualMatch("shapes/color-stroke", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(255); + p.strokeWeight(3); + p.noFill(); + } + @Override + public void draw(PApplet p) { + p.stroke(255, 0, 0); + p.rect(5, 5, 15, 15); + p.stroke(0, 255, 0); + p.rect(25, 5, 15, 15); + p.stroke(0, 0, 255); + p.rect(5, 25, 15, 15); + p.stroke(255, 165, 0); + p.rect(25, 25, 15, 15); + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(4) + @DisplayName("HSB color mode") + public void testHSBColorMode() { + assertVisualMatch("shapes/color-hsb", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(255); + p.noStroke(); + p.colorMode(PApplet.HSB, 360, 100, 100); + } + @Override + public void draw(PApplet p) { + for (int i = 0; i < 5; i++) { + p.fill(i * 72, 80, 90); + p.rect(i * 10, 10, 10, 30); + } + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(5) + @DisplayName("Background color") + public void testBackgroundColor() { + assertVisualMatch("shapes/color-background", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.noStroke(); + } + @Override + public void draw(PApplet p) { + p.background(100, 150, 200); + p.fill(255); + p.rect(10, 10, 30, 30); + } + }, new TestConfig(50, 50)); + } +} + diff --git a/core/test/processing/visual/src/test/shapes/ImageTest.java b/core/test/processing/visual/src/test/shapes/ImageTest.java new file mode 100644 index 000000000..9aa0fd1b4 --- /dev/null +++ b/core/test/processing/visual/src/test/shapes/ImageTest.java @@ -0,0 +1,85 @@ +package processing.visual.src.test.shapes; + +import org.junit.jupiter.api.*; +import processing.core.*; +import processing.visual.src.test.base.VisualTest; +import processing.visual.src.core.ProcessingSketch; +import processing.visual.src.core.TestConfig; + +@Tag("shapes") +@Tag("image") +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class ImageTest extends VisualTest { + + @Test + @Order(1) + @DisplayName("Draw PImage") + public void testDrawImage() { + assertVisualMatch("shapes/image-draw", new ProcessingSketch() { + PImage img; + @Override + public void setup(PApplet p) { + img = p.createImage(20, 20, PApplet.RGB); + img.loadPixels(); + for (int i = 0; i < img.pixels.length; i++) { + img.pixels[i] = p.color(255, 0, 0); + } + img.updatePixels(); + } + @Override + public void draw(PApplet p) { + p.background(255); + p.image(img, 10, 10); + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(2) + @DisplayName("Tint image") + public void testTintImage() { + assertVisualMatch("shapes/image-tint", new ProcessingSketch() { + PImage img; + @Override + public void setup(PApplet p) { + img = p.createImage(20, 20, PApplet.RGB); + img.loadPixels(); + for (int i = 0; i < img.pixels.length; i++) { + img.pixels[i] = p.color(255); + } + img.updatePixels(); + } + @Override + public void draw(PApplet p) { + p.background(255); + p.tint(0, 150, 255); + p.image(img, 5, 5); + p.noTint(); + p.image(img, 25, 25); + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(3) + @DisplayName("Resize image") + public void testResizeImage() { + assertVisualMatch("shapes/image-resize", new ProcessingSketch() { + PImage img; + @Override + public void setup(PApplet p) { + img = p.createImage(10, 10, PApplet.RGB); + img.loadPixels(); + for (int i = 0; i < img.pixels.length; i++) { + img.pixels[i] = p.color(0, 200, 100); + } + img.updatePixels(); + } + @Override + public void draw(PApplet p) { + p.background(255); + p.image(img, 5, 5, 40, 40); + } + }, new TestConfig(50, 50)); + } +} \ No newline at end of file diff --git a/core/test/processing/visual/src/test/shapes/PrimitiveShapeTest.java b/core/test/processing/visual/src/test/shapes/PrimitiveShapeTest.java new file mode 100644 index 000000000..84e903978 --- /dev/null +++ b/core/test/processing/visual/src/test/shapes/PrimitiveShapeTest.java @@ -0,0 +1,89 @@ +package processing.visual.src.test.shapes; + +import org.junit.jupiter.api.*; +import processing.core.*; +import processing.visual.src.test.base.VisualTest; +import processing.visual.src.core.ProcessingSketch; +import processing.visual.src.core.TestConfig; + +@Tag("shapes") +@Tag("primitives") +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class PrimitiveShapeTest extends VisualTest { + + private ProcessingSketch createTest(ShapeCallback callback) { + return new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(200); + p.fill(255); + p.stroke(0); + } + + @Override + public void draw(PApplet p) { + callback.draw(p); + } + }; + } + + @FunctionalInterface + interface ShapeCallback { + void draw(PApplet p); + } + + @Test + @Order(1) + @DisplayName("Drawing a rectangle") + public void testRect() { + assertVisualMatch("shapes/rect", createTest(p -> { + p.rect(10, 10, 30, 30); + }), new TestConfig(50, 50)); + } + + @Test + @Order(2) + @DisplayName("Drawing an ellipse") + public void testEllipse() { + assertVisualMatch("shapes/ellipse", createTest(p -> { + p.ellipse(25, 25, 30, 20); + }), new TestConfig(50, 50)); + } + + @Test + @Order(3) + @DisplayName("Drawing a triangle") + public void testTriangle() { + assertVisualMatch("shapes/triangle", createTest(p -> { + p.triangle(25, 10, 10, 40, 40, 40); + }), new TestConfig(50, 50)); + } + + @Test + @Order(4) + @DisplayName("Drawing an arc") + public void testArc() { + assertVisualMatch("shapes/arc", createTest(p -> { + p.arc(25, 25, 30, 30, 0, PApplet.PI); + }), new TestConfig(50, 50)); + } + + @Test + @Order(5) + @DisplayName("Drawing a line") + public void testLine() { + assertVisualMatch("shapes/line", createTest(p -> { + p.line(10, 10, 40, 40); + }), new TestConfig(50, 50)); + } + + @Test + @Order(6) + @DisplayName("Drawing a point") + public void testPoint() { + assertVisualMatch("shapes/point", createTest(p -> { + p.strokeWeight(5); + p.point(25, 25); + }), new TestConfig(50, 50)); + } +} \ No newline at end of file diff --git a/core/test/processing/visual/src/test/shapes/Shape3DTest.java b/core/test/processing/visual/src/test/shapes/Shape3DTest.java index 7006cf329..cf9374f23 100644 --- a/core/test/processing/visual/src/test/shapes/Shape3DTest.java +++ b/core/test/processing/visual/src/test/shapes/Shape3DTest.java @@ -81,4 +81,37 @@ public void testPerVertexStrokes() { p.endShape(); }), new TestConfig(50, 50)); } + @Test + @Order(4) + @DisplayName("Drawing a box") + public void testBox() { + assertVisualMatch("shapes-3d/box", create3DTest(p -> { + p.translate(25, 25, 0); + p.rotateX(0.5f); + p.rotateY(0.5f); + p.box(20); + }), new TestConfig(50, 50)); + } + + @Test + @Order(5) + @DisplayName("Drawing a sphere") + public void testSphere() { + assertVisualMatch("shapes-3d/sphere", create3DTest(p -> { + p.translate(25, 25, 0); + p.sphere(15); + }), new TestConfig(50, 50)); + } + + @Test + @Order(6) + @DisplayName("3D rotation and translation") + public void test3DTransform() { + assertVisualMatch("shapes-3d/transform", create3DTest(p -> { + p.translate(25, 25, 0); + p.rotateX(PApplet.PI / 4); + p.rotateY(PApplet.PI / 4); + p.box(15, 10, 20); + }), new TestConfig(50, 50)); + } } \ No newline at end of file diff --git a/core/test/processing/visual/src/test/shapes/StrokeTest.java b/core/test/processing/visual/src/test/shapes/StrokeTest.java new file mode 100644 index 000000000..6a2d5524a --- /dev/null +++ b/core/test/processing/visual/src/test/shapes/StrokeTest.java @@ -0,0 +1,129 @@ +package processing.visual.src.test.shapes; + +import org.junit.jupiter.api.*; +import processing.core.*; +import processing.visual.src.test.base.VisualTest; +import processing.visual.src.core.ProcessingSketch; +import processing.visual.src.core.TestConfig; + +@Tag("shapes") +@Tag("stroke") +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class StrokeTest extends VisualTest { + + @Test + @Order(1) + @DisplayName("Stroke weight variations") + public void testStrokeWeight() { + assertVisualMatch("shapes/stroke-weight", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(255); + p.noFill(); + } + @Override + public void draw(PApplet p) { + int[] weights = {1, 2, 4, 6, 8}; + for (int i = 0; i < weights.length; i++) { + p.strokeWeight(weights[i]); + p.line(5, 8 + i * 9, 45, 8 + i * 9); + } + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(2) + @DisplayName("Stroke cap ROUND") + public void testStrokeCapRound() { + assertVisualMatch("shapes/stroke-cap-round", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(255); + p.strokeWeight(8); + p.strokeCap(PApplet.ROUND); + } + @Override + public void draw(PApplet p) { + p.line(10, 15, 40, 15); + p.line(10, 30, 40, 30); + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(3) + @DisplayName("Stroke cap SQUARE") + public void testStrokeCapSquare() { + assertVisualMatch("shapes/stroke-cap-square", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(255); + p.strokeWeight(8); + p.strokeCap(PApplet.SQUARE); + } + @Override + public void draw(PApplet p) { + p.line(10, 15, 40, 15); + p.line(10, 30, 40, 30); + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(4) + @DisplayName("Stroke join MITER") + public void testStrokeJoinMiter() { + assertVisualMatch("shapes/stroke-join-miter", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(255); + p.strokeWeight(4); + p.noFill(); + p.strokeJoin(PApplet.MITER); + } + @Override + public void draw(PApplet p) { + p.rect(10, 10, 30, 30); + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(5) + @DisplayName("Stroke join ROUND") + public void testStrokeJoinRound() { + assertVisualMatch("shapes/stroke-join-round", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(255); + p.strokeWeight(4); + p.noFill(); + p.strokeJoin(PApplet.ROUND); + } + @Override + public void draw(PApplet p) { + p.rect(10, 10, 30, 30); + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(6) + @DisplayName("Stroke join BEVEL") + public void testStrokeJoinBevel() { + assertVisualMatch("shapes/stroke-join-bevel", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(255); + p.strokeWeight(4); + p.noFill(); + p.strokeJoin(PApplet.BEVEL); + } + @Override + public void draw(PApplet p) { + p.rect(10, 10, 30, 30); + } + }, new TestConfig(50, 50)); + } +} \ No newline at end of file diff --git a/core/test/processing/visual/src/test/shapes/TransformTest.java b/core/test/processing/visual/src/test/shapes/TransformTest.java new file mode 100644 index 000000000..bf0cada27 --- /dev/null +++ b/core/test/processing/visual/src/test/shapes/TransformTest.java @@ -0,0 +1,95 @@ +package processing.visual.src.test.shapes; + +import org.junit.jupiter.api.*; +import processing.core.*; +import processing.visual.src.test.base.VisualTest; +import processing.visual.src.core.ProcessingSketch; +import processing.visual.src.core.TestConfig; + +@Tag("shapes") +@Tag("transforms") +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class TransformTest extends VisualTest { + + @Test + @Order(1) + @DisplayName("Translate") + public void testTranslate() { + assertVisualMatch("shapes/transform-translate", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(200); + p.fill(255); + p.stroke(0); + } + @Override + public void draw(PApplet p) { + p.translate(20, 20); + p.rect(0, 0, 20, 20); + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(2) + @DisplayName("Rotate") + public void testRotate() { + assertVisualMatch("shapes/transform-rotate", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(200); + p.fill(255); + p.stroke(0); + } + @Override + public void draw(PApplet p) { + p.translate(25, 25); + p.rotate(PApplet.PI / 4); + p.rect(-10, -10, 20, 20); + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(3) + @DisplayName("Scale") + public void testScale() { + assertVisualMatch("shapes/transform-scale", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(200); + p.fill(255); + p.stroke(0); + } + @Override + public void draw(PApplet p) { + p.scale(1.5f); + p.rect(5, 5, 20, 20); + } + }, new TestConfig(50, 50)); + } + + @Test + @Order(4) + @DisplayName("Push and Pop Matrix") + public void testPushPopMatrix() { + assertVisualMatch("shapes/transform-pushpop", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.background(200); + p.fill(255); + p.stroke(0); + } + @Override + public void draw(PApplet p) { + p.pushMatrix(); + p.translate(10, 10); + p.rotate(PApplet.PI / 6); + p.rect(0, 0, 15, 15); + p.popMatrix(); + p.fill(255, 0, 0); + p.rect(25, 25, 15, 15); + } + }, new TestConfig(50, 50)); + } +} \ No newline at end of file diff --git a/core/test/processing/visual/src/test/suites/BlendModesSuite.java b/core/test/processing/visual/src/test/suites/BlendModesSuite.java new file mode 100644 index 000000000..06d935e1e --- /dev/null +++ b/core/test/processing/visual/src/test/suites/BlendModesSuite.java @@ -0,0 +1,12 @@ +package processing.visual.src.test.suites; + +import org.junit.platform.suite.api.*; + +@Suite +@SuiteDisplayName("Blend Modes Visual Tests") +@SelectPackages("processing.visual.src.test.blendmodes") +@ExcludePackages("processing.visual.src.test.suites") +@IncludeTags("blend-modes") +public class BlendModesSuite { + // Empty class - just holds annotations +} \ No newline at end of file diff --git a/core/test/processing/visual/src/test/suites/TypographySuite.java b/core/test/processing/visual/src/test/suites/TypographySuite.java new file mode 100644 index 000000000..130e6bb9c --- /dev/null +++ b/core/test/processing/visual/src/test/suites/TypographySuite.java @@ -0,0 +1,12 @@ +package processing.visual.src.test.suites; + +import org.junit.platform.suite.api.*; + +@Suite +@SuiteDisplayName("Typography Visual Tests") +@SelectPackages("processing.visual.src.test.typography") +@ExcludePackages("processing.visual.src.test.suites") +@IncludeTags("typography") +public class TypographySuite { + // Empty class - just holds annotations +} \ No newline at end of file diff --git a/core/test/processing/visual/src/test/typography/TextModeTest.java b/core/test/processing/visual/src/test/typography/TextModeTest.java new file mode 100644 index 000000000..af81466bf --- /dev/null +++ b/core/test/processing/visual/src/test/typography/TextModeTest.java @@ -0,0 +1,80 @@ +package processing.visual.src.test.typography; + +import org.junit.jupiter.api.*; +import processing.core.*; +import processing.visual.src.test.base.VisualTest; +import processing.visual.src.core.ProcessingSketch; +import processing.visual.src.core.TestConfig; + +@Tag("typography") +@Tag("textmode") +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class TextModeTest extends VisualTest { + + @Test + @Order(1) + @DisplayName("Text in MODEL mode") + public void testTextModelMode() { + assertVisualMatch("typography/textmode/model-mode", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.textSize(20); + p.textMode(PApplet.MODEL); + p.textAlign(PApplet.LEFT, PApplet.BASELINE); + } + + @Override + public void draw(PApplet p) { + p.background(255); + p.fill(0); + p.text("MODEL mode", 10, 30); + } + }, new TestConfig(150, 50)); + } + + @Test + @Order(2) + @DisplayName("Text in SHAPE mode") + public void testTextShapeMode() { + assertVisualMatch("typography/textmode/shape-mode", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.textSize(20); + p.textMode(PApplet.SHAPE); + p.textAlign(PApplet.LEFT, PApplet.BASELINE); + } + + @Override + public void draw(PApplet p) { + p.background(255); + p.fill(0); + p.text("SHAPE mode", 10, 30); + } + }, new TestConfig(150, 50)); + } + + @Test + @Order(3) + @DisplayName("Text mode switch from MODEL to SHAPE") + public void testTextModeSwitching() { + assertVisualMatch("typography/textmode/mode-switching", new ProcessingSketch() { + @Override + public void setup(PApplet p) { + p.textSize(16); + p.textAlign(PApplet.LEFT, PApplet.BASELINE); + } + + @Override + public void draw(PApplet p) { + p.background(255); + p.fill(0); + + p.textMode(PApplet.MODEL); + p.text("MODEL", 10, 25); + + p.textMode(PApplet.SHAPE); + p.text("SHAPE", 10, 50); + } + }, new TestConfig(150, 70)); + } +} \ No newline at end of file diff --git a/java/test/processing/mode/java/ParserTests.java b/java/test/processing/mode/java/ParserTests.java index 9d589caaf..ccbf7b716 100644 --- a/java/test/processing/mode/java/ParserTests.java +++ b/java/test/processing/mode/java/ParserTests.java @@ -495,4 +495,16 @@ public void testWhitespace() { expectGood("whitespace", false); } + + + @Test + public void testWhitespaceTest() { + expectGood("whitespace_test", false); + + +} + @Test + public void testInterface() { + expectGood("interface_test", true); + } } diff --git a/java/test/resources/interface_test.expected b/java/test/resources/interface_test.expected new file mode 100644 index 000000000..e7b6d26e0 --- /dev/null +++ b/java/test/resources/interface_test.expected @@ -0,0 +1,33 @@ +import processing.core.*; +import processing.data.*; +import processing.event.*; +import processing.opengl.*; +import java.util.HashMap; +import java.util.ArrayList; +import java.io.File; +import java.io.BufferedReader; +import java.io.PrintWriter; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.IOException; +public class interface_test extends PApplet { +enum Direction { + NORTH, SOUTH, EAST, WEST +} + public void setup() { + size(100, 100); + Direction d = Direction.NORTH; + println(d); + } + public void draw() { + background(255); + } + static public void main(String[] passedArgs) { + String[] appletArgs = new String[] { "interface_test" }; + if (passedArgs != null) { + PApplet.main(concat(appletArgs, passedArgs)); + } else { + PApplet.main(appletArgs); + } + } +} \ No newline at end of file diff --git a/java/test/resources/interface_test.pde b/java/test/resources/interface_test.pde new file mode 100644 index 000000000..fe87ece6a --- /dev/null +++ b/java/test/resources/interface_test.pde @@ -0,0 +1,13 @@ +enum Direction { + NORTH, SOUTH, EAST, WEST +} + +void setup() { + size(100, 100); + Direction d = Direction.NORTH; + println(d); +} + +void draw() { + background(255); +} \ No newline at end of file