<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/index.php?action=history&amp;feed=atom&amp;title=Buddi_Existing_Test_code</id>
	<title>Buddi Existing Test code - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/index.php?action=history&amp;feed=atom&amp;title=Buddi_Existing_Test_code"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Buddi_Existing_Test_code&amp;action=history"/>
	<updated>2026-05-25T20:54:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Buddi_Existing_Test_code&amp;diff=26412&amp;oldid=prev</id>
		<title>Kanke at 20:18, 19 October 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Buddi_Existing_Test_code&amp;diff=26412&amp;oldid=prev"/>
		<updated>2009-10-19T20:18:52Z</updated>

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