package org.odata4j.test.integration.expressions;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import junit.framework.Assert;
import org.core4j.Enumerable;
import org.core4j.Func;
import org.junit.Test;
import org.odata4j.consumer.ODataConsumer;
import org.odata4j.core.OEntity;
import org.odata4j.producer.inmemory.InMemoryProducer;
import org.odata4j.producer.resources.DefaultODataProducerProvider;
import org.odata4j.producer.server.ODataServer;
import org.odata4j.test.integration.AbstractRuntimeTest;
public class DateTimeFormatTest extends AbstractRuntimeTest {
public DateTimeFormatTest(RuntimeFacadeType type) {
super(type);
}
@Test
public void testDateTimeRoundtrip() throws Exception {
String endpointUri = "http://localhost:8810/DateTimeFormatTest.svc/";
final long now = 1292865839424L;
InMemoryProducer producer = new InMemoryProducer("DateTimeRoundtrip");
producer.register(DateTimeRoundtrip.class, "DateTimeRoundtrip",
new Func<Iterable<DateTimeRoundtrip>>() {
@Override
public Iterable<DateTimeRoundtrip> apply() {
return Enumerable.create(new DateTimeRoundtrip(1, new Date(now)));
}
}, "Key");
DefaultODataProducerProvider.setInstance(producer);
ODataServer server = this.rtFacade.startODataServer(endpointUri);
ODataConsumer c = this.rtFacade.createODataConsumer(endpointUri, null);
List<OEntity> oentities = c.getEntities("DateTimeRoundtrip").execute().toList();
Assert.assertEquals(1, oentities.size());
// preserve milliseconds
Assert.assertEquals(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").format(new Date(now)),
oentities.get(0).getProperty("Date").getValue().toString());
server.stop();
}
class DateTimeRoundtrip {
public DateTimeRoundtrip(long key, Date date) {
this.key = key;
this.date = date;
}
public long key;
public Date date;
public long getKey() {
return key;
}
public void setKey(long key) {
this.key = key;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
}