/*
* Copyright (c) 2010 Mysema Ltd.
* All rights reserved.
*
*/
package com.mysema.rdfbean.sesame.query;
import static com.mysema.query.alias.Alias.$;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Date;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.LocalDate;
import org.junit.Test;
import com.mysema.query.alias.Alias;
import com.mysema.rdfbean.domains.LiteralsDomain;
import com.mysema.rdfbean.domains.LiteralsDomain.Literals;
import com.mysema.rdfbean.sesame.SessionTestBase;
import com.mysema.rdfbean.testutil.SessionConfig;
@SessionConfig(Literals.class)
public class LiteralsTest extends SessionTestBase implements LiteralsDomain {
private final Literals l = Alias.alias(Literals.class);
@Test
public void test() {
Literals literals = new Literals();
literals.booleanValue = true;
literals.byteValue = (byte) 1;
literals.dateValue = new Date();
literals.doubleValue = 2.0;
literals.floatValue = (float) 3.0;
literals.intValue = 4;
literals.longValue = 5l;
literals.shortValue = (short) 6;
literals.stringValue = "7";
session.save(literals);
assertEquals(Boolean.valueOf(literals.isBooleanValue()), session.from($(l)).uniqueResult($(l.isBooleanValue())));
assertEquals(Byte.valueOf(literals.getByteValue()), session.from($(l)).uniqueResult($(l.getByteValue())));
assertEquals(literals.getDateValue(), session.from($(l)).uniqueResult($(l.getDateValue())));
assertEquals(Double.valueOf(literals.getDoubleValue()), session.from($(l)).uniqueResult($(l.getDoubleValue())));
assertEquals(Float.valueOf(literals.getFloatValue()), session.from($(l)).uniqueResult($(l.getFloatValue())));
assertEquals(Integer.valueOf(literals.getIntValue()), session.from($(l)).uniqueResult($(l.getIntValue())));
assertEquals(Long.valueOf(literals.getLongValue()), session.from($(l)).uniqueResult($(l.getLongValue())));
assertEquals(Short.valueOf(literals.getShortValue()), session.from($(l)).uniqueResult($(l.getShortValue())));
assertEquals(literals.getStringValue(), session.from($(l)).uniqueResult($(l.getStringValue())));
}
@Test
public void Boolean() {
Literals literals = new Literals();
literals.booleanValue = true;
session.save(literals);
session.flush();
session.clear();
// load
literals = session.get(Literals.class, literals.getId());
assertTrue(literals.isBooleanValue());
session.clear();
assertEquals(1l, session.from($(l)).where($(l.isBooleanValue()).eq(true)).count());
assertEquals(0l, session.from($(l)).where($(l.isBooleanValue()).eq(false)).count());
// change
literals.booleanValue = false;
session.save(literals);
session.flush();
session.clear();
// reload
literals = session.get(Literals.class, literals.getId());
assertFalse(literals.isBooleanValue());
session.clear();
assertEquals(0l, session.from($(l)).where($(l.isBooleanValue()).eq(true)).count());
assertEquals(1l, session.from($(l)).where($(l.isBooleanValue()).eq(false)).count());
}
@Test
public void LocalDate_2000_01_01() {
testDatePersistence(new LocalDate(2000, 01, 01));
}
@Test
public void LocalDate_1934_10_10() {
testDatePersistence(new LocalDate(1934, 10, 10));
}
@Test
public void LocalDate_1900_02_02() {
testDatePersistence(new LocalDate(1900, 02, 02));
}
@Test
public void LocalDate_1900_01_03() {
testDatePersistence(new LocalDate(1900, 01, 03));
}
@Test
public void LocalDate_1900_01_02() {
testDatePersistence(new LocalDate(1900, 01, 02));
}
@Test
public void LocalDate_1900_01_01() {
testDatePersistence(new LocalDate(1900, 01, 01));
}
@Test
public void LocalDate_1834_10_10() {
testDatePersistence(new LocalDate(1834, 10, 10));
}
@Test
public void LocalDate_1734_10_10() {
testDatePersistence(new LocalDate(1734, 10, 10));
}
@Test
public void DateTime_2000_01_01() {
testDateTimePersistence(new DateTime(2000, 1, 1, 0, 0, 0, 0));
}
@Test
public void DateTime_2000_01_01_UTC() {
testDateTimePersistence(new DateTime(2000, 1, 1, 0, 0, 0, 0).withZoneRetainFields(DateTimeZone.UTC));
}
@Test
public void DateTime_2000_01_01_Plus_1() {
testDateTimePersistence(new DateTime(2000, 1, 1, 0, 0, 0, 0).withZoneRetainFields(DateTimeZone.forOffsetHours(1)));
}
@Test
public void DateTime_2000_01_01_Plus_2() {
testDateTimePersistence(new DateTime(2000, 1, 1, 0, 0, 0, 0).withZoneRetainFields(DateTimeZone.forOffsetHours(2)));
}
@Test
public void DateTime_1900_01_01() {
testDateTimePersistence(new DateTime(1900, 1, 1, 0, 0, 0, 0));
}
@Test
public void DateTime_1800_01_01() {
testDateTimePersistence(new DateTime(1800, 1, 1, 0, 0, 0, 0));
}
@Test
public void DateTime_1834_10_10() {
testDateTimePersistence(new LocalDate(1834, 10, 10).toDateTimeAtStartOfDay());
}
@Test
public void DateTime_1872_12_31() {
// 1872-12-31T00:00:00.000+01:39:52
testDateTimePersistence(new LocalDate(1872, 12, 31).toDateTimeAtStartOfDay());
}
@Test
public void DateTime_1872_12_31_UTC() {
// 1872-12-31T00:00:00.000Z
testDateTimePersistence(new LocalDate(1872, 12, 31).toDateTimeAtStartOfDay().withZoneRetainFields(DateTimeZone.UTC));
}
private void testDatePersistence(LocalDate date) {
Literals literals = new Literals();
literals.localDate = date;
session.save(literals);
session.flush();
session.clear();
// load
literals = session.get(Literals.class, literals.getId());
assertEquals(date, literals.localDate);
session.clear();
// change
literals.localDate = date.minusDays(1);
session.save(literals);
session.flush();
session.clear();
// reload
literals = session.get(Literals.class, literals.getId());
assertEquals(date.minusDays(1), literals.localDate);
}
private void testDateTimePersistence(DateTime date) {
Literals literals = new Literals();
literals.dateTime = date;
session.save(literals);
session.flush();
session.clear();
System.err.println(date);
// load
literals = session.get(Literals.class, literals.getId());
assertEquals(date.toString(), literals.dateTime.toString());
assertEquals(date.getMillis(), literals.dateTime.getMillis());
session.clear();
// change
literals.dateTime = date.minusDays(1);
session.save(literals);
session.flush();
session.clear();
// reload
literals = session.get(Literals.class, literals.getId());
assertEquals(date.minusDays(1).toString(), literals.dateTime.toString());
assertEquals(date.minusDays(1).getMillis(), literals.dateTime.getMillis());
}
}