package org.nthx.pat.tests;
import org.nthx.pat.Pat;
public class RecursiveTransactionsTest
extends PatTestCase
{
public void setUp()
{
}
public void testDepositMoney()
{
Pat.unload();
cleanPrevaylersRepo();
assertEquals("Should be 0 files - clean repo", 0, getFilesCountInRepo());
Bank bank = new Bank();
assertEquals("Should be 1 file - clean snapshot", 1, getFilesCountInRepo());
assertEquals("Should be 0 $A", 0, bank.accountA);
assertEquals("Should be 0 $B", 100L, bank.accountB);
bank.depositA(20L);
assertEquals("Should be 2 files - snap,log", 2, getFilesCountInRepo());
assertEquals("Should be 20L $A", 20L, bank.accountA);
assertEquals("Should be 100L $B", 100L, bank.accountB);
Pat.unload();
bank = new Bank();
assertEquals("Should be 20L $A", 20L, bank.accountA);
assertEquals("Should be 100L $B", 100L, bank.accountB);
}
public void testTransferMoney()
{
Pat.unload();
cleanPrevaylersRepo();
assertEquals("Should be 0 files - clean repo", 0, getFilesCountInRepo());
Bank bank = new Bank();
assertEquals("Should be 1 file - clean snapshot", 1, getFilesCountInRepo());
assertEquals("Should be 0 $A", 0, bank.accountA);
assertEquals("Should be 0 $B", 100L, bank.accountB);
bank.transfer(30L);
assertEquals("Should be 2 files - snap,log", 2, getFilesCountInRepo());
assertEquals("Should be 20L $A", 30L, bank.accountA);
assertEquals("Should be 70L $B", 70L, bank.accountB);
Pat.unload();
bank = new Bank();
assertEquals("Should be 20L $A", 30L, bank.accountA);
assertEquals("Should be 70L $B", 70L, bank.accountB);
}
public void testTransferMoneyAndBreakInTheMiddle()
{
Pat.unload();
cleanPrevaylersRepo();
assertEquals("Should be 0 files - clean repo", 0, getFilesCountInRepo());
Bank bank = new Bank();
assertEquals("Should be 1 file - clean snapshot", 1, getFilesCountInRepo());
assertEquals("Should be 0 $A", 0, bank.accountA);
assertEquals("Should be 0 $B", 100L, bank.accountB);
try{
bank.transferWithBreakInside(30L);
throw new AssertionError("Transaction should fail");
}catch(Exception e){
logTest.debug("Transaction failed. Should rollback..");
}
}
public RecursiveTransactionsTest(String arg)
{
super(arg);
}
public static void main(String[] args)
{
junit.textui.TestRunner.run(RecursiveTransactionsTest.class);
}
}