fun utilsTest()

in skiko/src/commonTest/kotlin/org/jetbrains/skia/PathTests.kt [196:227]


    fun utilsTest() {
        assertFalse(Path.isLineDegenerate(Point(0f, 0f), Point(10f, 0f), false))
        assertTrue(Path.isLineDegenerate(Point(0f, 0f), Point(0f, 0f), true))
        assertTrue(Path.isLineDegenerate(Point(0f, 0f), Point(0f, 0f), false))
        assertFalse(Path.isLineDegenerate(Point(0f, 0f), Point(0f, 1e-13f), true))
        assertFalse(Path.isQuadDegenerate(Point(0f, 0f), Point(10f, 0f), Point(0f, 0f), false))
        assertTrue(Path.isQuadDegenerate(Point(0f, 0f), Point(0f, 0f), Point(0f, 0f), false))
        assertFalse(Path.isCubicDegenerate(Point(0f, 0f), Point(10f, 0f), Point(0f, 0f), Point(0f, 0f), false))
        assertTrue(Path.isCubicDegenerate(Point(0f, 0f), Point(0f, 0f), Point(0f, 0f), Point(0f, 0f), false))
        assertContentCloseEnough(
            arrayOf(Point(0f, 20f), Point(6.666667f, 13.333334f)),
            Path.convertConicToQuads(Point(0f, 20f), Point(20f, 0f), Point(40f, 20f), 0.5f, 1)
        )
        assertContentCloseEnough(
            arrayOf(
                Point(0f, 20f),
                Point(3.0940108f, 16.90599f),
                Point(8.4529950f, 15.119661f),
                Point(13.811979f, 13.333334f)
            ),
            Path.convertConicToQuads(Point(0f, 20f), Point(20f, 0f), Point(40f, 20f), 0.5f, 2)
        )
        Path().lineTo(40f, 40f).use { p ->
            val g1 = p.generationId
            p.lineTo(10f, 40f)
            val g2 = p.generationId
            assertNotEquals(g1, g2)
            p.fillMode = PathFillMode.EVEN_ODD
            val g3 = p.generationId
            assertEquals(g2, g3)
        }
    }