// Path: raidenjpa-core/src/main/java/org/raidenjpa/entities/A.java
// @Entity
// public class A extends Entidade {
// 
// 	private Long id;
// 
// 	private String stringValue;
// 	
// 	private Integer intValue;
// 
// 	private B b;
// 	
// 	private List<ItemA> itens = new ArrayList<ItemA>();
// 
// 	public A() {
// 	}
// 
// 	public A(String stringValue, int intValue) {
// 		this.stringValue = stringValue;
// 		this.intValue = intValue;
// 	}
// 
// 	public A(String stringValue) {
// 		this.stringValue = stringValue;
// 	}
// 	
// 	public void addItem(ItemA item) {
// 		itens.add(item);
// 	}
// 
// 	@Id
// 	@GeneratedValue
// 	public Long getId() {
// 		return id;
// 	}
// 
// 	public A setId(Long id) {
// 		this.id = id;
// 		return this;
// 	}
// 
// 	@OneToOne
// 	public B getB() {
// 		return b;
// 	}
// 
// 	public void setB(B b) {
// 		this.b = b;
// 	}
// 
// 	public String getStringValue() {
// 		return stringValue;
// 	}
// 
// 	public void setStringValue(String stringValue) {
// 		this.stringValue = stringValue;
// 	}
// 
// 	public Integer getIntValue() {
// 		return intValue;
// 	}
// 
// 	public void setIntValue(Integer intValue) {
// 		this.intValue = intValue;
// 	}
// 
// 	@OneToMany(cascade = CascadeType.ALL, mappedBy = "a")
// 	public List<ItemA> getItens() {
// 		return itens;
// 	}
// 
// 	public A setItens(List<ItemA> itens) {
// 		this.itens = itens;
// 		return this;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "A [id=" + id + ", stringValue=" + stringValue + ", intValue=" + intValue + ", b.id=" + (b == null ? "" : b.getId()) + "]";
// 	}
// 
// }
// 
// Path: raidenjpa-core/src/main/java/org/raidenjpa/entities/B.java
// @Entity
// public class B extends Entidade  {
// 
// 	@Id
// 	@GeneratedValue
// 	private Long id;
// 	
// 	private String value;
// 	
// 	@OneToOne
// 	private C c;
// 
// 	public B() {
// 	}
// 	
// 	public B(String value) {
// 		this.value = value;
// 	}
// 
// 	public Long getId() {
// 		return id;
// 	}
// 
// 	public B setId(Long id) {
// 		this.id = id;
// 		return this;
// 	}
// 
// 	public C getC() {
// 		return c;
// 	}
// 
// 	public void setC(C c) {
// 		this.c = c;
// 	}
// 
// 	public String getValue() {
// 		return value;
// 	}
// 
// 	public void setValue(String value) {
// 		this.value = value;
// 	}
// 
// 	public String toString() {
// 		return "B [id=" + id + ", value=" + value + "]";
// 	}
// }


import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.junit.Test;
import org.raidenjpa.entities.A;
import org.raidenjpa.entities.B;
package org.raidenjpa.query.executor;




public class QueryResultTest {

	@Test
	public void testSimple() {
		List<A> as = new ArrayList<A>();
		as.add(new A("a1"));
		as.add(new A("a2"));
		
		QueryResult result = new QueryResult();
		result.addFrom("a", as);
		
		Iterator<QueryResultRow> it = result.iterator();
		A a1 = (A) it.next().get("a");
		A a2 = (A) it.next().get("a");
		
		assertEquals("a1", a1.getStringValue());
		assertEquals("a2", a2.getStringValue());
	}
	
	@Test
	public void testAddFromTwice() {
		QueryResult result = new QueryResult();
		
		List<A> as = new ArrayList<A>();
		as.add(new A("a1"));
		as.add(new A("a2"));
		as.add(new A("a3"));
		result.addFrom("a", as);
		
// Path: raidenjpa-core/src/main/java/org/raidenjpa/entities/A.java
// @Entity
// public class A extends Entidade {
// 
// 	private Long id;
// 
// 	private String stringValue;
// 	
// 	private Integer intValue;
// 
// 	private B b;
// 	
// 	private List<ItemA> itens = new ArrayList<ItemA>();
// 
// 	public A() {
// 	}
// 
// 	public A(String stringValue, int intValue) {
// 		this.stringValue = stringValue;
// 		this.intValue = intValue;
// 	}
// 
// 	public A(String stringValue) {
// 		this.stringValue = stringValue;
// 	}
// 	
// 	public void addItem(ItemA item) {
// 		itens.add(item);
// 	}
// 
// 	@Id
// 	@GeneratedValue
// 	public Long getId() {
// 		return id;
// 	}
// 
// 	public A setId(Long id) {
// 		this.id = id;
// 		return this;
// 	}
// 
// 	@OneToOne
// 	public B getB() {
// 		return b;
// 	}
// 
// 	public void setB(B b) {
// 		this.b = b;
// 	}
// 
// 	public String getStringValue() {
// 		return stringValue;
// 	}
// 
// 	public void setStringValue(String stringValue) {
// 		this.stringValue = stringValue;
// 	}
// 
// 	public Integer getIntValue() {
// 		return intValue;
// 	}
// 
// 	public void setIntValue(Integer intValue) {
// 		this.intValue = intValue;
// 	}
// 
// 	@OneToMany(cascade = CascadeType.ALL, mappedBy = "a")
// 	public List<ItemA> getItens() {
// 		return itens;
// 	}
// 
// 	public A setItens(List<ItemA> itens) {
// 		this.itens = itens;
// 		return this;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "A [id=" + id + ", stringValue=" + stringValue + ", intValue=" + intValue + ", b.id=" + (b == null ? "" : b.getId()) + "]";
// 	}
// 
// }
// 
// Path: raidenjpa-core/src/main/java/org/raidenjpa/entities/B.java
// @Entity
// public class B extends Entidade  {
// 
// 	@Id
// 	@GeneratedValue
// 	private Long id;
// 	
// 	private String value;
// 	
// 	@OneToOne
// 	private C c;
// 
// 	public B() {
// 	}
// 	
// 	public B(String value) {
// 		this.value = value;
// 	}
// 
// 	public Long getId() {
// 		return id;
// 	}
// 
// 	public B setId(Long id) {
// 		this.id = id;
// 		return this;
// 	}
// 
// 	public C getC() {
// 		return c;
// 	}
// 
// 	public void setC(C c) {
// 		this.c = c;
// 	}
// 
// 	public String getValue() {
// 		return value;
// 	}
// 
// 	public void setValue(String value) {
// 		this.value = value;
// 	}
// 
// 	public String toString() {
// 		return "B [id=" + id + ", value=" + value + "]";
// 	}
// }


// Path: raidenjpa-core/src/test/java/org/raidenjpa/query/executor/QueryResultTest.java
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.junit.Test;
import org.raidenjpa.entities.A;
import org.raidenjpa.entities.B;

package org.raidenjpa.query.executor;




public class QueryResultTest {

	@Test
	public void testSimple() {
		List<A> as = new ArrayList<A>();
		as.add(new A("a1"));
		as.add(new A("a2"));
		
		QueryResult result = new QueryResult();
		result.addFrom("a", as);
		
		Iterator<QueryResultRow> it = result.iterator();
		A a1 = (A) it.next().get("a");
		A a2 = (A) it.next().get("a");
		
		assertEquals("a1", a1.getStringValue());
		assertEquals("a2", a2.getStringValue());
	}
	
	@Test
	public void testAddFromTwice() {
		QueryResult result = new QueryResult();
		
		List<A> as = new ArrayList<A>();
		as.add(new A("a1"));
		as.add(new A("a2"));
		as.add(new A("a3"));
		result.addFrom("a", as);
		
		List<B> bs = new ArrayList<B>();