@Test
  public void testToStringForTimeZone_fromApiDate() {
    Assert.assertEquals(
        stringDateTime1, DateTimes.toStringForTimeZone(apiDateTime1, TIME_ZONE_ID1));
    Assert.assertEquals(
        stringDateTime2, DateTimes.toStringForTimeZone(apiDateTime2, TIME_ZONE_ID2));
    Assert.assertEquals(
        stringDateTime3, DateTimes.toStringForTimeZone(apiDateTime3, TIME_ZONE_ID3));

    Assert.assertEquals(
        stringDateTime1,
        DateTimes.toStringForTimeZone(
            DateTimes.toDateTime(jodaDateTime1.withZone(DateTimeZone.forID(TIME_ZONE_ID2))),
            TIME_ZONE_ID1));
    Assert.assertEquals(
        stringDateTime2,
        DateTimes.toStringForTimeZone(
            DateTimes.toDateTime(jodaDateTime2.withZone(DateTimeZone.forID(TIME_ZONE_ID1))),
            TIME_ZONE_ID2));
    Assert.assertEquals(
        stringDateTime3,
        DateTimes.toStringForTimeZone(
            DateTimes.toDateTime(jodaDateTime3.withZone(DateTimeZone.forID(TIME_ZONE_ID1))),
            TIME_ZONE_ID3));
  }
 @Test
 public void testToDateTime_fromApiDateTimeToJoda() {
   Object joda = DateTimes.toDateTime(apiDateTime3);
   assertEquals(jodaDateTime1, DateTimes.toDateTime(apiDateTime1));
   assertEquals(jodaDateTime2, DateTimes.toDateTime(apiDateTime2));
   assertEquals(jodaDateTime3, DateTimes.toDateTime(apiDateTime3));
 }
 @Test
 public void testTransitive_apiStringApi() {
   assertEquals(
       apiDateTime1, DateTimes.toDateTime(DateTimes.toString(apiDateTime1), TIME_ZONE_ID1));
   assertEquals(
       apiDateTime2, DateTimes.toDateTime(DateTimes.toString(apiDateTime2), TIME_ZONE_ID2));
   assertEquals(
       apiDateTime3, DateTimes.toDateTime(DateTimes.toString(apiDateTime3), TIME_ZONE_ID3));
 }
 @Test
 public void testTransitive_stringApiJodaWithTimeZone() {
   assertEquals(
       jodaDateTime1,
       DateTimes.toDateTime(DateTimes.toDateTimeWithTimeZone(stringDateTimeWithTimeZone1)));
   assertEquals(
       jodaDateTime2,
       DateTimes.toDateTime(DateTimes.toDateTimeWithTimeZone(stringDateTimeWithTimeZone2)));
   assertEquals(
       jodaDateTime3,
       DateTimes.toDateTime(DateTimes.toDateTimeWithTimeZone(stringDateTimeWithTimeZone3)));
 }
 @Test
 public void testTransitive_stringApiJoda() {
   assertEquals(
       jodaDateTime1, DateTimes.toDateTime(DateTimes.toDateTime(stringDateTime1, TIME_ZONE_ID1)));
   assertEquals(
       jodaDateTime2, DateTimes.toDateTime(DateTimes.toDateTime(stringDateTime2, TIME_ZONE_ID2)));
   assertEquals(
       jodaDateTime3, DateTimes.toDateTime(DateTimes.toDateTime(stringDateTime3, TIME_ZONE_ID3)));
 }
 @Test
 public void testTransitive_instantApiJoda() {
   assertEquals(
       jodaDateTime1,
       DateTimes.toDateTime(DateTimes.toDateTime(jodaDateTime1.toInstant(), TIME_ZONE_ID1)));
   assertEquals(
       jodaDateTime2,
       DateTimes.toDateTime(DateTimes.toDateTime(jodaDateTime2.toInstant(), TIME_ZONE_ID2)));
   assertEquals(
       jodaDateTime3,
       DateTimes.toDateTime(DateTimes.toDateTime(jodaDateTime3.toInstant(), TIME_ZONE_ID3)));
 }
 @Test
 public void testTransitive_calendarApiJoda() {
   assertEquals(jodaDateTime1, DateTimes.toDateTime(DateTimes.toDateTime(calendar1)));
   assertEquals(jodaDateTime2, DateTimes.toDateTime(DateTimes.toDateTime(calendar2)));
   assertEquals(jodaDateTime3, DateTimes.toDateTime(DateTimes.toDateTime(calendar3)));
 }
 @Test
 public void testTransitive_jodaApiJoda() {
   assertEquals(jodaDateTime1, DateTimes.toDateTime(DateTimes.toDateTime(jodaDateTime1)));
   assertEquals(jodaDateTime2, DateTimes.toDateTime(DateTimes.toDateTime(jodaDateTime2)));
   assertEquals(jodaDateTime3, DateTimes.toDateTime(DateTimes.toDateTime(jodaDateTime3)));
 }
 @Test
 public void testTransitive_apiCalendarApi() {
   assertEquals(apiDateTime1, DateTimes.toDateTime(DateTimes.toCalendar(apiDateTime1)));
   assertEquals(apiDateTime2, DateTimes.toDateTime(DateTimes.toCalendar(apiDateTime2)));
   assertEquals(apiDateTime3, DateTimes.toDateTime(DateTimes.toCalendar(apiDateTime3)));
 }
 @Test
 public void testToDateTime_fromStringToApiDateTime() {
   assertEquals(apiDateTime1, DateTimes.toDateTime(stringDateTime1, TIME_ZONE_ID1));
   assertEquals(apiDateTime2, DateTimes.toDateTime(stringDateTime2, TIME_ZONE_ID2));
   assertEquals(apiDateTime3, DateTimes.toDateTime(stringDateTime3, TIME_ZONE_ID3));
 }
 @Test
 public void testToDateTime_fromCalendarToApiDateTime() {
   assertEquals(apiDateTime1, DateTimes.toDateTime(calendar1));
   assertEquals(apiDateTime2, DateTimes.toDateTime(calendar2));
   assertEquals(apiDateTime3, DateTimes.toDateTime(calendar3));
 }
 @Test
 public void testToDateTime_fromInstantToApiDateTime() {
   assertEquals(apiDateTime1, DateTimes.toDateTime(jodaDateTime1.toInstant(), TIME_ZONE_ID1));
   assertEquals(apiDateTime2, DateTimes.toDateTime(jodaDateTime2.toInstant(), TIME_ZONE_ID2));
   assertEquals(apiDateTime3, DateTimes.toDateTime(jodaDateTime3.toInstant(), TIME_ZONE_ID3));
 }