diff --git a/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java b/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java
index 057cd17..e6933e6 100644
--- a/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java
+++ b/luni/src/test/java/libcore/java/text/DateFormatSymbolsTest.java
@@ -147,17 +147,17 @@
     }
 
     // http://b/7955614
-    public void test_getZoneStrings_Apia() throws Exception {
+    public void test_getZoneStrings_GMT_short_names() throws Exception {
         String[][] array = DateFormatSymbols.getInstance(Locale.US).getZoneStrings();
         for (int i = 0; i < array.length; ++i) {
             String[] row = array[i];
-            // Pacific/Apia is somewhat arbitrary; we just want a zone we have to generate
+            // America/Santiago is somewhat arbitrary; we just want a zone we have to generate
             // "GMT" strings for the short names.
-            if (row[0].equals("Pacific/Apia")) {
-                assertEquals("Samoa Standard Time", row[1]);
-                assertEquals("GMT+13:00", row[2]);
-                assertEquals("Samoa Daylight Time", row[3]);
-                assertEquals("GMT+14:00", row[4]);
+            if (row[0].equals("America/Santiago")) {
+                assertEquals("Chile Standard Time", row[1]);
+                assertEquals("GMT-03:00", row[2]);
+                assertEquals("Chile Summer Time", row[3]);
+                assertEquals("GMT-03:00", row[4]);
             }
         }
     }
diff --git a/luni/src/test/java/libcore/java/util/TimeZoneTest.java b/luni/src/test/java/libcore/java/util/TimeZoneTest.java
index caf635c..1ca950c 100644
--- a/luni/src/test/java/libcore/java/util/TimeZoneTest.java
+++ b/luni/src/test/java/libcore/java/util/TimeZoneTest.java
@@ -256,12 +256,12 @@
     }
 
     // http://b/7955614
-    public void testApia() throws Exception {
-        TimeZone tz = TimeZone.getTimeZone("Pacific/Apia");
-        assertEquals("Samoa Daylight Time", tz.getDisplayName(true, TimeZone.LONG, Locale.US));
-        assertEquals("Samoa Standard Time", tz.getDisplayName(false, TimeZone.LONG, Locale.US));
-        assertEquals("GMT+14:00", tz.getDisplayName(true, TimeZone.SHORT, Locale.US));
-        assertEquals("GMT+13:00", tz.getDisplayName(false, TimeZone.SHORT, Locale.US));
+    public void test_getDisplayName_GMT_short_names() throws Exception {
+        TimeZone tz = TimeZone.getTimeZone("America/Santiago");
+        assertEquals("Chile Summer Time", tz.getDisplayName(true, TimeZone.LONG, Locale.US));
+        assertEquals("Chile Standard Time", tz.getDisplayName(false, TimeZone.LONG, Locale.US));
+        assertEquals("GMT-03:00", tz.getDisplayName(true, TimeZone.SHORT, Locale.US));
+        assertEquals("GMT-03:00", tz.getDisplayName(false, TimeZone.SHORT, Locale.US));
     }
 
     private static boolean isGmtString(String s) {
