package org.test4j.testng.database.dbop;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.test4j.database.table.ITable;
import org.test4j.database.table.TddUserTable;
import org.test4j.hamcrest.matcher.property.reflection.EqMode;
import org.test4j.module.database.IDatabase;
import org.test4j.testng.Test4J;
import org.test4j.tools.datagen.DataSet;
import org.test4j.tools.datagen.EmptyDataSet;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
@SuppressWarnings({ "rawtypes", "serial", "unchecked" })
@Test(groups = { "test4j", "database" })
public class DataGeneratorTest extends Test4J implements IDatabase {
@Test(dataProvider = "dataGenerator")
public void testParseMapList(final Object input, Object expected) {
DataSet ds = new EmptyDataSet();
List<DataMap> maps = reflector.invoke(ds, "parseMapList", 5, new DataMap() {
{
this.put("key1", "value1");
this.put("key2", input);
}
});
want.collection(maps).sizeEq(5)
.propertyEq("key1", new String[] { "value1", "value1", "value1", "value1", "value1" });
want.collection(maps).propertyEq("key2", expected, EqMode.IGNORE_DEFAULTS);
}
@DataProvider
public DataIterator dataGenerator() {
return new DataIterator() {
{
data(1, new Integer[] { 1, 1, 1, 1, 1 });
data(new Integer[] { 1, 2, 3 }, new Integer[] { 1, 2, 3, 3, 3 });
data(new Integer[] { 1, 2, 3, 4, 5, 6 }, new Integer[] { 1, 2, 3, 4, 5 });
data(DataGenerator.repeat(1, 2), new Integer[] { 1, 2, 1, 2, 1 });
data(DataGenerator.random(Integer.class), new Integer[] { null, null, null, null, null });
data(DataGenerator.increase(1, 1), new Integer[] { 1, 2, 3, 4, 5 });
}
};
}
@Test
public void testInsert2() {
db.table(ITable.t_tdd_user).clean().insert(5, new TddUserTable() {
{
this.put(IColumn.f_id, DataGenerator.increase(100, 1));
this.put(IColumn.f_first_name, "wu");
this.put(IColumn.f_last_name, DataGenerator.random(String.class));
this.put(IColumn.f_post_code, DataGenerator.repeat("310012", "310000"));
this.put(IColumn.f_gmt_created, new Object[] { new Date(), "2011-09-06" });
}
}).commit();
}
@Test
public void testInsert() {
db.table(ITable.t_tdd_user).clean().insert(new DataSet() {
{
data(5, new TddUserTable() {
{
this.put(IColumn.f_id, DataGenerator.increase(100, 1));
this.put(IColumn.f_first_name, "wu");
this.put(IColumn.f_last_name, DataGenerator.random(String.class));
this.put(IColumn.f_post_code, DataGenerator.repeat("310012", "310000"));
this.put(IColumn.f_gmt_created, new Object[] { new Date(), "2011-09-06" });
}
});
}
}).commit();
db.table(ITable.t_tdd_user).query()
.propertyEq(TddUserTable.IColumn.f_first_name, new String[] { "wu", "wu", "wu", "wu", "wu" })
.reflectionEqMap(new ArrayList() {
{
add(new TddUserTable() {
{
this.put(IColumn.f_id, 100);
this.put(IColumn.f_post_code, "310012");
this.put(IColumn.f_gmt_created, null);
}
});
add(new TddUserTable() {
{
this.put(IColumn.f_id, 101);
this.put(IColumn.f_post_code, "310000");
this.put(IColumn.f_gmt_created, "2011-09-06");
}
});
add(new TddUserTable() {
{
this.put(IColumn.f_id, 102);
this.put(IColumn.f_post_code, "310012");
this.put(IColumn.f_gmt_created, "2011-09-06");
}
});
add(new TddUserTable() {
{
this.put(IColumn.f_id, 103);
this.put(IColumn.f_post_code, "310000");
this.put(IColumn.f_gmt_created, "2011-09-06");
}
});
add(new TddUserTable() {
{
this.put(IColumn.f_id, 104);
this.put(IColumn.f_post_code, "310012");
this.put(IColumn.f_gmt_created, "2011-09-06");
}
});
}
}, EqMode.IGNORE_DEFAULTS);
}
@Test
public void testInsert_CountDataMap() {
db.table(ITable.t_tdd_user).clean().insert(5, new TddUserTable() {
{
this.put(IColumn.f_id, DataGenerator.increase(100, 1));
this.put(IColumn.f_first_name, "wu");
this.put(IColumn.f_last_name, DataGenerator.random(String.class));
this.put(IColumn.f_post_code, DataGenerator.repeat("310012", "310000"));
this.put(IColumn.f_gmt_created, new Object[] { new Date(), "2011-09-06" });
}
}).commit();
db.table(ITable.t_tdd_user)
.query()
.propertyEq(
new String[] { TddUserTable.IColumn.f_id, TddUserTable.IColumn.f_first_name,
TddUserTable.IColumn.f_post_code, TddUserTable.IColumn.f_gmt_created },
new Object[][] { { 100, "wu", "310012", null },// <br>
{ 101, "wu", "310000", "2011-09-06" },// <br>
{ 102, "wu", "310012", "2011-09-06" },// <br>
{ 103, "wu", "310000", "2011-09-06" },// <br>
{ 104, "wu", "310012", "2011-09-06" } }, EqMode.IGNORE_DEFAULTS);
}
public void testInsertByDataGenerator() {
db.table(ITable.t_tdd_user).clean().insert(2, new TddUserTable() {
{
this.put(IColumn.f_id, new int[] { 100, 101 });
this.put(IColumn.f_first_name, new DataGenerator() {
@Override
public Object generate(int index) {
return "myname_" + (index + 1);
}
});
}
});
db.table(ITable.t_tdd_user).query().sizeEq(2)
.propertyEq(TddUserTable.IColumn.f_first_name, new String[] { "myname_1", "myname_2" });
}
public void testInsertByDataGenerator_UserFields() {
db.table(ITable.t_tdd_user).clean().insert(2, new TddUserTable() {
{
this.put(IColumn.f_id, new int[] { 100, 101 });
this.put(IColumn.f_first_name, new DataGenerator() {
@Override
public Object generate(int index) {
return "myname_" + value("id");
}
});
}
});
db.table(ITable.t_tdd_user).query().sizeEq(2)
.propertyEq(TddUserTable.IColumn.f_first_name, new String[] { "myname_100", "myname_101" });
}
@Test
public void testData_JSON() {
}
}