Skip to content

Commit

Permalink
Merge pull request #129 from mekjaer/develop
Browse files Browse the repository at this point in the history
test cases added for SharedGroup and Transactions
  • Loading branch information
mekjaer committed Sep 23, 2013
2 parents 0e5ff31 + 57a2439 commit 0a74b5d
Show file tree
Hide file tree
Showing 7 changed files with 256 additions and 104 deletions.
12 changes: 4 additions & 8 deletions tightdb-java-core/src/main/java/com/tightdb/ReadTransaction.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,23 @@ public class ReadTransaction extends Group {

private SharedGroup db;

ReadTransaction(SharedGroup db)
{
ReadTransaction(SharedGroup db) {
super(db.beginReadGroup(), true);
this.db = db;
}

ReadTransaction(SharedGroup db, long nativePtr)
{
ReadTransaction(SharedGroup db, long nativePtr) {
super(nativePtr, true); // make Group immutable
this.db = db;
}

public void endRead()
{
public void endRead() {
db.endRead();
}

// @Override
@Deprecated
public void close()
{
public void close() {
//System.out.println("read-close");
db.endRead();
}
Expand Down
96 changes: 56 additions & 40 deletions tightdb-java-test/src/test/java/com/tightdb/JNITransactions.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ public class JNITransactions {

protected String testFile = "transact.tightdb";

protected void deleteFile(String filename)
{
protected void deleteFile(String filename) {
File f = new File(filename);
if (f.exists())
f.delete();
Expand All @@ -32,8 +31,7 @@ public void clear() {
deleteFile(testFile);
}

protected void writeOneTransaction(long rows)
{
protected void writeOneTransaction(long rows) {
WriteTransaction trans = db.beginWrite();
Table tbl = trans.getTable("EmployeeTable");
tbl.addColumn(ColumnType.ColumnTypeString, "name");
Expand All @@ -53,8 +51,7 @@ protected void writeOneTransaction(long rows)

}

protected void checkRead(int rows)
{
protected void checkRead(int rows) {
// Read transaction
ReadTransaction trans = db.beginRead();
Table tbl = trans.getTable("EmployeeTable");
Expand All @@ -77,6 +74,25 @@ public void mustWriteCommit() {
clear();
}


@Test
public void onlyOneCommit() {
WriteTransaction trans = db.beginWrite();

try{

Table tbl = trans.getTable("EmployeeTable");
tbl.addColumn(ColumnType.ColumnTypeString, "name");

trans.commit();

try { trans.commit(); assert(false); } catch (IllegalStateException e){}

} catch (Throwable t){
trans.rollback();
}
}

@Test
public void mustRollback() {
writeOneTransaction(1);
Expand All @@ -92,41 +108,41 @@ public void mustRollback() {

clear();
}

@Test()
public void mustAllowDoubleCommitAndRollback() {
{
WriteTransaction trans = db.beginWrite();
Table tbl = trans.getTable("EmployeeTable");
tbl.addColumn(ColumnType.ColumnTypeString, "name");
tbl.addColumn(ColumnType.ColumnTypeInt, "number");
// allow commit before any changes
assertEquals(0, tbl.size());
tbl.add("Hello", 1);
trans.commit();
}
{
WriteTransaction trans = db.beginWrite();
Table tbl = trans.getTable("EmployeeTable");
// allow double rollback
tbl.add("Hello", 2);
assertEquals(2, tbl.size());
trans.rollback();
trans.rollback();
trans.rollback();
trans.rollback();
}
{
ReadTransaction trans = db.beginRead();
Table tbl = trans.getTable("EmployeeTable");
assertEquals(1, tbl.size());
trans.endRead();
}

clear();
{
WriteTransaction trans = db.beginWrite();
Table tbl = trans.getTable("EmployeeTable");
tbl.addColumn(ColumnType.ColumnTypeString, "name");
tbl.addColumn(ColumnType.ColumnTypeInt, "number");

// allow commit before any changes
assertEquals(0, tbl.size());
tbl.add("Hello", 1);
trans.commit();
}
{
WriteTransaction trans = db.beginWrite();
Table tbl = trans.getTable("EmployeeTable");
// allow double rollback
tbl.add("Hello", 2);
assertEquals(2, tbl.size());
trans.rollback();
trans.rollback();
trans.rollback();
trans.rollback();
}
{
ReadTransaction trans = db.beginRead();
Table tbl = trans.getTable("EmployeeTable");
assertEquals(1, tbl.size());
trans.endRead();
}

clear();
}

// Test: exception at all mutable methods in TableBase, TableView,
// Test: above in custom Typed Tables
// TableQuery.... in ReadTransactions
Expand Down Expand Up @@ -181,7 +197,7 @@ public void mustFailOnWriteInReadTransactions() {
}


/* ARM Only works for Java 1.7 - NOT available in Android.
/* ARM Only works for Java 1.7 - NOT available in Android.
@Test(enabled=true)
public void mustReadARM() {
Expand All @@ -198,5 +214,5 @@ public void mustReadARM() {
}
}
*/
*/
}
51 changes: 0 additions & 51 deletions tightdb-java-test/src/test/java/com/tightdb/JNIViewSearchTest.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
package com.tightdb;

import org.testng.annotations.BeforeMethod;

import static org.testng.AssertJUnit.*;

import org.testng.annotations.Test;

import java.util.Date;

import com.tightdb.ColumnType;
import com.tightdb.Table;
import com.tightdb.TableView;
import com.tightdb.test.EmployeesFixture;


public class JNIViewSortTest {
public class JNIViewTest {
Table t;
Date date1 = new Date(2010, 01, 05);
Date date2 = new Date(1999, 12, 01);
Expand Down Expand Up @@ -119,6 +124,70 @@ public void shouldThrowExceptionForUnsupportedColumns() {
}

}


@Test(enabled = true)
public void shouldSearchByColumnValue() {
Table table = new Table();

TableSpec tableSpec = new TableSpec();
tableSpec.addColumn(ColumnType.ColumnTypeString, "name");
table.updateFromSpec(tableSpec);

table.add("Foo");
table.add("Bar");

TableQuery query = table.where();
TableView view = query.findAll(0, table.size(), Integer.MAX_VALUE);
assertEquals(2, view.size());

view.findAllString(0, "Foo");
}


}
@Test()
public void shouldQueryInView() {
Table table = new Table();

TableSpec tableSpec = new TableSpec();
tableSpec.addColumn(ColumnType.ColumnTypeString, "name");
table.updateFromSpec(tableSpec);

table.add("A1");
table.add("B");
table.add("A2");
table.add("B");
table.add("A3");
table.add("B");
table.add("A3");

TableQuery query = table.where();
TableView view = query.beginsWith(0, "A").findAll(0, table.size(), Table.INFINITE);
assertEquals(4, view.size());

TableQuery query2 = table.where();
TableView view2 = query2.tableview(view).contains(0, "3").findAll();
assertEquals(2, view2.size());
}


@Test
public void getNonExistingColumn() {

Table t = new Table();
t.addColumn(ColumnType.ColumnTypeInt, "int");

TableView view = t.where().findAll();

assertEquals(-1, view.getColumnIndex("non-existing column"));
}

@Test(expectedExceptions = NullPointerException.class)
public void getNullColumn() {

Table t = new Table();
t.addColumn(ColumnType.ColumnTypeInt, "");

TableView view = t.where().findAll();
view.getColumnIndex(null);
}
}
Loading

0 comments on commit 0a74b5d

Please sign in to comment.