summaryrefslogtreecommitdiffstats
path: root/luni/src/test/java/libcore/java/util/CalendarTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'luni/src/test/java/libcore/java/util/CalendarTest.java')
-rw-r--r--luni/src/test/java/libcore/java/util/CalendarTest.java72
1 files changed, 72 insertions, 0 deletions
diff --git a/luni/src/test/java/libcore/java/util/CalendarTest.java b/luni/src/test/java/libcore/java/util/CalendarTest.java
index e0e1a35..2e13ad8 100644
--- a/luni/src/test/java/libcore/java/util/CalendarTest.java
+++ b/luni/src/test/java/libcore/java/util/CalendarTest.java
@@ -263,4 +263,76 @@ public class CalendarTest extends junit.framework.TestCase {
b.setTime(d);
assertEquals(a, b);
}
+
+ public void testCloneMakesDeepCopyOfCalendarFields() {
+ FakeCalendar c = new FakeCalendar();
+ FakeCalendar c2 = (FakeCalendar) c.clone();
+
+ assertFalse(c.getTimeZone() == c2.getTimeZone());
+ assertEquals(c.getTimeZone(), c2.getTimeZone());
+
+ // The default clone() implementation makes a deep copy of calendar
+ // fields...
+ assertFalse(c.getCalenderFields() == c2.getCalenderFields());
+ // ,,, and a shallow copy of subclass fields.
+ assertSame(c.getSubclassFields(), c2.getSubclassFields());
+ }
+
+ public static class FakeCalendar extends Calendar {
+
+ private int[] subclassFields;
+
+ public FakeCalendar() {
+ super(TimeZone.getDefault(), Locale.getDefault());
+ subclassFields = new int[12];
+ }
+
+ public int[] getCalenderFields() {
+ return fields;
+ }
+
+ public int[] getSubclassFields() {
+ return subclassFields;
+ }
+
+ @Override
+ public void add(int field, int value) {
+
+ }
+
+ @Override
+ protected void computeFields() {
+
+ }
+
+ @Override
+ protected void computeTime() {
+
+ }
+
+ @Override
+ public int getGreatestMinimum(int field) {
+ return 0;
+ }
+
+ @Override
+ public int getLeastMaximum(int field) {
+ return 0;
+ }
+
+ @Override
+ public int getMaximum(int field) {
+ return 0;
+ }
+
+ @Override
+ public int getMinimum(int field) {
+ return 0;
+ }
+
+ @Override
+ public void roll(int field, boolean increment) {
+
+ }
+ }
}