initial commit
This commit is contained in:
168
test/oop/ch03/chess/ChessTest.java
Normal file
168
test/oop/ch03/chess/ChessTest.java
Normal file
@@ -0,0 +1,168 @@
|
||||
package oop.ch03.chess;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.PrintStream;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class ChessTest {
|
||||
// Das Zeilenende wird auf Windows-Systemen anders codiert als auf Nicht-Windows-Systemen.
|
||||
// Die folgende Zeile ermittelt die aktuelle Codierung.
|
||||
// EOL = "End of Line"
|
||||
private static final String LS = System.lineSeparator();
|
||||
private static final String HE = " 1 2 3 4 5 6 7 8" + LS;
|
||||
private static final String LI = " +---+---+---+---+---+---+---+---+" + LS;
|
||||
private static final String EMP = " | | | | | | | | |" + LS;
|
||||
private static final String WK1 = " | n | | | | | | | |" + LS;
|
||||
private static final String WQ3 = " | | | q | | | | | |" + LS;
|
||||
private static final String CO1 = " | | | n | | N | Q | | |" + LS;
|
||||
private static final String INIT_BOARD = board(EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP);
|
||||
private static final String WK61_BOARD = board(EMP, EMP, EMP, EMP, EMP, WK1, EMP, EMP);
|
||||
private static final String APP1_BOARD = board(EMP, EMP, EMP, EMP, WQ3, CO1, EMP, EMP);
|
||||
private static final String CHECK_TEXT1 = "white queen at (4, 2)" + LS +
|
||||
" cannot capture black queen at (8, 6)" + LS +
|
||||
" cannot capture white knight at (6, 4)" + LS +
|
||||
"black queen at (8, 6)" + LS +
|
||||
" cannot capture white queen at (4, 2)" + LS +
|
||||
" can capture white knight at (6, 4)" + LS +
|
||||
"white knight at (6, 4)" + LS +
|
||||
" cannot capture white queen at (4, 2)" + LS +
|
||||
" cannot capture black queen at (8, 6)" + LS;
|
||||
private static final String CHECK_TEXT2 = "white knight at (6, 3)" + LS +
|
||||
" cannot capture black knight at (6, 5)" + LS +
|
||||
" cannot capture black queen at (6, 6)" + LS +
|
||||
" cannot capture white queen at (5, 3)" + LS +
|
||||
"black knight at (6, 5)" + LS +
|
||||
" cannot capture white knight at (6, 3)" + LS +
|
||||
" cannot capture black queen at (6, 6)" + LS +
|
||||
" can capture white queen at (5, 3)" + LS +
|
||||
"black queen at (6, 6)" + LS +
|
||||
" cannot capture white knight at (6, 3)" + LS +
|
||||
" cannot capture black knight at (6, 5)" + LS +
|
||||
" cannot capture white queen at (5, 3)" + LS +
|
||||
"white queen at (5, 3)" + LS +
|
||||
" cannot capture white knight at (6, 3)" + LS +
|
||||
" cannot capture black knight at (6, 5)" + LS +
|
||||
" cannot capture black queen at (6, 6)" + LS;
|
||||
|
||||
private static String board(String... s) {
|
||||
if (s.length != 8)
|
||||
throw new IllegalArgumentException("Expected 8, but got " + s.length + " arguments");
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(HE).append(LI);
|
||||
for (int i = 1; i <= 8; i++)
|
||||
sb.append(i).append(s[i - 1]).append(LI);
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private Board board;
|
||||
|
||||
private final ByteArrayOutputStream printed = new ByteArrayOutputStream();
|
||||
private final PrintStream printStream = new PrintStream(printed, true);
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
board = new Board();
|
||||
printed.reset();
|
||||
System.setOut(printStream);
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
printStream.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEmpty() {
|
||||
board.printBoard();
|
||||
assertEquals(INIT_BOARD, printed.toString());
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testInvalidPos1() {
|
||||
new Knight(Color.white, board, 0, 4);
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testInvalidPos2() {
|
||||
new Queen(Color.white, board, 0, 4);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWhiteknight() {
|
||||
final Piece knight = new Knight(Color.white, board, 6, 1);
|
||||
checkPieces(1);
|
||||
assertEquals(knight, board.pieceAt(6, 1));
|
||||
board.printBoard();
|
||||
assertEquals(WK61_BOARD, printed.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test3Pieces() {
|
||||
final Piece queen1 = new Queen(Color.white, board, 4, 2);
|
||||
final Piece queen2 = new Queen(Color.black, board, 8, 6);
|
||||
final Piece knight = new Knight(Color.white, board, 6, 4);
|
||||
Assert.assertFalse(queen1.canCapture(queen2));
|
||||
Assert.assertFalse(queen1.canCapture(knight));
|
||||
Assert.assertFalse(queen2.canCapture(queen1));
|
||||
Assert.assertTrue(queen2.canCapture(knight));
|
||||
Assert.assertFalse(knight.canCapture(queen1));
|
||||
Assert.assertFalse(knight.canCapture(queen2));
|
||||
checkPieces(3);
|
||||
assertEquals(queen1, board.pieceAt(4, 2));
|
||||
assertEquals(queen2, board.pieceAt(8, 6));
|
||||
assertEquals(knight, board.pieceAt(6, 4));
|
||||
board.check();
|
||||
assertEquals(CHECK_TEXT1, printed.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test4Pieces() {
|
||||
final Piece knight1 = new Knight(Color.white, board, 6, 3);
|
||||
final Piece knight2 = new Knight(Color.black, board, 6, 5);
|
||||
final Piece queen1 = new Queen(Color.black, board, 6, 6);
|
||||
final Piece queen2 = new Queen(Color.white, board, 5, 3);
|
||||
checkPieces(4);
|
||||
assertEquals(knight1, board.pieceAt(6, 3));
|
||||
assertEquals(knight2, board.pieceAt(6, 5));
|
||||
assertEquals(queen1, board.pieceAt(6, 6));
|
||||
assertEquals(queen2, board.pieceAt(5, 3));
|
||||
board.printBoard();
|
||||
assertEquals(APP1_BOARD, printed.toString());
|
||||
Assert.assertFalse(knight1.canCapture(knight2));
|
||||
Assert.assertFalse(knight1.canCapture(queen1));
|
||||
Assert.assertFalse(knight1.canCapture(queen2));
|
||||
Assert.assertFalse(knight2.canCapture(knight1));
|
||||
Assert.assertFalse(knight2.canCapture(queen1));
|
||||
Assert.assertTrue(knight2.canCapture(queen2));
|
||||
Assert.assertFalse(queen1.canCapture(knight1));
|
||||
Assert.assertFalse(queen1.canCapture(knight2));
|
||||
Assert.assertFalse(queen1.canCapture(queen2));
|
||||
Assert.assertFalse(queen2.canCapture(knight1));
|
||||
Assert.assertFalse(queen2.canCapture(knight2));
|
||||
Assert.assertFalse(queen2.canCapture(queen1));
|
||||
printed.reset();
|
||||
board.check();
|
||||
assertEquals(CHECK_TEXT2, printed.toString());
|
||||
}
|
||||
|
||||
private void checkPieces(int expectedNumPieces) {
|
||||
int numPieces = 0;
|
||||
for (int row = 1; row < 9; row++)
|
||||
for (int col = 1; col < 9; col++)
|
||||
if (board.pieceAt(row, col) != null)
|
||||
numPieces++;
|
||||
assertEquals(expectedNumPieces, numPieces);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRunWithErrors() {
|
||||
final Piece rook = new Rook(Color.white, board, 1, 1);
|
||||
assertEquals(rook, board.pieceAt(1, 1));
|
||||
}
|
||||
}
|
24
test/oop/ch08/gui/mvc/TestModel.java
Normal file
24
test/oop/ch08/gui/mvc/TestModel.java
Normal file
@@ -0,0 +1,24 @@
|
||||
package oop.ch08.gui.mvc;
|
||||
|
||||
import oop.ch08.gui.mvc.model.CounterModel;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TestModel {
|
||||
@Test
|
||||
public void testInitWithZero() {
|
||||
final CounterModel model = new CounterModel();
|
||||
assertEquals(0, model.getCounter());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInc() {
|
||||
final CounterModel model = new CounterModel();
|
||||
int counter = model.getCounter();
|
||||
model.increment();
|
||||
assertEquals(++counter, model.getCounter());
|
||||
model.increment();
|
||||
assertEquals(++counter, model.getCounter());
|
||||
}
|
||||
}
|
2040
test/oop/ch09/calc/test/AdHocCalculatorEdgePairTest.java
Normal file
2040
test/oop/ch09/calc/test/AdHocCalculatorEdgePairTest.java
Normal file
File diff suppressed because it is too large
Load Diff
280
test/oop/ch09/calc/test/AdHocCalculatorEdgeTest.java
Normal file
280
test/oop/ch09/calc/test/AdHocCalculatorEdgeTest.java
Normal file
@@ -0,0 +1,280 @@
|
||||
package oop.ch09.calc.test;
|
||||
|
||||
import oop.ch06.calc.AdHocCalculator;
|
||||
import oop.ch06.calc.Ops;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class AdHocCalculatorEdgeTest {
|
||||
private AdHocCalculator calc;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
calc = new AdHocCalculator();
|
||||
calc.digit(6);
|
||||
calc.binOp(Ops.MULT);
|
||||
calc.digit(7);
|
||||
calc.eval();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test0() {
|
||||
calc.clear();
|
||||
assertEquals(0.0, calc.getValue(), 1e-20);
|
||||
calc.digit(6);
|
||||
assertEquals(6.0, calc.getValue(), 1e-10);
|
||||
calc.digit(2);
|
||||
assertEquals(62.0, calc.getValue(), 1e-10);
|
||||
calc.dot();
|
||||
assertEquals(62.0, calc.getValue(), 1e-10);
|
||||
calc.clear();
|
||||
assertEquals(0.0, calc.getValue(), 1e-20);
|
||||
calc.unOp(Ops.EXP);
|
||||
assertEquals(1.0, calc.getValue(), 1e-10);
|
||||
calc.allClear();
|
||||
assertEquals(0.0, calc.getValue(), 1e-20);
|
||||
calc.binOp(Ops.MINUS);
|
||||
assertEquals(0.0, calc.getValue(), 1e-10);
|
||||
calc.eval();
|
||||
assertEquals(0.0, calc.getValue(), 1e-10);
|
||||
calc.eval();
|
||||
assertEquals(0.0, calc.getValue(), 1e-10);
|
||||
calc.dot();
|
||||
assertEquals(0.0, calc.getValue(), 1e-10);
|
||||
calc.allClear();
|
||||
assertEquals(0.0, calc.getValue(), 1e-20);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test1() {
|
||||
calc.binOp(Ops.DIV);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.unOp(Ops.SQRT);
|
||||
assertEquals(6.48074069840786, calc.getValue(), 1e-10);
|
||||
calc.unOp(Ops.SQRT);
|
||||
assertEquals(2.5457298950218306, calc.getValue(), 1e-10);
|
||||
calc.digit(8);
|
||||
assertEquals(8.0, calc.getValue(), 1e-10);
|
||||
calc.eval();
|
||||
assertEquals(5.25, calc.getValue(), 1e-10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test2() {
|
||||
calc.binOp(Ops.PLUS);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.binOp(Ops.DIV);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.dot();
|
||||
assertEquals(0.0, calc.getValue(), 1e-10);
|
||||
calc.allClear();
|
||||
assertEquals(0.0, calc.getValue(), 1e-20);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test3() {
|
||||
calc.binOp(Ops.MULT);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.allClear();
|
||||
assertEquals(0.0, calc.getValue(), 1e-20);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test4() {
|
||||
calc.binOp(Ops.PLUS);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.clear();
|
||||
assertEquals(0.0, calc.getValue(), 1e-20);
|
||||
calc.digit(5);
|
||||
assertEquals(5.0, calc.getValue(), 1e-10);
|
||||
calc.clear();
|
||||
assertEquals(0.0, calc.getValue(), 1e-20);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test5() {
|
||||
calc.digit(6);
|
||||
assertEquals(6.0, calc.getValue(), 1e-10);
|
||||
calc.allClear();
|
||||
assertEquals(0.0, calc.getValue(), 1e-20);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test6() {
|
||||
calc.digit(3);
|
||||
assertEquals(3.0, calc.getValue(), 1e-10);
|
||||
calc.binOp(Ops.DIV);
|
||||
assertEquals(3.0, calc.getValue(), 1e-10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test7() {
|
||||
calc.digit(7);
|
||||
assertEquals(7.0, calc.getValue(), 1e-10);
|
||||
calc.clear();
|
||||
assertEquals(0.0, calc.getValue(), 1e-20);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test8() {
|
||||
calc.digit(9);
|
||||
assertEquals(9.0, calc.getValue(), 1e-10);
|
||||
calc.eval();
|
||||
assertEquals(9.0, calc.getValue(), 1e-10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test9() {
|
||||
calc.digit(5);
|
||||
assertEquals(5.0, calc.getValue(), 1e-10);
|
||||
calc.unOp(Ops.CHANGE_SIGN);
|
||||
assertEquals(-5.0, calc.getValue(), 1e-10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test11() {
|
||||
calc.dot();
|
||||
assertEquals(0.0, calc.getValue(), 1e-10);
|
||||
calc.binOp(Ops.PLUS);
|
||||
assertEquals(0.0, calc.getValue(), 1e-10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test12() {
|
||||
calc.dot();
|
||||
assertEquals(0.0, calc.getValue(), 1e-10);
|
||||
calc.digit(2);
|
||||
assertEquals(0.2, calc.getValue(), 1e-10);
|
||||
calc.unOp(Ops.EXP);
|
||||
assertEquals(1.2214027581601699, calc.getValue(), 1e-10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test13() {
|
||||
calc.dot();
|
||||
assertEquals(0.0, calc.getValue(), 1e-10);
|
||||
calc.eval();
|
||||
assertEquals(0.0, calc.getValue(), 1e-10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test14() {
|
||||
calc.binOp(Ops.DIV);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.unOp(Ops.SQRT);
|
||||
assertEquals(6.48074069840786, calc.getValue(), 1e-10);
|
||||
calc.clear();
|
||||
assertEquals(0.0, calc.getValue(), 1e-20);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test15() {
|
||||
calc.binOp(Ops.MINUS);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.unOp(Ops.EXP);
|
||||
assertEquals(1.73927494152050099E18, calc.getValue(), 1e-10);
|
||||
calc.eval();
|
||||
assertEquals(-1.73927494152050099E18, calc.getValue(), 1e-10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test16() {
|
||||
calc.binOp(Ops.MINUS);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.unOp(Ops.EXP);
|
||||
assertEquals(1.73927494152050099E18, calc.getValue(), 1e-10);
|
||||
calc.binOp(Ops.MINUS);
|
||||
assertEquals(-1.73927494152050099E18, calc.getValue(), 1e-10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test17() {
|
||||
calc.binOp(Ops.DIV);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.unOp(Ops.EXP);
|
||||
assertEquals(1.73927494152050099E18, calc.getValue(), 1e-10);
|
||||
calc.allClear();
|
||||
assertEquals(0.0, calc.getValue(), 1e-20);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test18() {
|
||||
calc.binOp(Ops.DIV);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.unOp(Ops.SQRT);
|
||||
assertEquals(6.48074069840786, calc.getValue(), 1e-10);
|
||||
calc.dot();
|
||||
assertEquals(0.0, calc.getValue(), 1e-10);
|
||||
calc.binOp(Ops.PLUS);
|
||||
assertTrue(Double.isNaN(calc.getValue()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test19() {
|
||||
calc.binOp(Ops.DIV);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.digit(2);
|
||||
assertEquals(2.0, calc.getValue(), 1e-10);
|
||||
calc.digit(5);
|
||||
assertEquals(25.0, calc.getValue(), 1e-10);
|
||||
calc.unOp(Ops.CHANGE_SIGN);
|
||||
assertEquals(-25.0, calc.getValue(), 1e-10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test20() {
|
||||
calc.binOp(Ops.PLUS);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.digit(9);
|
||||
assertEquals(9.0, calc.getValue(), 1e-10);
|
||||
calc.binOp(Ops.PLUS);
|
||||
assertEquals(51.0, calc.getValue(), 1e-10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test21() {
|
||||
calc.binOp(Ops.MULT);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.digit(7);
|
||||
assertEquals(7.0, calc.getValue(), 1e-10);
|
||||
calc.dot();
|
||||
assertEquals(7.0, calc.getValue(), 1e-10);
|
||||
calc.unOp(Ops.SQRT);
|
||||
assertEquals(2.6457513110645907, calc.getValue(), 1e-10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test22() {
|
||||
calc.binOp(Ops.PLUS);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.digit(3);
|
||||
assertEquals(3.0, calc.getValue(), 1e-10);
|
||||
calc.allClear();
|
||||
assertEquals(0.0, calc.getValue(), 1e-20);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test23() {
|
||||
calc.binOp(Ops.MULT);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.dot();
|
||||
assertEquals(0.0, calc.getValue(), 1e-10);
|
||||
calc.digit(3);
|
||||
assertEquals(0.3, calc.getValue(), 1e-10);
|
||||
calc.clear();
|
||||
assertEquals(0.0, calc.getValue(), 1e-20);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test24() {
|
||||
calc.binOp(Ops.PLUS);
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
calc.dot();
|
||||
assertEquals(0.0, calc.getValue(), 1e-10);
|
||||
calc.eval();
|
||||
assertEquals(42.0, calc.getValue(), 1e-10);
|
||||
}
|
||||
}
|
2040
test/oop/ch09/calc/test/CalculatorEdgePairTest.java
Normal file
2040
test/oop/ch09/calc/test/CalculatorEdgePairTest.java
Normal file
File diff suppressed because it is too large
Load Diff
34
test/oop/ch09/testing/ExceptionTest.java
Normal file
34
test/oop/ch09/testing/ExceptionTest.java
Normal file
@@ -0,0 +1,34 @@
|
||||
package oop.ch09.testing;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
public class ExceptionTest {
|
||||
@Test
|
||||
public void testDivZero1() {
|
||||
int zero = 0;
|
||||
int result = 4 / zero;
|
||||
assertTrue(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDivZero2() {
|
||||
int zero = 0;
|
||||
try {
|
||||
int result = 4 / zero;
|
||||
fail("ArithmeticException kam nicht");
|
||||
}
|
||||
catch (ArithmeticException ex) {
|
||||
assertEquals("/ by zero", ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Test(expected = ArithmeticException.class)
|
||||
public void testDivZero2b() {
|
||||
int zero = 0;
|
||||
int result = 4 / zero;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user