blob: d96b7c3a8076dddd3f09efb16221e650256bfa14 [file] [log] [blame]
package org.eclipse.basyx.regression.sqlproxy;
import static org.junit.Assert.assertTrue;
import java.util.Collection;
import java.util.Iterator;
import org.eclipse.basyx.tools.sqlproxy.SQLCollection;
import org.eclipse.basyx.tools.sqlproxy.SQLRootElement;
import org.junit.Test;
/**
* Test SQL collection element implementation and its basic operations
*
* @author kuhn
*
*/
public class SQLProxyTestCollectionSimple {
/**
* Store SQL root element reference
* - An SQL root element is the main gateway to a SQL database
*/
protected SQLRootElement sqlRootElement = null;
/**
* Test basic operations
*/
@Test
public void test() throws Exception {
// Create SQL root element
sqlRootElement = new SQLRootElement(SQLConfig.SQLUSER, SQLConfig.SQLPW, "//localhost/basyx-map?", "org.postgresql.Driver", "jdbc:postgresql:", "root_el_01");
// Drop tables to make sure we start with a fresh database
sqlRootElement.dropTable(1);
sqlRootElement.drop();
// Create new table in database for root element
sqlRootElement.createRootTableIfNotExists();
// Create collection
Collection<Object> sqlColl = sqlRootElement.createCollection(1);
// Test simple collection functions
assertTrue(sqlColl.size() == 0);
// - Add single element
sqlColl.add("A"); assertTrue(sqlColl.size() == 1);
sqlColl.add("B"); assertTrue(sqlColl.size() == 2);
sqlColl.add("A"); assertTrue(sqlColl.size() == 3);
// - Check element presence
assertTrue(sqlColl.contains("A") == true);
assertTrue(sqlColl.contains("B") == true);
assertTrue(sqlColl.contains("C") == false);
// - Remove element
sqlColl.remove("A");
assertTrue(sqlColl.size() == 1);
assertTrue(sqlColl.isEmpty() == false);
// - Clear collection
sqlColl.clear();
assertTrue(sqlColl.size() == 0);
assertTrue(sqlColl.isEmpty() == true);
// Test collection iterator
assertTrue(sqlColl.size() == 0);
// - Fill collection
sqlColl.add("A"); assertTrue(sqlColl.size() == 1);
sqlColl.add("B"); assertTrue(sqlColl.size() == 2);
sqlColl.add("A"); assertTrue(sqlColl.size() == 3);
sqlColl.add("C"); assertTrue(sqlColl.size() == 4);
// - Iterate elements
Iterator<Object> it1 = sqlColl.iterator();
assertTrue(it1.hasNext() == true); assertTrue(it1.next().equals("A"));
assertTrue(it1.hasNext() == true); assertTrue(it1.next().equals("B"));
assertTrue(it1.hasNext() == true); assertTrue(it1.next().equals("A"));
assertTrue(it1.hasNext() == true); assertTrue(it1.next().equals("C"));
assertTrue(it1.hasNext() == false);
// - Test conversion to generic object array
Object[] elements1 = sqlColl.toArray();
assertTrue(elements1.length == 4);
assertTrue(elements1[0].equals("A"));
assertTrue(elements1[1].equals("B"));
assertTrue(elements1[2].equals("A"));
assertTrue(elements1[3].equals("C"));
// - Test conversion to typed array
String[] elements2 = sqlColl.toArray(new String[4]);
assertTrue(elements2.length == 4);
assertTrue(elements2[0].equals("A"));
assertTrue(elements2[1].equals("B"));
assertTrue(elements2[2].equals("A"));
assertTrue(elements2[3].equals("C"));
// - Iterate elements again
Iterator<Object> it2 = sqlColl.iterator();
assertTrue(it2.hasNext() == true); assertTrue(it2.next().equals("A"));
assertTrue(it2.hasNext() == true); assertTrue(it2.next().equals("B"));
assertTrue(it2.hasNext() == true); assertTrue(it2.next().equals("A"));
assertTrue(it2.hasNext() == true); assertTrue(it2.next().equals("C"));
assertTrue(it2.hasNext() == false);
// Get all elements from collection
Object[] arr = sqlColl.toArray();
// - Check array contents
assertTrue(arr.length == 4);
assertTrue(arr[0].equals("A"));
assertTrue(arr[1].equals("B"));
assertTrue(arr[2].equals("A"));
assertTrue(arr[3].equals("C"));
// Connect to collection
Collection<Object> sqlColl2 = new SQLCollection(sqlRootElement, 1);
// - Iterate elements again
Iterator<Object> it3 = sqlColl2.iterator();
assertTrue(it3.hasNext() == true); assertTrue(it3.next().equals("A"));
assertTrue(it3.hasNext() == true); assertTrue(it3.next().equals("B"));
assertTrue(it3.hasNext() == true); assertTrue(it3.next().equals("A"));
assertTrue(it3.hasNext() == true); assertTrue(it3.next().equals("C"));
assertTrue(it3.hasNext() == false);
// Drop tables
sqlRootElement.dropTable(1);
// Drop table for root element (= delete it)
sqlRootElement.drop();
}
}