Commit Graph

12 Commits

Author SHA1 Message Date
740572bfb7 test: add contains(Point) hit-testing tests for all shapes
All checks were successful
CI / build-and-test (pull_request) Successful in 16s
Add 36 tests covering bounds-based hit-testing (getBounds().contains(Point))
for SRectangle, SCircle, STriangle, SText, and SCollection:
- Point inside, outside, on boundary (inclusive top-left, exclusive bottom-right)
- Point after translate to verify position update
- SCollection union bounds, gap between children, single-child bounds

Closes #11
2026-03-27 23:25:29 +00:00
6cc6fbbfe8 test: add edge case tests for shapes
All checks were successful
CI / build-and-test (pull_request) Successful in 17s
Add 19 tests covering edge cases across all shape types:
- Negative coordinates: SRectangle, SCircle, STriangle, translate
- Zero dimensions: zero width/height rectangle, zero radius circle
- Resize clamping: verify width/height minimum enforcement
- Null handling: null/blank text normalization, unknown attribute key, empty collection
- Large values: Integer.MAX_VALUE/2 coords, MAX/MIN_VALUE translate

Closes #13
2026-03-27 23:23:17 +00:00
873f5d2711 fix: SText.updateMeasuredBounds() must mutate internal bounds, not defensive copy
All checks were successful
CI / build-and-test (pull_request) Successful in 17s
Closes #27
2026-03-27 23:22:08 +00:00
8635770755 test: add ResizeHandle enum unit tests
All checks were successful
CI / build-and-test (pull_request) Successful in 18s
Add 10 tests covering the ResizeHandle enum:
- Verify all 8 handles exist
- Verify each handle name (NW, N, NE, E, SE, S, SW, W)
- Verify each handle maps to the correct java.awt.Cursor constant
- Verify valueOf() round-trip for all handles
- Verify valueOf() with invalid name throws IllegalArgumentException

Closes #12
2026-03-27 18:06:49 +00:00
3623928bb6 test: add SVGDraftman direct visitor tests
All checks were successful
CI / build-and-test (pull_request) Successful in 18s
Add 27 tests covering each visit*() method in isolation:
- visitRectangle: dimensions, filled/stroked/both/neither color combos
- visitCircle: center calculation, fill/stroke variants
- visitTriangle: polygon points, fill style, stroke style
- visitText: content, position offset, font attributes, color fallbacks
- visitCollection: empty, multiple children, nested collections
- generateSVG: XML declaration, SVG namespace, closing tag, shape content

Closes #9
2026-03-27 17:05:48 +00:00
d3c993eb2d test: add HTMLDraftman direct visitor tests
All checks were successful
CI / build-and-test (pull_request) Successful in 18s
Add 32 tests covering each visit*() method in isolation:
- visitRectangle: div+id, position, dimensions, filled/stroked/both/neither
- visitCircle: div+class, border-radius prefixes, position, id consistency
- visitTriangle: div+class, CSS border trick, position, fill color,
  regression test for hashCode mismatch (this.hashCode vs shape.hashCode)
- visitText: content, id consistency, position, font attrs, color, nowrap,
  null color fallback
- visitCollection: empty, multiple children, nested
- generateHTML: DOCTYPE, structure, stylesheet ref, shape content

Closes #10
2026-03-27 17:02:17 +00:00
bcbbcef321 Add SelectionAttributes unit tests
All checks were successful
CI / build-and-test (pull_request) Successful in 19s
Test core data type for selected/unselected state, default values,
ID constant, interface compliance, and instance independence.

8 tests covering all public API of SelectionAttributes.

Closes #6
2026-03-27 16:56:45 +00:00
e83a6ba7d1 test: add ColorAttributes unit tests
All checks were successful
CI / build-and-test (pull_request) Successful in 18s
Add 16 tests covering constructor behavior, fill/stroke flags and colors,
null color handling, ID constant, Attributes interface, toString output,
and instance independence.

Closes #7
2026-03-27 17:51:13 +01:00
7ddef4d8ab Add parameterized ShapeContractTest for Shape interface invariants
All checks were successful
CI / build-and-test (pull_request) Successful in 18s
Verify clone(), getBounds(), and translate() contracts across all Shape
implementations (SRectangle, SCircle, STriangle, SText, SCollection)
using @ParameterizedTest + @MethodSource.

Also adds junit-jupiter-params dependency to pom.xml.

Closes #8
2026-03-27 16:11:55 +00:00
ba37b199de fix(html): fix hashCode for triangle
The bug caused HTML class and CSS selector to have different IDs, breaking triangle rendering.
2026-03-27 16:39:10 +01:00
da70c9f568 test: add HTML and SVG exporter unit tests
- Add HTMLExporterTest covering HTML structure, rectangle/circle div generation,
  empty and nested collections, and constructor
- Add SVGExporterTest covering SVG structure, rectangle/circle elements,
  color attributes, nested collections, and constructor
2026-03-27 14:29:38 +01:00
211f15658b test: add core unit tests
- Add JUnit 5 Jupiter dependencies to pom.xml
- Add maven-surefire-plugin for test execution
- Add AbstractShapeTest for base class methods
- Add SCircleTest, SRectangleTest, STriangleTest, STextTest

Tests cover: creation, bounds, clone, resize (AbstractShape)
2026-03-27 14:24:25 +01:00