|
From: Pelle B. <pe...@us...> - 2004-04-06 23:03:36
|
Update of /cvsroot/neuclear/neuclear-ledger/src/java/org/neuclear/ledger/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2934/src/java/org/neuclear/ledger/tests Modified Files: AbstractLedgerTest.java Log Message: Updated Unit Tests Index: AbstractLedgerTest.java =================================================================== RCS file: /cvsroot/neuclear/neuclear-ledger/src/java/org/neuclear/ledger/tests/AbstractLedgerTest.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** AbstractLedgerTest.java 5 Apr 2004 22:06:46 -0000 1.7 --- AbstractLedgerTest.java 6 Apr 2004 22:50:14 -0000 1.8 *************** *** 2,5 **** --- 2,6 ---- import junit.framework.TestCase; + import org.neuclear.commons.crypto.CryptoTools; import org.neuclear.ledger.*; *************** *** 13,19 **** * $Id$ * $Log$ * Revision 1.7 2004/04/05 22:06:46 pelle * added setHeldReceiptId() method to ledger ! * * Revision 1.6 2004/03/31 23:11:09 pelle * Reworked the ID's of the transactions. The primary ID is now the request ID. --- 14,23 ---- * $Id$ * $Log$ + * Revision 1.8 2004/04/06 22:50:14 pelle + * Updated Unit Tests + * * Revision 1.7 2004/04/05 22:06:46 pelle * added setHeldReceiptId() method to ledger ! * <p/> * Revision 1.6 2004/03/31 23:11:09 pelle * Reworked the ID's of the transactions. The primary ID is now the request ID. *************** *** 184,187 **** --- 188,212 ---- public abstract Ledger createLedger() throws LowlevelLedgerException, UnknownLedgerException; + private final PostedTransaction transfer(final String from, final String to, final double amount, final String comment) throws InvalidTransactionException, LowlevelLedgerException { + PostedTransaction tran = ledger.transfer(CryptoTools.createRandomID(), from, to, amount, comment); + try { + ledger.setReceiptId(tran.getRequestId(), CryptoTools.createRandomID()); + } catch (UnknownTransactionException e) { + assertTrue(false); + } + return tran; + + } + + public final PostedHeldTransaction hold(final String from, final String to, final Date expires, final double amount, final String comment) throws InvalidTransactionException, UnBalancedTransactionException, LowlevelLedgerException { + PostedHeldTransaction tran = ledger.hold(CryptoTools.createRandomID(), from, to, expires, amount, comment); + try { + ledger.setHeldReceiptId(tran.getRequestId(), CryptoTools.createRandomID()); + } catch (UnknownTransactionException e) { + assertTrue(false); + } + return tran; + } + public final void testTransfer() throws LedgerException { final double aliceBalance = ledger.getBalance(ALICE); *************** *** 189,200 **** final double amount = 100; ! ledger.transfer(ALICE, BOB, amount, "LOAN"); assertEquals("ALICE BALANCE", aliceBalance - amount, ledger.getBalance(ALICE), 0); assertEquals("BOB BALANCE", bobBalance + amount, ledger.getBalance(BOB), 0); ! ledger.transfer(BOB, ALICE, amount, "Repayment"); assertEquals("REPAY ALICE BALANCE", aliceBalance, ledger.getBalance(ALICE), 0); assertEquals("REPAY BOB BALANCE", bobBalance, ledger.getBalance(BOB), 0); ! ledger.transfer(BOB, ALICE, 5, "Interest"); System.out.println("Alice's Balance: " + ledger.getBalance(ALICE)); System.out.println("Bob's Balance: " + ledger.getBalance(BOB)); --- 214,225 ---- final double amount = 100; ! transfer(ALICE, BOB, amount, "LOAN"); assertEquals("ALICE BALANCE", aliceBalance - amount, ledger.getBalance(ALICE), 0); assertEquals("BOB BALANCE", bobBalance + amount, ledger.getBalance(BOB), 0); ! transfer(BOB, ALICE, amount, "Repayment"); assertEquals("REPAY ALICE BALANCE", aliceBalance, ledger.getBalance(ALICE), 0); assertEquals("REPAY BOB BALANCE", bobBalance, ledger.getBalance(BOB), 0); ! transfer(BOB, ALICE, 5, "Interest"); System.out.println("Alice's Balance: " + ledger.getBalance(ALICE)); System.out.println("Bob's Balance: " + ledger.getBalance(BOB)); *************** *** 206,210 **** // Need a positive amount in alice's account if (ledger.getAvailableBalance(ALICE) < 100) ! ledger.transfer("MONEY PRESS", ALICE, -ledger.getAvailableBalance(ALICE) + 100, "FUND"); final double aliceBalance = ledger.getBalance(ALICE); final double bobBalance = ledger.getBalance(BOB); --- 231,235 ---- // Need a positive amount in alice's account if (ledger.getAvailableBalance(ALICE) < 100) ! transfer("MONEY PRESS", ALICE, -ledger.getAvailableBalance(ALICE) + 100, "FUND"); final double aliceBalance = ledger.getBalance(ALICE); final double bobBalance = ledger.getBalance(BOB); *************** *** 231,239 **** } ! public final void testMultiTransfer() throws UnBalancedTransactionException, LowlevelLedgerException, InvalidTransactionException { final double bobBalance = ledger.getBalance(CAROL); int cumulative = 0; for (int i = 0; i < 100; i++) { ! ledger.transfer("req" + i + System.currentTimeMillis(), "Issuer", CAROL, i, "fund it"); cumulative += i; assertEquals("BOB BALANCE", bobBalance + cumulative, ledger.getBalance(CAROL), 0); --- 256,264 ---- } ! public final void testMultiTransfer() throws UnBalancedTransactionException, LowlevelLedgerException, InvalidTransactionException, UnknownTransactionException { final double bobBalance = ledger.getBalance(CAROL); int cumulative = 0; for (int i = 0; i < 100; i++) { ! transfer("Issuer", CAROL, i, "fund it"); cumulative += i; assertEquals("BOB BALANCE", bobBalance + cumulative, ledger.getBalance(CAROL), 0); *************** *** 251,256 **** public final void testHoldAndExpireTransfer() throws LowlevelLedgerException, UnBalancedTransactionException, InvalidTransactionException { ! if (ledger.getAvailableBalance(ALICE) < 100) ! ledger.transfer("MONEY PRESS", ALICE, -ledger.getAvailableBalance(ALICE) + 100, "FUND"); final double aliceBalance = ledger.getBalance(ALICE); final double bobBalance = ledger.getBalance(BOB); --- 276,280 ---- public final void testHoldAndExpireTransfer() throws LowlevelLedgerException, UnBalancedTransactionException, InvalidTransactionException { ! ensureBalance(100.0); final double aliceBalance = ledger.getBalance(ALICE); final double bobBalance = ledger.getBalance(BOB); *************** *** 259,263 **** System.out.println("Bob's Balance: " + ledger.getBalance(BOB)); ! ledger.hold(ALICE, BOB, new Date(System.currentTimeMillis() + 5000), amount, "LOAN"); assertEquals("ALICE Available BALANCE", aliceBalance - amount, ledger.getAvailableBalance(ALICE), 0); assertEquals("BOB Available BALANCE", bobBalance, ledger.getAvailableBalance(BOB), 0); --- 283,287 ---- System.out.println("Bob's Balance: " + ledger.getBalance(BOB)); ! hold(ALICE, BOB, new Date(System.currentTimeMillis() + 5000), amount, "LOAN"); assertEquals("ALICE Available BALANCE", aliceBalance - amount, ledger.getAvailableBalance(ALICE), 0); assertEquals("BOB Available BALANCE", bobBalance, ledger.getAvailableBalance(BOB), 0); *************** *** 282,288 **** } public final void testHoldAndCancelTransfer() throws LowlevelLedgerException, UnBalancedTransactionException, InvalidTransactionException, UnknownTransactionException { if (ledger.getAvailableBalance(ALICE) < 100) ! ledger.transfer("MONEY PRESS", ALICE, -ledger.getAvailableBalance(ALICE) + 100, "FUND"); final double aliceBalance = ledger.getBalance(ALICE); final double bobBalance = ledger.getBalance(BOB); --- 306,317 ---- } + private void ensureBalance(final double target) throws LowlevelLedgerException, InvalidTransactionException { + if (ledger.getAvailableBalance(ALICE) < target) + transfer("MONEY PRESS", ALICE, -ledger.getAvailableBalance(ALICE) + target, "FUND"); + } + public final void testHoldAndCancelTransfer() throws LowlevelLedgerException, UnBalancedTransactionException, InvalidTransactionException, UnknownTransactionException { if (ledger.getAvailableBalance(ALICE) < 100) ! transfer("MONEY PRESS", ALICE, -ledger.getAvailableBalance(ALICE) + 100, "FUND"); final double aliceBalance = ledger.getBalance(ALICE); final double bobBalance = ledger.getBalance(BOB); *************** *** 291,295 **** System.out.println("Bob's Balance: " + ledger.getBalance(BOB)); ! PostedHeldTransaction tran = ledger.hold(ALICE, BOB, new Date(System.currentTimeMillis() + 5000), amount, "LOAN"); assertEquals("ALICE BALANCE", aliceBalance, ledger.getBalance(ALICE), 0); assertEquals("BOB BALANCE", bobBalance, ledger.getBalance(BOB), 0); --- 320,324 ---- System.out.println("Bob's Balance: " + ledger.getBalance(BOB)); ! PostedHeldTransaction tran = hold(ALICE, BOB, new Date(System.currentTimeMillis() + 5000), amount, "LOAN"); assertEquals("ALICE BALANCE", aliceBalance, ledger.getBalance(ALICE), 0); assertEquals("BOB BALANCE", bobBalance, ledger.getBalance(BOB), 0); *************** *** 298,302 **** assertEquals("BOB Available BALANCE", bobBalance, ledger.getAvailableBalance(BOB), 0); ! ledger.performCancelHold(tran); assertEquals("ALICE BALANCE CANCELLED", aliceBalance, ledger.getBalance(ALICE), 0); assertEquals("BOB BALANCE CANCELLED", bobBalance, ledger.getBalance(BOB), 0); --- 327,334 ---- assertEquals("BOB Available BALANCE", bobBalance, ledger.getAvailableBalance(BOB), 0); ! final Date before = new Date(); ! final Date date = ledger.performCancelHold(tran); ! assertNotNull(date); ! assertTrue(!date.before(before)); assertEquals("ALICE BALANCE CANCELLED", aliceBalance, ledger.getBalance(ALICE), 0); assertEquals("BOB BALANCE CANCELLED", bobBalance, ledger.getBalance(BOB), 0); *************** *** 313,317 **** public final void testHoldAndCompleteTransfer() throws LowlevelLedgerException, UnBalancedTransactionException, InvalidTransactionException, UnknownTransactionException, TransactionExpiredException { if (ledger.getAvailableBalance(ALICE) < 100) ! ledger.transfer("MONEY PRESS", ALICE, -ledger.getAvailableBalance(ALICE) + 100, "FUND"); final double aliceBalance = ledger.getBalance(ALICE); final double bobBalance = ledger.getBalance(BOB); --- 345,349 ---- public final void testHoldAndCompleteTransfer() throws LowlevelLedgerException, UnBalancedTransactionException, InvalidTransactionException, UnknownTransactionException, TransactionExpiredException { if (ledger.getAvailableBalance(ALICE) < 100) ! transfer("MONEY PRESS", ALICE, -ledger.getAvailableBalance(ALICE) + 100, "FUND"); final double aliceBalance = ledger.getBalance(ALICE); final double bobBalance = ledger.getBalance(BOB); *************** *** 320,324 **** System.out.println("Bob's Balance: " + ledger.getBalance(BOB)); ! PostedHeldTransaction tran = ledger.hold(ALICE, BOB, new Date(System.currentTimeMillis() + 5000), amount, "LOAN"); assertEquals("ALICE BALANCE", aliceBalance, ledger.getBalance(ALICE), 0); assertEquals("BOB BALANCE", bobBalance, ledger.getBalance(BOB), 0); --- 352,356 ---- System.out.println("Bob's Balance: " + ledger.getBalance(BOB)); ! PostedHeldTransaction tran = hold(ALICE, BOB, new Date(System.currentTimeMillis() + 5000), amount, "LOAN"); assertEquals("ALICE BALANCE", aliceBalance, ledger.getBalance(ALICE), 0); assertEquals("BOB BALANCE", bobBalance, ledger.getBalance(BOB), 0); *************** *** 327,331 **** assertEquals("BOB Available BALANCE", bobBalance, ledger.getAvailableBalance(BOB), 0); ! ledger.performCompleteHold(tran, 100, "done"); assertEquals("ALICE BALANCE COMPLETED", aliceBalance - amount, ledger.getBalance(ALICE), 0); assertEquals("BOB BALANCE COMPLETED", bobBalance + amount, ledger.getBalance(BOB), 0); --- 359,365 ---- assertEquals("BOB Available BALANCE", bobBalance, ledger.getAvailableBalance(BOB), 0); ! PostedTransaction pstd = ledger.performCompleteHold(tran, 100, "done"); ! ledger.setReceiptId(pstd.getRequestId(), CryptoTools.createRandomID()); ! assertEquals("ALICE BALANCE COMPLETED", aliceBalance - amount, ledger.getBalance(ALICE), 0); assertEquals("BOB BALANCE COMPLETED", bobBalance + amount, ledger.getBalance(BOB), 0); *************** *** 349,353 **** // Now check that it throws InsufficientFundsException try { ! ledger.hold(ALICE, BOB, new Date(System.currentTimeMillis() + 5000), ledger.getAvailableBalance(ALICE) + 10, "To much"); assertTrue("InssuficientFundsException should have been thrown", false); } catch (InsufficientFundsException e) { --- 383,387 ---- // Now check that it throws InsufficientFundsException try { ! hold(ALICE, BOB, new Date(System.currentTimeMillis() + 5000), ledger.getAvailableBalance(ALICE) + 10, "To much"); assertTrue("InssuficientFundsException should have been thrown", false); } catch (InsufficientFundsException e) { *************** *** 365,375 **** final double bobBalance = ledger.getBalance(BOB); ! PostedTransaction tran = ledger.transfer(ALICE, BOB, 100, "LOAN"); assertNull(tran.getReceiptId()); try { ledger.setReceiptId(tran.getRequestId(), "1234"); } catch (UnknownTransactionException e) { ! assertTrue(true); } } --- 399,460 ---- final double bobBalance = ledger.getBalance(BOB); ! PostedTransaction tran = ledger.transfer(CryptoTools.createRandomID(), ALICE, BOB, 100, "LOAN"); ! ! assertEquals(aliceBalance, ledger.getBalance(ALICE), 0); ! assertEquals(aliceBalance, ledger.getAvailableBalance(ALICE), 0); ! assertEquals(bobBalance, ledger.getBalance(BOB), 0); ! assertEquals(bobBalance, ledger.getAvailableBalance(BOB), 0); ! assertNull(tran.getReceiptId()); try { ledger.setReceiptId(tran.getRequestId(), "1234"); } catch (UnknownTransactionException e) { ! assertTrue(false); ! } ! assertEquals(aliceBalance - 100, ledger.getBalance(ALICE), 0); ! assertEquals(aliceBalance - 100, ledger.getAvailableBalance(ALICE), 0); ! assertEquals(bobBalance + 100, ledger.getBalance(BOB), 0); ! assertEquals(bobBalance + 100, ledger.getAvailableBalance(BOB), 0); ! ! ! } ! ! public final void testTransactionExists() throws LedgerException { ! PostedTransaction tran = transfer("bob", "alice", 100, "does this exist?"); ! assertNotNull(tran); ! assertTrue(ledger.transactionExists(tran.getRequestId())); ! } ! ! public final void testHeldTransactionExists() throws LedgerException { ! ensureBalance(100); ! PostedHeldTransaction tran = hold(ALICE, BOB, new Date(System.currentTimeMillis() + 1000), 100, "does this exist?"); ! assertNotNull(tran); ! assertTrue(ledger.heldTransactionExists(tran.getRequestId())); ! ! } ! ! public final void testSetHeldReceiptId() throws LedgerException { ! ensureBalance(100); ! final double aliceBalance = ledger.getBalance(ALICE); ! final double bobBalance = ledger.getBalance(BOB); ! ! PostedHeldTransaction tran = ledger.hold(ALICE, BOB, new Date(System.currentTimeMillis() + 5000), 100, "LOAN"); ! assertNull(tran.getReceiptId()); ! assertEquals(aliceBalance, ledger.getBalance(ALICE), 0); ! assertEquals(aliceBalance, ledger.getAvailableBalance(ALICE), 0); ! assertEquals(bobBalance, ledger.getBalance(BOB), 0); ! assertEquals(bobBalance, ledger.getAvailableBalance(BOB), 0); ! ! try { ! ledger.setHeldReceiptId(tran.getRequestId(), "1234"); ! } catch (UnknownTransactionException e) { ! assertTrue(false); } + PostedHeldTransaction t2 = ledger.findHeldTransaction(tran.getRequestId()); + assertEquals("1234", t2.getReceiptId()); + assertEquals(aliceBalance, ledger.getBalance(ALICE), 0); + assertEquals(aliceBalance - 100, ledger.getAvailableBalance(ALICE), 0); + assertEquals(bobBalance, ledger.getBalance(BOB), 0); + assertEquals(bobBalance, ledger.getAvailableBalance(BOB), 0); } *************** *** 382,386 **** final String fundbook = "fund-" + System.currentTimeMillis(); final double fundbalance = ledger.getBalance(fundbook); ! ledger.transfer(fundbook, book, fundamount, "fund the benchmark"); System.out.println("Start Balance: " + ledger.getBalance(book)); assertEquals(fundamount, ledger.getAvailableBalance(book), 0); --- 467,471 ---- final String fundbook = "fund-" + System.currentTimeMillis(); final double fundbalance = ledger.getBalance(fundbook); ! transfer(fundbook, book, fundamount, "fund the benchmark"); System.out.println("Start Balance: " + ledger.getBalance(book)); assertEquals(fundamount, ledger.getAvailableBalance(book), 0); |