@@ -13,6 +13,7 @@ import io.github.composegears.valkyrie.parser.kmp.xml.XmlToImageVectorParser
1313import io.github.composegears.valkyrie.resource.loader.ResourceLoader.getResourceText
1414import kotlin.test.Test
1515import kotlin.test.assertEquals
16+ import kotlin.test.assertFalse
1617import kotlin.test.assertTrue
1718
1819class IrToXmlGeneratorTest {
@@ -237,8 +238,6 @@ class IrToXmlGeneratorTest {
237238 val expectedPathData =
238239 " M 6.75 12.127 L 3.623 9 L 2.558 10.057 L 6.75 14.25 L 15.75 5.25 L 14.693 4.192 L 6.75 12.127 Z"
239240 assertTrue(generatedXml.contains(expectedPathData))
240-
241- assertPathDefaults(generatedXml)
242241 }
243242
244243 @Test
@@ -310,8 +309,6 @@ class IrToXmlGeneratorTest {
310309 val expectedPathData =
311310 " M 6.75 12.127 L 3.623 9 L 2.558 10.057 L 6.75 14.25 L 15.75 5.25 L 14.693 4.192 L 6.75 12.127 Z"
312311 assertTrue(generatedXml.contains(expectedPathData))
313-
314- assertPathDefaults(generatedXml)
315312 }
316313
317314 @Test
@@ -343,7 +340,6 @@ class IrToXmlGeneratorTest {
343340
344341 assertTrue(generatedXml.contains(" android:fillColor=\" #FFE676FF\" " )) // #e676ff becomes #FFE676FF
345342 assertTrue(generatedXml.contains(" android:fillColor=\" #FFFF00FF\" " )) // #ff00ff becomes #FFFF00FF
346- assertPathDefaults(generatedXml)
347343 }
348344
349345 @Test
@@ -389,8 +385,6 @@ class IrToXmlGeneratorTest {
389385 assertTrue(generatedXml.contains(" android:fillColor=\" #FF232F34\" " ))
390386
391387 assertTrue(generatedXml.contains(" M 21" ))
392-
393- assertPathDefaults(generatedXml)
394388 }
395389
396390 @Test
@@ -538,24 +532,55 @@ class IrToXmlGeneratorTest {
538532 assertTrue(generatedXml.contains(" M 0 0 h 24 v 24 h -24 Z" ))
539533 }
540534
535+ @Test
536+ fun `parse ImageVector with default values should exclude them from XML output` () {
537+ val imageVector = IrImageVector (
538+ defaultWidth = 24f ,
539+ defaultHeight = 24f ,
540+ viewportWidth = 24f ,
541+ viewportHeight = 24f ,
542+ autoMirror = false ,
543+ nodes = listOf (
544+ IrVectorNode .IrPath (
545+ pathFillType = IrPathFillType .NonZero ,
546+ fill = IrFill .Color (IrColor (0xffffffff )),
547+ fillAlpha = 1f ,
548+ strokeAlpha = 1f ,
549+ paths = emptyList(),
550+ ),
551+ ),
552+ )
553+
554+ val result = IrToXmlGenerator .generate(imageVector)
555+
556+ with (result) {
557+ // Default values should not be present in the XML
558+ assertFalse(contains(" android:autoMirrored=\" false\" " ), " Default autoMirrored=false should not be in XML" )
559+ assertFalse(contains(" android:fillType=\" nonZero\" " ), " Default fillType=nonZero should not be in XML" )
560+ assertFalse(contains(" android:fillAlpha=\" 1.0\" " ), " Default fillAlpha=1.0 should not be in XML" )
561+ assertFalse(contains(" android:strokeAlpha=\" 1.0\" " ), " Default strokeAlpha=1.0 should not be in XML" )
562+
563+ // Non-default values should be present
564+ assertTrue(contains(" android:fillColor=\" #FFFFFFFF\" " ), " Non-default fillColor should be in XML" )
565+ assertTrue(contains(" android:pathData=\"\" " ), " pathData should always be present" )
566+ }
567+ }
568+
541569 private fun roundTripGenerateXml (resourcePath : String ): String {
542570 val originalXml = getResourceText(resourcePath)
543571 val imageVector = XmlToImageVectorParser .parse(originalXml)
544572 return IrToXmlGenerator .generate(imageVector)
545573 }
546574
547- private fun assertPathDefaults (xml : String ) {
548- assertTrue(xml.contains(" android:fillType=\" nonZero\" " ))
549- assertTrue(xml.contains(" android:fillAlpha=\" 1.0\" " ))
550- }
551-
552575 private fun validateVectorAttributes (xml : String , size : Int , viewportSize : Float , autoMirrored : Boolean = false) {
553576 with (xml) {
554577 assertTrue(contains(" android:width=\" ${size} dp\" " ))
555578 assertTrue(contains(" android:height=\" ${size} dp\" " ))
556579 assertTrue(contains(" android:viewportWidth=\" $viewportSize \" " ))
557580 assertTrue(contains(" android:viewportHeight=\" $viewportSize \" " ))
558- assertTrue(contains(" android:autoMirrored=\" $autoMirrored \" " ))
581+ if (autoMirrored) {
582+ assertTrue(contains(" android:autoMirrored=\" true\" " ))
583+ }
559584 }
560585 }
561586
0 commit comments