diff --git a/jadx-core/src/test/java/jadx/core/xmlgen/ResXmlGenTest.java b/jadx-core/src/test/java/jadx/core/xmlgen/ResXmlGenTest.java new file mode 100644 index 000000000..74e921fa4 --- /dev/null +++ b/jadx-core/src/test/java/jadx/core/xmlgen/ResXmlGenTest.java @@ -0,0 +1,128 @@ +package jadx.core.xmlgen; + +import java.util.ArrayList; +import java.util.List; + +import org.assertj.core.util.Lists; +import org.junit.jupiter.api.Test; + +import jadx.core.xmlgen.entry.RawNamedValue; +import jadx.core.xmlgen.entry.RawValue; +import jadx.core.xmlgen.entry.ResourceEntry; +import jadx.core.xmlgen.entry.ValuesParser; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class ResXmlGenTest { + + @Test + void testSimpleAttr() { + ResourceStorage resStorage = new ResourceStorage(); + ResourceEntry re = new ResourceEntry(2130903103, "jadx.gui.app", "attr", "size", ""); + re.setNamedValues(Lists.list(new RawNamedValue(16777216, new RawValue(16, 64)))); + resStorage.add(re); + + ValuesParser vp = new ValuesParser(null, resStorage.getResourcesNames()); + ResXmlGen resXmlGen = new ResXmlGen(resStorage, vp); + List files = resXmlGen.makeResourcesXml(); + + assertEquals(1, files.size()); + assertEquals("res/values/attrs.xml", files.get(0).getFileName()); + assertEquals("\n" + + "\n" + + " \n" + + " \n" + + "", files.get(0).getText().toString()); + } + + @Test + void testAttrEnum() { + ResourceStorage resStorage = new ResourceStorage(); + ResourceEntry re = new ResourceEntry(2130903103, "jadx.gui.app", "attr", "size", ""); + re.setNamedValues( + Lists.list(new RawNamedValue(16777216, new RawValue(16, 65536)), new RawNamedValue(17039620, new RawValue(16, 1)))); + resStorage.add(re); + + ValuesParser vp = new ValuesParser(null, resStorage.getResourcesNames()); + ResXmlGen resXmlGen = new ResXmlGen(resStorage, vp); + List files = resXmlGen.makeResourcesXml(); + + assertEquals(1, files.size()); + assertEquals("res/values/attrs.xml", files.get(0).getFileName()); + assertEquals("\n" + + "\n" + + " \n" + + " \n" + + " \n" + + "", files.get(0).getText().toString()); + } + + @Test + void testAttrFlag() { + ResourceStorage resStorage = new ResourceStorage(); + ResourceEntry re = new ResourceEntry(2130903103, "jadx.gui.app", "attr", "size", ""); + re.setNamedValues( + Lists.list(new RawNamedValue(16777216, new RawValue(16, 131072)), new RawNamedValue(17039620, new RawValue(16, 1)))); + resStorage.add(re); + + ValuesParser vp = new ValuesParser(null, resStorage.getResourcesNames()); + ResXmlGen resXmlGen = new ResXmlGen(resStorage, vp); + List files = resXmlGen.makeResourcesXml(); + + assertEquals(1, files.size()); + assertEquals("res/values/attrs.xml", files.get(0).getFileName()); + assertEquals("\n" + + "\n" + + " \n" + + " \n" + + " \n" + + "", files.get(0).getText().toString()); + } + + @Test + void testStyle() { + ResourceStorage resStorage = new ResourceStorage(); + ResourceEntry re = new ResourceEntry(2130903103, "jadx.gui.app", "style", "JadxGui", ""); + re.setNamedValues(Lists.list(new RawNamedValue(16842836, new RawValue(1, 17170445)))); + resStorage.add(re); + + re = new ResourceEntry(2130903104, "jadx.gui.app", "style", "JadxGui.Dialog", ""); + re.setParentRef(2130903103); + re.setNamedValues(new ArrayList<>()); + resStorage.add(re); + ValuesParser vp = new ValuesParser(null, resStorage.getResourcesNames()); + ResXmlGen resXmlGen = new ResXmlGen(resStorage, vp); + List files = resXmlGen.makeResourcesXml(); + + assertEquals(1, files.size()); + assertEquals("res/values/styles.xml", files.get(0).getFileName()); + assertEquals("\n" + + "\n" + + " \n" + + " \n" + + "", files.get(0).getText().toString()); + } + + @Test + void testString() { + ResourceStorage resStorage = new ResourceStorage(); + ResourceEntry re = new ResourceEntry(2130903103, "jadx.gui.app", "string", "app_name", ""); + re.setSimpleValue(new RawValue(3, 0)); + re.setNamedValues(Lists.list()); + resStorage.add(re); + + ValuesParser vp = new ValuesParser(new String[] { "Jadx Decompiler App" }, resStorage.getResourcesNames()); + ResXmlGen resXmlGen = new ResXmlGen(resStorage, vp); + List files = resXmlGen.makeResourcesXml(); + + assertEquals(1, files.size()); + assertEquals("res/values/strings.xml", files.get(0).getFileName()); + assertEquals("\n" + + "\n" + + " Jadx Decompiler App\n" + + "", files.get(0).getText().toString()); + } +}