summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorPaulo Casanova <pasc@google.com>2017-05-08 13:42:16 +0100
committerPaulo Casanova <pasc@google.com>2017-05-08 13:43:19 +0100
commit6fb3edd101b373e026ef3e8bcae35e8dd111dd7f (patch)
tree41df20dbd9c57d156bef905771ac86268ede1487 /src/test
parent4a3db1dabcf1c7ad66b186059a8493cc69e7ca67 (diff)
downloadapkzlib-6fb3edd101b373e026ef3e8bcae35e8dd111dd7f.tar.gz
Updated ZFile to use UTF-8 if needed.
If ASCII decoding fails, ZFile will now automatically try UTF-8. Change-Id: I29ef2cf3c043cf31d6c07c70271297356d2571f2 Test: Included
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/android/apkzlib/zip/EncodeUtilsTest.java13
-rw-r--r--src/test/java/com/android/apkzlib/zip/ZFileTest.java25
2 files changed, 38 insertions, 0 deletions
diff --git a/src/test/java/com/android/apkzlib/zip/EncodeUtilsTest.java b/src/test/java/com/android/apkzlib/zip/EncodeUtilsTest.java
index 0eaf1cb..8648aa0 100644
--- a/src/test/java/com/android/apkzlib/zip/EncodeUtilsTest.java
+++ b/src/test/java/com/android/apkzlib/zip/EncodeUtilsTest.java
@@ -56,4 +56,17 @@ public class EncodeUtilsTest {
(byte) 0xd0, (byte) 0xb0 }, encoded);
assertEquals(kazakhCapital, EncodeUtils.decode(encoded, flags));
}
+
+ @Test
+ public void asciiDecodeAsUtf8() {
+ byte[] greatWallChinese =
+ new byte[] {
+ (byte) 0xe9, (byte) 0x95, (byte) 0xB7, (byte) 0xe5, (byte) 0x9F, (byte) 0x8E
+ };
+
+ GPFlags flags = GPFlags.make(false);
+
+ String text = EncodeUtils.decode(greatWallChinese, flags);
+ assertEquals("\u9577\u57ce", text);
+ }
}
diff --git a/src/test/java/com/android/apkzlib/zip/ZFileTest.java b/src/test/java/com/android/apkzlib/zip/ZFileTest.java
index 7497412..f6062e7 100644
--- a/src/test/java/com/android/apkzlib/zip/ZFileTest.java
+++ b/src/test/java/com/android/apkzlib/zip/ZFileTest.java
@@ -951,6 +951,31 @@ public class ZFileTest {
filetMignonKorean + " " + isGoodJapanese,
entry.getCentralDirectoryHeader().getName());
assertArrayEquals(
+ "Stuff about food is good.\n".getBytes(Charsets.US_ASCII), entry.read());
+ }
+ }
+
+ @Test
+ public void utf8NamesSupportedOnReadingWithoutUtf8Flag() throws Exception {
+ File zip = ZipTestUtils.cloneRsrc("zip-with-utf8-filename.zip", mTemporaryFolder);
+
+ // Reset bytes 7 and 122 that have the flag in the local header and central directory.
+ byte[] data = Files.toByteArray(zip);
+ data[7] = 0;
+ data[122] = 0;
+ Files.write(data, zip);
+
+ try (ZFile f = new ZFile(zip)) {
+ assertEquals(1, f.entries().size());
+
+ StoredEntry entry = f.entries().iterator().next();
+ String filetMignonKorean = "\uc548\uc2eC \uc694\ub9ac";
+ String isGoodJapanese = "\u3068\u3066\u3082\u826f\u3044";
+
+ assertEquals(
+ filetMignonKorean + " " + isGoodJapanese,
+ entry.getCentralDirectoryHeader().getName());
+ assertArrayEquals(
"Stuff about food is good.\n".getBytes(Charsets.US_ASCII),
entry.read());
}