From f9aede527ed5544bab18c119e84fa20eacea5477 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Mon, 25 May 2009 18:05:01 +0000 Subject: [PATCH] --- .../query/jdoql/JDOQLSerializerTest.java | 28 +++++-- .../com/mysema/query/jdoql/JDOQueryTest.java | 34 ++++++++- .../mysema/query/jdoql/testdomain/Book.java | 3 + .../query/jdoql/testdomain/Company.java | 69 ++++++++++++++++++ .../query/jdoql/testdomain/Department.java | 73 +++++++++++++++++++ .../query/jdoql/testdomain/Employee.java | 54 ++++++++++++++ .../mysema/query/jdoql/testdomain/Person.java | 54 ++++++++++++++ .../query/jdoql/testdomain/Product.java | 3 + 8 files changed, 309 insertions(+), 9 deletions(-) create mode 100644 querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Company.java create mode 100644 querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Department.java create mode 100644 querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Employee.java create mode 100644 querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Person.java diff --git a/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/JDOQLSerializerTest.java b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/JDOQLSerializerTest.java index 7ad8c4082..6e97de717 100644 --- a/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/JDOQLSerializerTest.java +++ b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/JDOQLSerializerTest.java @@ -4,7 +4,10 @@ import static org.junit.Assert.assertEquals; import org.junit.Test; +import com.mysema.query.jdoql.testdomain.Book; +import com.mysema.query.jdoql.testdomain.Department; import com.mysema.query.jdoql.testdomain.QBook; +import com.mysema.query.jdoql.testdomain.QCompany; import com.mysema.query.jdoql.testdomain.QProduct; import com.mysema.query.types.expr.Expr; @@ -14,6 +17,13 @@ public class JDOQLSerializerTest { private QProduct product = QProduct.product; + private QCompany company = QCompany.company; + + @Test + public void instanceOf(){ + assertEquals("product instanceof com.mysema.query.jdoql.testdomain.Book", serialize(product.instanceOf(Book.class))); + } + @Test public void testHandle() { assertEquals("this.name == product.name", serialize(book.name.eq(product.name))); @@ -29,14 +39,20 @@ public class JDOQLSerializerTest { } @Test - public void collectionTests(){ + public void collectionTests(){ + Department dep = new Department(); // collection - // TODO contains - // TODO get + assertEquals("company.departments.contains(a1)", serialize(company.departments.contains(dep))); + assertEquals("company.departments.get(0) == a1", serialize(company.departments.get(0).eq(dep))); + assertEquals("company.departments.isEmpty()", serialize(company.departments.empty())); + assertEquals("!company.departments.isEmpty()", serialize( company.departments.notEmpty())); + assertEquals("company.departments.size() == a1", serialize(company.departments.size().eq(1))); + } + + @Test + public void mapTests(){ // TODO containsKey - // TODO containsValue - // TODO isEmpty - // TODO size + // TODO containsValue } @Test diff --git a/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/JDOQueryTest.java b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/JDOQueryTest.java index 6cef4a706..cdc1a6d54 100644 --- a/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/JDOQueryTest.java +++ b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/JDOQueryTest.java @@ -2,17 +2,45 @@ package com.mysema.query.jdoql; import static org.junit.Assert.assertEquals; +import org.junit.Ignore; import org.junit.Test; -// TODO : FIXME +import com.mysema.query.jdoql.testdomain.Book; + public class JDOQueryTest extends AbstractJDOTest{ @Test - public void basicTests() { + @Ignore + public void countTests(){ + // FIXME + assertEquals("count", 2, query().from(product).count()); // returns 1, why? + } + + @Test + @Ignore + public void searchResults(){ + // TODO + } + + @Test + @Ignore + public void testOrder(){ + // TODO + } + + @Test + public void projectionTests(){ + assertEquals("Sony Discman", query().from(product) + .where(product.name.eq("Sony Discman")) + .uniqueResult(product.name)); + } + + @Test + public void basicTests() { assertEquals("list", 2, query().from(product).list(product).size()); assertEquals("list", 1, query().from(book).list(book).size()); assertEquals("eq", 1, query(product, product.name.eq("Sony Discman")).size()); -// FIXME assertEquals("instanceof ", 1, query(product, product.typeOf(Book.class)).size()); + assertEquals("instanceof ", 1, query(product, product.instanceOf(Book.class)).size()); } @Test diff --git a/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Book.java b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Book.java index c2ecfc2d2..cd8c1dc4a 100644 --- a/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Book.java +++ b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Book.java @@ -5,12 +5,15 @@ */ package com.mysema.query.jdoql.testdomain; +import javax.jdo.annotations.Inheritance; +import javax.jdo.annotations.InheritanceStrategy; import javax.jdo.annotations.PersistenceCapable; /** * Definition of a Book. Extends basic Product class. */ @PersistenceCapable +@Inheritance(strategy=InheritanceStrategy.NEW_TABLE) public class Book extends Product { private String author = null; diff --git a/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Company.java b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Company.java new file mode 100644 index 000000000..fb4b2c16d --- /dev/null +++ b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Company.java @@ -0,0 +1,69 @@ +package com.mysema.query.jdoql.testdomain; + +import java.util.ArrayList; +import java.util.List; + +import javax.jdo.annotations.PersistenceCapable; +import javax.jdo.annotations.PrimaryKey; + +/** + * The Class Company. + */ +@PersistenceCapable +// TODO : finish annotations +public class Company { + private @PrimaryKey + int id; + // @ManyToOne + private Employee ceo; + // @OneToMany(mappedBy="company") + private List departments; + private String name; + + public Company() { + } + + public Company(int id) { + setId(id); + } + + public void addDepartment(Department department) { + if (departments == null) { + departments = new ArrayList(); + } + departments.add(department); + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public Employee getCeo() { + return ceo; + } + + public void setCeo(Employee ceo) { + this.ceo = ceo; + } + + public List getDepartments() { + return departments; + } + + public void setDepartments(List departments) { + this.departments = departments; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} \ No newline at end of file diff --git a/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Department.java b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Department.java new file mode 100644 index 000000000..9f28e9402 --- /dev/null +++ b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Department.java @@ -0,0 +1,73 @@ +package com.mysema.query.jdoql.testdomain; + +import java.util.Set; + +import javax.jdo.annotations.PersistenceCapable; +import javax.jdo.annotations.PrimaryKey; + +/** + * The Class Department. + */ +@PersistenceCapable +// TODO : finish annotations +public class Department { + private @PrimaryKey + int id; + // @ManyToOne + private Company company; + // @OneToMany(mappedBy="department") + private Set employees; + private String name; + // @ManyToOne + private Department parent; + + public Department() { + } + + public Department(int id, Company c) { + setId(id); + setCompany(c); + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public Company getCompany() { + return company; + } + + public void setCompany(Company company) { + this.company = company; + company.addDepartment(this); + } + + public Set getEmployees() { + return employees; + } + + public void setEmployees(Set employees) { + this.employees = employees; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Department getParent() { + return parent; + } + + public void setParent(Department parent) { + this.parent = parent; + } + +} \ No newline at end of file diff --git a/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Employee.java b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Employee.java new file mode 100644 index 000000000..98b923a41 --- /dev/null +++ b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Employee.java @@ -0,0 +1,54 @@ +package com.mysema.query.jdoql.testdomain; + +import javax.jdo.annotations.PersistenceCapable; + +/** + * The Class Employee. + */ +@PersistenceCapable +// TODO : finish annotations +public class Employee extends Person { + // @ManyToOne + private Company company; + // @ManyToOne + private Department department; + // @ManyToOne + private Employee superior; + + public Employee() { + } + + public Employee(int i) { + setId(i); + } + + public Employee(int i, Employee superior) { + setId(i); + setSuperior(superior); + } + + public Company getCompany() { + return company; + } + + public void setCompany(Company company) { + this.company = company; + } + + public Department getDepartment() { + return department; + } + + public void setDepartment(Department department) { + this.department = department; + } + + public Employee getSuperior() { + return superior; + } + + public void setSuperior(Employee superior) { + this.superior = superior; + } + +} \ No newline at end of file diff --git a/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Person.java b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Person.java new file mode 100644 index 000000000..c4877b496 --- /dev/null +++ b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Person.java @@ -0,0 +1,54 @@ +/** + * + */ +package com.mysema.query.jdoql.testdomain; + +import javax.jdo.annotations.PersistenceCapable; +import javax.jdo.annotations.PrimaryKey; + +/** + * Person provides + * + * @author tiwe + * @version $Id$ + */ +@PersistenceCapable +// TODO : finish annotations +public class Person { + private String firstName, lastName, email; + private @PrimaryKey + Integer id; + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public Integer getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + +} \ No newline at end of file diff --git a/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Product.java b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Product.java index 5b398359d..cdcb3fa01 100644 --- a/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Product.java +++ b/querydsl-jdoql/src/test/java/com/mysema/query/jdoql/testdomain/Product.java @@ -5,12 +5,15 @@ */ package com.mysema.query.jdoql.testdomain; +import javax.jdo.annotations.Inheritance; +import javax.jdo.annotations.InheritanceStrategy; import javax.jdo.annotations.PersistenceCapable; /** * Definition of a Product Represents a product, and contains the key aspects of the item. */ @PersistenceCapable +@Inheritance(strategy=InheritanceStrategy.NEW_TABLE) public class Product { private String name = null;