package com.kunth.db;
import static org.junit.Assert.*;
import org.junit.Test;
public class DbTest {
@Test
public void testDb() {
}
@Test
public void testOpen() {
}
@Test
public void testSelect(){
String tableName = "TEST_SELECT";
String obj = "name, phone, ppDate";
String oneObj = "name";
String columnDesc = "name varchar(20), phone varchar(20), ppDate varchar(20)";
// String[] data ={ "'yang', '131123', '20120605'","'wang', '131234', '20120605'", "'zhang', '131323', '12323'"};
String oneRowCondition = "ppDate = '12323'";
String nullCondition = "phone = '12312'";
String servalCondition = "phone like '131%'";
String nullLikeCondition = "ppDate like 'ang%'";
Db kunth = new Db("kunth","system","Jk685173.");
//init data;
kunth.dropTable(tableName);
kunth.dropBackups(tableName);
assertEquals(0,kunth.isTableExist(tableName));
//table not exist
assertEquals(null, kunth.select(oneObj, tableName, oneRowCondition));
kunth.createTable(tableName, columnDesc);
assertEquals(2,kunth.isTableExist(tableName));
kunth.insert(obj, tableName, "'yang', '131123', '20120605'");
kunth.insert(obj, tableName, "'wang', '131234', '20120605'");
kunth.insert(obj, tableName, "'zhang', '131323', '12323'");
//1 column
//1 row selected
assertEquals(oneObj+"\nzhang", kunth.select(oneObj, tableName, oneRowCondition));
//none row selected
assertEquals(null, kunth.select(oneObj, tableName, nullCondition));
assertEquals(null, kunth.select(oneObj, tableName, nullLikeCondition));//null row selected by like condition
//several row selected
assertEquals(oneObj+"\nyang\nwang\nzhang", kunth.select(oneObj, tableName, servalCondition));
//serveral columns
//1 row selected
assertEquals(obj+"\n"+"zhang,131323,12323", kunth.select(obj, tableName, oneRowCondition));
//none row selected
assertEquals(null, kunth.select(obj, tableName, nullCondition));
assertEquals(null, kunth.select(obj, tableName, nullLikeCondition));//null row selected by like condition
//several row selected
assertEquals(obj+"\n"+"yang,131123,20120605"+"\n"+"wang,131234,20120605"+"\n"+"zhang,131323,12323", kunth.select(obj, tableName, servalCondition));
kunth.dropTable(tableName);
kunth.dropBackups(tableName);
kunth.close();
}
@Test
public void testIsTableExist(){
Db kunth = new Db("kunth","system","Jk685173.");
String tableName = "Test_IsExist";
String columnDesc = "name varchar(20), phone varchar(10)";
//init env, no table and backups, check return value 0.
kunth.dropTable(tableName);
kunth.dropBackups(tableName);
assertEquals(0, kunth.isTableExist(tableName));
//create table
kunth.createTable(tableName, columnDesc);
assertEquals(2, kunth.isTableExist(tableName));
//backup
kunth.backupTable(tableName);
assertEquals(3, kunth.isTableExist(tableName));
//test case sensitive
assertEquals(3, kunth.isTableExist(tableName.toLowerCase()));
assertEquals(3, kunth.isTableExist(tableName.toUpperCase()));
//drop table and only backup remains
kunth.dropTable(tableName);
assertEquals(1, kunth.isTableExist(tableName));
//drop backups and none remains
kunth.dropBackups(tableName);
assertEquals(0, kunth.isTableExist(tableName));
}
@Test
public void testDropTable(){
Db kunth = new Db("kunth","system","Jk685173.");
String tableName = "TEST_DROP";
String columnDesc = "name varchar(20), phone varchar(20)";
//init env
kunth.dropTable(tableName);
kunth.dropBackups(tableName);
assertEquals(0, kunth.isTableExist(tableName));
//if table does not exist, return
assertEquals(0, kunth.isTableExist(tableName));
kunth.dropTable(tableName);
assertEquals(0, kunth.isTableExist(tableName));
//if table exists, drop and return;
kunth.createTable(tableName, columnDesc);
kunth.dropTable(tableName);
assertEquals(0, kunth.isTableExist(tableName));
//if table and backup exists, drop table only, do nothing to backups
kunth.createTable(tableName, columnDesc);
kunth.backupTable(tableName);
assertEquals(3, kunth.isTableExist(tableName));
kunth.dropTable(tableName);
assertEquals(1, kunth.isTableExist(tableName));
//clear data;
kunth.dropTable(tableName);
kunth.dropBackups(tableName);
}
@Test
public void testDropBackups(){
Db kunth = new Db("kunth","system","Jk685173.");
String tableName = "TEST_DROPBACKUPS";
String columnDesc = "name varchar(20), phone varchar(20)";
//init env
kunth.dropTable(tableName);
kunth.dropBackups(tableName);
assertEquals(0, kunth.isTableExist(tableName));
//no table or backups, do nothing and return;
assertEquals(0, kunth.isTableExist(tableName));
kunth.dropBackups(tableName);
assertEquals(0, kunth.isTableExist(tableName));
//only table exists, no backups. do nothing;
kunth.createTable(tableName, columnDesc);
assertEquals(2, kunth.isTableExist(tableName));
kunth.dropBackups(tableName);
assertEquals(2, kunth.isTableExist(tableName));
kunth.dropTable(tableName);
//only backups exist, no table. drop backups;
kunth.createTable(tableName, columnDesc);
kunth.backupTable(tableName);
kunth.dropTable(tableName);
assertEquals(1, kunth.isTableExist(tableName));
kunth.dropBackups(tableName);
assertEquals(0, kunth.isTableExist(tableName));
//both exist, drop backups only. table remains;
kunth.createTable(tableName, columnDesc);
kunth.backupTable(tableName);
assertEquals(3, kunth.isTableExist(tableName));
kunth.dropBackups(tableName);
assertEquals(2, kunth.isTableExist(tableName));
//clear test data;
kunth.dropTable(tableName);
kunth.dropBackups(tableName);
}
@Test
public void testcreateTable() {
Db kunth = new Db("kunth","system","Jk685173.");
String tableName = "Test_Create";
//init env, no table and backups, check to confirm.
kunth.dropTable(tableName);
kunth.dropBackups(tableName);
assertEquals(0, kunth.isTableExist(tableName));
//create table while table does not exist.
kunth.createTable(tableName, "op varchar(10), opSQL varchar(50)");
assertEquals(2,kunth.isTableExist(tableName));
//create a table which is the same to existing one.
kunth.createTable(tableName, "op varchar(10), opSQL varchar(50)");
assertEquals(3,kunth.isTableExist(tableName));//create new one and backup the existed one.
kunth.dropBackups(tableName);
//create table with new structure
assertEquals(2,kunth.isTableExist(tableName));//check no backups.
kunth.createTable(tableName, "op varchar(10), opSQL varchar(50), opDate varchar(20)");
assertEquals(3,kunth.isTableExist(tableName));//create and check there is backups.
//clear test data.
kunth.dropTable(tableName);
kunth.dropBackups(tableName);
assertEquals(0,kunth.isTableExist(tableName));
}
@Test
public void testBackup(){
//tableName
Db kunth = new Db("kunth","system","Jk685173.");
String tableName = "TEST_BACKUP";
String columnDesc = "name varchar(20), phone varchar(20)";
//init env
kunth.dropTable(tableName);
kunth.dropBackups(tableName);
assertEquals(0, kunth.isTableExist(tableName));
//table not exist, do nothing and return;
kunth.backupTable(tableName);
assertEquals(0,kunth.isTableExist(tableName));
//table exists, backup the table;
kunth.dropBackups(tableName);
kunth.createTable(tableName, columnDesc);
assertEquals(2,kunth.isTableExist(tableName));//make sure that table created.
kunth.backupTable(tableName);
assertEquals(3,kunth.isTableExist(tableName));
//backup twice in one minute, no errors;
kunth.dropTable(tableName);
kunth.dropBackups(tableName);
kunth.createTable(tableName, columnDesc);
kunth.backupTable(tableName);
kunth.backupTable(tableName