Buddi Existing Test code
Model test (SplitsTest.java):
/* * Created on Aug 24, 2007 by wyatt */ package org.homeunix.thecave.buddi.test.model; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.homeunix.thecave.buddi.model.Account; import org.homeunix.thecave.buddi.model.BudgetCategory; import org.homeunix.thecave.buddi.model.Document; import org.homeunix.thecave.buddi.model.Transaction; import org.homeunix.thecave.buddi.model.TransactionSplit; import org.homeunix.thecave.buddi.model.impl.AccountImpl; import org.homeunix.thecave.buddi.model.impl.AccountTypeImpl; import org.homeunix.thecave.buddi.model.impl.BudgetCategoryImpl; import org.homeunix.thecave.buddi.model.impl.ModelFactory; import org.homeunix.thecave.buddi.model.impl.SplitImpl; import org.homeunix.thecave.buddi.model.impl.TransactionImpl; import org.homeunix.thecave.buddi.model.impl.TransactionSplitImpl; import org.homeunix.thecave.buddi.plugin.api.exception.ModelException; import org.homeunix.thecave.moss.collections.SortedArrayList; import org.junit.Before; import org.junit.Test; public class SplitsTest { Document d; Account a1; Account a2; BudgetCategory bc1; BudgetCategory bc2; BudgetCategory bc3; BudgetCategory bc4; @Before public void setup() throws Exception { d = ModelFactory.createDocument(); bc1 = new BudgetCategoryImpl(); bc2 = new BudgetCategoryImpl(); bc3 = new BudgetCategoryImpl(); bc4 = new BudgetCategoryImpl(); bc1.setName("Foo Budget Category 1"); bc2.setName("Foo Budget Category 2"); bc3.setName("Foo Budget Category 3"); bc4.setName("Foo Budget Category 4"); bc3.setIncome(true); bc4.setIncome(true); a1 = new AccountImpl(); a2 = new AccountImpl(); a1.setName("Foo Account"); a2.setName("Bar Account"); a1.setAccountType(new AccountTypeImpl()); a2.setAccountType(new AccountTypeImpl()); a1.getAccountType().setName("Chequing"); a1.getAccountType().setName("Cash"); a1.getAccountType().setCredit(false); a2.getAccountType().setCredit(false); d.addAccount(a1); d.addAccount(a2); d.addBudgetCategory(bc1); d.addBudgetCategory(bc2); d.addBudgetCategory(bc3); d.addBudgetCategory(bc4); } @Test /** * Tests a number of transaction comparisons by adding and removing transactions. */ public void testCompare() throws Exception { List<Transaction> transactions = new SortedArrayList<Transaction>(); //Splitting To - all attributes are the same for(int i = 0; i < 1000; i++){ Transaction t = new TransactionImpl(); t.setAmount(1234l); t.setDate(new Date()); t.setDescription("Foo"); t.setFrom(a1); t.setTo(new SplitImpl()); List<TransactionSplit> splits = new ArrayList<TransactionSplit>(); TransactionSplit split = new TransactionSplitImpl(); split.setAmount(1200); split.setSource(bc1); splits.add(split); split = new TransactionSplitImpl(); split.setAmount(34); split.setSource(bc2); splits.add(split); t.setToSplits(splits); transactions.add(t); } //Splitting From - All attributes are the same for(int i = 0; i < 1000; i++){ Transaction t = new TransactionImpl(); t.setAmount(1234l); t.setDate(new Date()); t.setDescription("Foo"); t.setTo(a1); t.setFrom(new SplitImpl()); List<TransactionSplit> splits = new ArrayList<TransactionSplit>(); TransactionSplit split = new TransactionSplitImpl(); split.setAmount(1200); split.setSource(bc1); splits.add(split); split = new TransactionSplitImpl(); split.setAmount(34); split.setSource(bc2); splits.add(split); t.setFromSplits(splits); transactions.add(t); } while(transactions.size() > 0){ int index = (int) (Math.random() * transactions.size()); Transaction t = transactions.get(index); transactions.remove(t); if (transactions.contains(t)) throw new Exception("We already removed the transaction!"); } } @Test public void testWithoutSplits() throws Exception { Transaction t = new TransactionImpl(); t.setAmount(1234l); t.setDate(new Date()); t.setDescription("Foo"); t.setTo(a1); t.setFrom(bc3); d.addTransaction(t); assertTrue(d.getTransactions().size() == 1); } @Test public void testWithFromSplits() throws Exception { Transaction t = new TransactionImpl(); t.setAmount(1234l); t.setDate(new Date()); t.setDescription("Foo"); t.setTo(a1); t.setFrom(new SplitImpl()); List<TransactionSplit> fromSplits = new ArrayList<TransactionSplit>(); TransactionSplit fromSplit1 = new TransactionSplitImpl(); fromSplit1.setAmount(1200); fromSplit1.setSource(bc3); fromSplits.add(fromSplit1); TransactionSplit fromSplit2 = new TransactionSplitImpl(); fromSplit2.setAmount(34); fromSplit2.setSource(bc4); fromSplits.add(fromSplit2); t.setFromSplits(fromSplits); d.addTransaction(t); assertTrue(d.getTransactions().size() == 1); } @Test public void testWithToSplits() throws Exception { Transaction t = new TransactionImpl(); t.setAmount(1234l); t.setDate(new Date()); t.setDescription("Foo"); t.setFrom(a1); t.setTo(new SplitImpl()); List<TransactionSplit> toSplits = new ArrayList<TransactionSplit>(); TransactionSplit toSplit1 = new TransactionSplitImpl(); toSplit1.setAmount(1200); toSplit1.setSource(bc1); toSplits.add(toSplit1); TransactionSplit toSplit2 = new TransactionSplitImpl(); toSplit2.setAmount(34); toSplit2.setSource(bc2); toSplits.add(toSplit2); t.setToSplits(toSplits); d.addTransaction(t); assertTrue(d.getTransactions().size() == 1); } @Test public void testWithBothSplits() throws Exception { Transaction t = new TransactionImpl(); t.setAmount(1234l); t.setDate(new Date()); t.setDescription("Foo"); t.setTo(new SplitImpl()); t.setFrom(new SplitImpl()); List<TransactionSplit> fromSplits = new ArrayList<TransactionSplit>(); TransactionSplit fromSplit1 = new TransactionSplitImpl(); fromSplit1.setAmount(1200); fromSplit1.setSource(a1); fromSplits.add(fromSplit1); TransactionSplit fromSplit2 = new TransactionSplitImpl(); fromSplit2.setAmount(34); fromSplit2.setSource(a2); fromSplits.add(fromSplit2); t.setFromSplits(fromSplits); List<TransactionSplit> toSplits = new ArrayList<TransactionSplit>(); TransactionSplit toSplit1 = new TransactionSplitImpl(); toSplit1.setAmount(1200); toSplit1.setSource(bc1); toSplits.add(toSplit1); TransactionSplit toSplit2 = new TransactionSplitImpl(); toSplit2.setAmount(34); toSplit2.setSource(bc2); toSplits.add(toSplit2); t.setToSplits(toSplits); d.addTransaction(t); assertTrue(d.getTransactions().size() == 1); } @Test public void testUnbalancedSplits() throws Exception { Transaction t = new TransactionImpl(); t.setAmount(1234l); t.setDate(new Date()); t.setDescription("Foo"); t.setFrom(a1); t.setTo(new SplitImpl()); List<TransactionSplit> failingToSplits = new ArrayList<TransactionSplit>(); TransactionSplit toSplit1 = new TransactionSplitImpl(); toSplit1.setAmount(1200); toSplit1.setSource(bc1); failingToSplits.add(toSplit1); TransactionSplit toSplit2 = new TransactionSplitImpl(); toSplit2.setAmount(3400); toSplit2.setSource(bc2); failingToSplits.add(toSplit2); t.setToSplits(failingToSplits); try { d.addTransaction(t); fail("Incorrectly succeeded in adding transaction with unbalanced splits"); } catch (ModelException me){ //Expected to catch exception assertTrue(d.getTransactions().size() == 0); } } @Test public void testWithIncorrectIncomeBCSplits() throws Exception { Transaction t = new TransactionImpl(); t.setAmount(1234l); t.setDate(new Date()); t.setDescription("Foo"); t.setFrom(a1); t.setTo(new SplitImpl()); List<TransactionSplit> failingToSplits = new ArrayList<TransactionSplit>(); TransactionSplit toSplit1 = new TransactionSplitImpl(); toSplit1.setAmount(1200); toSplit1.setSource(bc3); failingToSplits.add(toSplit1); TransactionSplit toSplit2 = new TransactionSplitImpl(); toSplit2.setAmount(34); toSplit2.setSource(bc4); failingToSplits.add(toSplit2); t.setToSplits(failingToSplits); try { d.addTransaction(t); fail("Incorrectly succeeded in adding transaction with income BCs in the To location"); } catch (ModelException me){ //Expected to catch exception assertTrue(d.getTransactions().size() == 0); } } }
api test (SplitsTest.java):
/* * Created on Aug 24, 2007 by wyatt */ package org.homeunix.thecave.buddi.test.api; import static org.junit.Assert.fail; import org.junit.Test; public class SplitsTest { @Test public void testSplits(){ try { // MutableDocument document = } catch (Exception e){ fail("Exception: " + e); } } }