/**
* Copyright 2011 CaneData.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.canedata.provider.mongodb.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.List;
import org.canedata.entity.Entity;
import org.canedata.field.Fields;
import org.junit.Test;
/**
*
* @author Sun Yat-ton
* @version 1.00.000 2011-8-15
*/
public class TestQuery extends AbilityProvider {
@Test
public void proj(){
Entity e = factory.get("user");
assertNotNull(e);
Fields f = e.projection("name", "age").orderDESC("age").first();
assertNotNull(f);
assertEquals(f.getFieldNames().length, 3);
f = e.orderDESC("age").first();
assertNotNull(f);
assertEquals(Arrays.toString(f.getFieldNames()), "[_id, age, name, gender]");
assertEquals(f.getFieldNames().length, 4);
}
@Test
public void equals(){
Entity e = factory.get("user");
assertNotNull(e);
Fields f = e.projection("name").filter(e.expr().equals("name", "cane")).first();
assertNotNull(f);
assertEquals(f.getString("name"), "cane");
e.close();
}
@Test
public void notEquals(){
Entity e = factory.get("user");
assertNotNull(e);
int c = e.projection("name").filter(e.expr().notEquals("name", "cane")).count().intValue();
assertEquals(c, 7);
e.close();
}
@Test
public void between(){
Entity e = factory.get("user");
assertNotNull(e);
assertEquals(e.projection("name", "age").filter(e.expr().between("age", 18, 64)).count(), 3l);
e.close();
}
@Test
public void notBetween(){
Entity e = factory.get("user");
assertNotNull(e);
assertEquals(e.projection("name", "age").filter(e.expr().notBetween("age", 63, 64)).count(), 6l);
e.close();
}
@Test
public void greaterThan(){
Entity e = factory.get("user");
assertNotNull(e);
assertEquals(e.filter(e.expr().greaterThan("age", 18)).count(), 2l);
e.close();
}
@Test
public void greaterThanOrEqual(){
Entity e = factory.get("user");
assertNotNull(e);
Fields f = e.filter(e.expr().greaterThanOrEqual("age", 19)).order("age").first();
assertNotNull(f);
assertEquals(f.getInt("age"), 19);
e.close();
}
@Test
public void in(){
Entity e = factory.get("user");
assertNotNull(e);
List<Fields> fs = e.filter(e.expr().in("age", new Object[]{18, 19})).order("age").list();
assertNotNull(fs);
assertTrue(!fs.isEmpty());
assertEquals(fs.size(), 2);
Fields f1 = fs.get(0);
assertEquals(f1.getInt("age"), 18);
Fields f2 = fs.get(1);
assertEquals(f2.getInt("age"), 19);
e.close();
}
@Test
public void notIn(){
Entity e = factory.get("user");
assertNotNull(e);
int c = e.filter(e.expr().notIn("age", new Object[]{18, 19})).order("age").count().intValue();
assertEquals(c, 6);
e.close();
}
@Test
public void empty(){
Entity e = factory.get("user");
assertNotNull(e);
int c = e.filter(e.expr().isEmpty("vendor")).count().intValue();
assertEquals(c, 1);
e.close();
}
@Test
public void notEmpty(){
Entity e = factory.get("user");
assertNotNull(e);
int c = e.filter(e.expr().isNotEmpty("vendor")).count().intValue();
assertEquals(c, 1);
e.close();
}
@Test
public void isNull(){
Entity e = factory.get("user");
assertNotNull(e);
int c = e.filter(e.expr().isNull("name")).count().intValue();
assertEquals(c, 4);
e.close();
}
@Test
public void notNull(){
Entity e = factory.get("user");
assertNotNull(e);
int c = e.filter(e.expr().isNotNull("name")).count().intValue();
assertEquals(c, 4);
e.close();
}
@Test
public void lessthan(){
Entity e = factory.get("user");
assertNotNull(e);
int c = e.filter(e.expr().lessThan("age", 18)).count().intValue();
assertEquals(c, 4);
e.close();
}
@Test
public void lessthanAndEq(){
Entity e = factory.get("user");
assertNotNull(e);
int c = e.filter(e.expr().lessThanOrEqual("age", 18)).count().intValue();
assertEquals(c, 5);
e.close();
}
@Test
public void like(){
Entity e = factory.get("user");
assertNotNull(e);
int c = e.filter(e.expr().like("name", "cane")).count().intValue();
assertEquals(c, 2);
}
@Test
public void notLike(){
Entity e = factory.get("user");
assertNotNull(e);
int c = e.filter(e.expr().notLike("name", "cane")).count().intValue();
assertEquals(c, 6);
}
@Test
public void match(){
Entity e = factory.get("user");
assertNotNull(e);
int c = e.filter(e.expr().match("name", "cane.*")).count().intValue();
assertEquals(c, 2);
e.close();
}
@Test
public void notMatch(){
Entity e = factory.get("user");
assertNotNull(e);
int c = e.filter(e.expr().notMatch("name", "cane.*")).count().intValue();
assertEquals(c, 6);
e.close();
}
}