fun isShapeTest()

in skiko/src/commonTest/kotlin/org/jetbrains/skia/PathTests.kt [71:121]


    fun isShapeTest() {
        for (dir in PathDirection.values()) {
            for (start in 0..3) {
                Path().addRect(Rect.makeLTRB(0f, 0f, 40f, 20f), dir, start).use { p ->
                    assertEquals(Rect.makeLTRB(0f, 0f, 40f, 20f), p.isRect)
                    assertNull(p.isOval)
                    assertNull(p.isRRect)
                }
            }
        }
        for (dir in PathDirection.values()) {
            for (start in 0..3) {
                Path().addOval(Rect.makeLTRB(0f, 0f, 40f, 20f), dir, start).use { p ->
                    assertNull(p.isRect)
                    assertEquals(Rect.makeLTRB(0f, 0f, 40f, 20f), p.isOval)
                    assertNull(p.isRRect)
                }
            }
        }
        for (dir in PathDirection.values()) {
            Path().addCircle(20f, 20f, 20f, dir).use { p ->
                assertNull(p.isRect)
                assertEquals(Rect.makeLTRB(0f, 0f, 40f, 40f), p.isOval)
                assertNull(p.isRRect)
            }
        }
        for (dir in PathDirection.values()) {
            for (start in 0..7) {
                Path().addRRect(RRect.makeLTRB(0f, 0f, 40f, 20f, 5f), dir, start).use { p ->
                    assertNull(p.isRect)
                    assertNull(p.isOval)
                    assertEquals(RRect.makeLTRB(0f, 0f, 40f, 20f, 5f), p.isRRect)
                }
                Path().addRRect(RRect.makeLTRB(0f, 0f, 40f, 20f, 0f), dir, start).use { p ->
                    assertEquals(Rect.makeLTRB(0f, 0f, 40f, 20f), p.isRect)
                    assertNull(p.isOval)
                    assertNull(p.isRRect)
                }
                Path().addRRect(RRect.makeLTRB(0f, 0f, 40f, 20f, 20f, 10f), dir, start).use { p ->
                    assertNull(p.isRect)
                    assertEquals(Rect.makeLTRB(0f, 0f, 40f, 20f), p.isOval)
                    assertNull(p.isRRect)
                }
            }
        }
        Path().lineTo(40f, 40f).lineTo(40f, 0f).lineTo(0f, 40f).lineTo(0f, 0f).closePath().use { p ->
            assertNull(p.isRect)
            assertNull(p.isOval)
            assertNull(p.isRRect)
        }
    }