expectErrorInValueToString(instance, 1, null, null, EdmSimpleTypeException.LITERAL_KIND_MISSING);
}
@Test
public void valueToStringDateTime() throws Exception {
final EdmSimpleType instance = EdmSimpleTypeKind.DateTime.getEdmSimpleTypeInstance();
Calendar dateTime = Calendar.getInstance();
dateTime.clear();
dateTime.setTimeZone(TimeZone.getTimeZone("GMT+11:30"));
dateTime.set(2012, 2, 1, 11, 2, 3);
assertEquals("2012-02-29T23:32:03", instance.valueToString(dateTime, EdmLiteralKind.DEFAULT, null));
assertEquals("/Date(1330558323000)/", instance.valueToString(dateTime, EdmLiteralKind.JSON, null));
assertEquals("datetime'2012-02-29T23:32:03'", instance.valueToString(dateTime, EdmLiteralKind.URI, null));
dateTime.add(Calendar.MILLISECOND, 1);
assertEquals("2012-02-29T23:32:03.001", instance.valueToString(dateTime, EdmLiteralKind.DEFAULT, null));
assertEquals("/Date(1330558323001)/", instance.valueToString(dateTime, EdmLiteralKind.JSON, null));
assertEquals("datetime'2012-02-29T23:32:03.001'", instance.valueToString(dateTime, EdmLiteralKind.URI, null));
final Long millis = 1330558323007L;
assertEquals("2012-02-29T23:32:03.007", instance.valueToString(millis, EdmLiteralKind.DEFAULT, null));
assertEquals("/Date(" + millis + ")/", instance.valueToString(millis, EdmLiteralKind.JSON, null));
assertEquals("datetime'2012-02-29T23:32:03.007'", instance.valueToString(millis, EdmLiteralKind.URI, null));
assertEquals("2012-02-29T23:32:03.007", instance.valueToString(new Date(millis), EdmLiteralKind.DEFAULT, null));
dateTime.add(Calendar.MILLISECOND, 9);
assertEquals("2012-02-29T23:32:03.01", instance.valueToString(dateTime, EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(2, null)));
dateTime.add(Calendar.MILLISECOND, -10);
assertEquals("2012-02-29T23:32:03", instance.valueToString(dateTime, EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(0, null)));
dateTime.add(Calendar.MILLISECOND, -13);
assertEquals("2012-02-29T23:32:02.987", instance.valueToString(dateTime, EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(null, null)));
assertEquals("2012-02-29T23:32:02.98700", instance.valueToString(dateTime, EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(5, null)));
dateTime.add(Calendar.MILLISECOND, 3);
assertEquals("2012-02-29T23:32:02.99", instance.valueToString(dateTime, EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(2, null)));
dateTime.add(Calendar.MILLISECOND, -90);
assertEquals("2012-02-29T23:32:02.9", instance.valueToString(dateTime, EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(1, null)));
dateTime.add(Calendar.MILLISECOND, 100);
assertEquals("2012-02-29T23:32:03.0000000", instance.valueToString(dateTime, EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(7, null)));
Calendar dateTime2 = Calendar.getInstance(TimeZone.getTimeZone("GMT-11:30"));
dateTime2.clear();
dateTime2.set(1969, 11, 31, 12, 29, 58);
assertEquals("/Date(-2000)/", instance.valueToString(dateTime2, EdmLiteralKind.JSON, null));
dateTime.add(Calendar.MILLISECOND, -100);
expectErrorInValueToString(instance, dateTime, EdmLiteralKind.DEFAULT, getPrecisionScaleFacets(0, null),
EdmSimpleTypeException.VALUE_FACETS_NOT_MATCHED);