expectUnconvertibleErrorInValueOfString(instance, "128", Byte.class);
}
@Test
public void valueOfStringDateTime() throws Exception {
final EdmSimpleType instance = EdmSimpleTypeKind.DateTime.getEdmSimpleTypeInstance();
Calendar dateTime = Calendar.getInstance();
dateTime.clear();
dateTime.setTimeZone(TimeZone.getTimeZone("GMT"));
dateTime.set(2012, 1, 29, 23, 32, 3);
assertEquals(dateTime, instance.valueOfString("2012-02-29T23:32:03", EdmLiteralKind.DEFAULT, null, Calendar.class));
assertEquals(Long.valueOf(dateTime.getTimeInMillis()), instance.valueOfString("2012-02-29T23:32:03",
EdmLiteralKind.JSON, null, Long.class));
assertEquals(dateTime, instance.valueOfString("/Date(1330558323000)/", EdmLiteralKind.JSON, null, Calendar.class));
assertEquals(Long.valueOf(dateTime.getTimeInMillis()), instance.valueOfString("/Date(1330558323000)/",
EdmLiteralKind.JSON, null, Long.class));
assertEquals(dateTime.getTime(), instance.valueOfString("/Date(1330558323000)/", EdmLiteralKind.JSON, null,
Date.class));
assertEquals(dateTime.getTime(), instance.valueOfString("datetime'2012-02-29T23:32:03'", EdmLiteralKind.URI, null,
Date.class));
dateTime.add(Calendar.MILLISECOND, 1);
assertEquals(Long.valueOf(dateTime.getTimeInMillis()), instance.valueOfString("2012-02-29T23:32:03.001",
EdmLiteralKind.DEFAULT, null, Long.class));
assertEquals(dateTime.getTime(), instance.valueOfString("/Date(1330558323001)/", EdmLiteralKind.JSON, null,
Date.class));
assertEquals(dateTime, instance.valueOfString("datetime'2012-02-29T23:32:03.001'", EdmLiteralKind.URI, null,
Calendar.class));
dateTime.add(Calendar.MILLISECOND, 9);
assertEquals(dateTime, instance.valueOfString("2012-02-29T23:32:03.01", EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(2, null), Calendar.class));
assertEquals(dateTime, instance.valueOfString("2012-02-29T23:32:03.0100000", EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(2, null), Calendar.class));
dateTime.add(Calendar.MILLISECOND, -10);
assertEquals(dateTime, instance.valueOfString("2012-02-29T23:32:03.000", EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(0, null), Calendar.class));
dateTime.add(Calendar.MILLISECOND, -13);
assertEquals(dateTime, instance.valueOfString("2012-02-29T23:32:02.987", EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(null, null), Calendar.class));
assertEquals(dateTime, instance.valueOfString("2012-02-29T23:32:02.98700", EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(5, null), Calendar.class));
dateTime.add(Calendar.MILLISECOND, 3);
assertEquals(dateTime, instance.valueOfString("2012-02-29T23:32:02.99", EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(2, null), Calendar.class));
dateTime.add(Calendar.MILLISECOND, -90);
assertEquals(dateTime, instance.valueOfString("2012-02-29T23:32:02.9", EdmLiteralKind.DEFAULT,
getPrecisionScaleFacets(1, null), Calendar.class));
dateTime.add(Calendar.MILLISECOND, -2900);
assertEquals(dateTime, instance.valueOfString("2012-02-29T23:32", EdmLiteralKind.DEFAULT, null, Calendar.class));
dateTime.clear();
dateTime.setTimeZone(TimeZone.getTimeZone("GMT"));
dateTime.set(1969, 11, 31, 23, 59, 18);
assertEquals(dateTime, instance.valueOfString("/Date(-42000)/", EdmLiteralKind.JSON, null, Calendar.class));
expectErrorInValueOfString(instance, "2012-02-29T23:32:02.9", EdmLiteralKind.DEFAULT, getPrecisionScaleFacets(0,
null), EdmSimpleTypeException.LITERAL_FACETS_NOT_MATCHED);
expectErrorInValueOfString(instance, "2012-02-29T23:32:02.98700", EdmLiteralKind.DEFAULT, getPrecisionScaleFacets(
2, null), EdmSimpleTypeException.LITERAL_FACETS_NOT_MATCHED);