diff options
author | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-11-28 18:23:49 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2022-11-28 18:23:49 +0000 |
commit | 3bc750b857ed07436bc9ac08ca5c3cb7ec0d23a1 (patch) | |
tree | 69aa8e8e8c9ed6cada93d66808234388c16542f0 | |
parent | aa5bdf0a32bf10f897dd20de0eb6b23714535ca3 (diff) | |
parent | cc1a482526ff285534674d2841da2742f75afaa4 (diff) | |
download | robolectric-main-16k.tar.gz |
Merge "Merge "Update ShadowDateIntervalFormat due to DataIntervalFormat class moved to a diff package" am: 9a98cc0c1e" into main-16kmain-16k
3 files changed, 48 insertions, 5 deletions
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowDateIntervalFormatTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowDateIntervalFormatTest.java index bde0e7263..f9721e464 100644 --- a/robolectric/src/test/java/org/robolectric/shadows/ShadowDateIntervalFormatTest.java +++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowDateIntervalFormatTest.java @@ -1,6 +1,6 @@ package org.robolectric.shadows; -import static android.os.Build.VERSION_CODES.M; +import static android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE; import static com.google.common.truth.Truth.assertThat; import android.icu.text.DateFormat; @@ -12,13 +12,13 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import java.text.ParseException; import java.util.Calendar; import java.util.Date; -import libcore.icu.DateIntervalFormat; +import android.text.format.DateIntervalFormat; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.annotation.Config; @RunWith(AndroidJUnit4.class) -@Config(minSdk = M) +@Config(minSdk = UPSIDE_DOWN_CAKE) public class ShadowDateIntervalFormatTest { @Test public void testDateInterval_FormatDateRange() throws ParseException { diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDateIntervalFormat.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDateIntervalFormat.java index abbed64fb..83d5235c0 100644 --- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDateIntervalFormat.java +++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDateIntervalFormat.java @@ -2,16 +2,17 @@ package org.robolectric.shadows; import static android.os.Build.VERSION_CODES.KITKAT; import static android.os.Build.VERSION_CODES.LOLLIPOP_MR1; +import static android.os.Build.VERSION_CODES.TIRAMISU; import java.text.FieldPosition; import java.util.HashMap; import java.util.Locale; import java.util.Map; -import libcore.icu.DateIntervalFormat; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; -@Implements(value = DateIntervalFormat.class, isInAndroidSdk = false, minSdk = KITKAT) +@Implements(className = "libcore.icu.DateIntervalFormat", isInAndroidSdk = false, minSdk = KITKAT, + maxSdk = TIRAMISU) public class ShadowDateIntervalFormat { private static long address; diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDateIntervalFormatU.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDateIntervalFormatU.java new file mode 100644 index 000000000..ac435c46f --- /dev/null +++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDateIntervalFormatU.java @@ -0,0 +1,42 @@ +package org.robolectric.shadows; + +import static android.os.Build.VERSION_CODES.LOLLIPOP_MR1; +import static android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE; + +import java.text.FieldPosition; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import android.text.format.DateIntervalFormat; +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; + +@Implements(value = DateIntervalFormat.class, isInAndroidSdk = false, minSdk = UPSIDE_DOWN_CAKE) +public class ShadowDateIntervalFormatU { + + private static long address; + private static Map<Long, com.ibm.icu.text.DateIntervalFormat> INTERVAL_CACHE = new HashMap<>(); + + @Implementation + public static long createDateIntervalFormat(String skeleton, String localeName, String tzName) { + address++; + INTERVAL_CACHE.put(address, com.ibm.icu.text.DateIntervalFormat.getInstance(skeleton, new Locale(localeName))); + return address; + } + + @Implementation + public static void destroyDateIntervalFormat(long address) { + INTERVAL_CACHE.remove(address); + } + + @Implementation + @SuppressWarnings("JdkObsolete") + public static String formatDateInterval(long address, long fromDate, long toDate) { + StringBuffer buffer = new StringBuffer(); + + FieldPosition pos = new FieldPosition(0); + INTERVAL_CACHE.get(address).format(new com.ibm.icu.util.DateInterval(fromDate, toDate), buffer, pos); + + return buffer.toString(); + } +} |