📄 hangmantest.java
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.wicket.examples.hangman;import java.util.Iterator;import junit.framework.Assert;import junit.framework.TestCase;import org.apache.wicket.PageParameters;import org.apache.wicket.markup.html.link.Link;import org.apache.wicket.util.tester.WicketTester;/** * Testcase for the <code>Game</code> class. * * @author Chris Turner * @version 1.0 */public class HangManTest extends TestCase{ /** * Create the test case. * * @param message * The test name */ public HangManTest(String message) { super(message); } /** * Tests the hangman class directly for a winning game. * * @throws Exception */ public void test_1() throws Exception { Game hangman = new Game(); hangman.newGame(5, new WordGenerator(new String[] { "testing" })); Assert.assertEquals(5, hangman.getGuessesRemaining()); Assert.assertFalse(hangman.isWon()); Assert.assertFalse(hangman.isLost()); doGuessTest(hangman, 'a', false); Assert.assertEquals(4, hangman.getGuessesRemaining()); Assert.assertFalse(hangman.isWon()); Assert.assertFalse(hangman.isLost()); guess(hangman, 'a'); Assert.assertEquals(4, hangman.getGuessesRemaining()); Assert.assertFalse(hangman.isWon()); Assert.assertFalse(hangman.isLost()); doGuessTest(hangman, 't', true); Assert.assertEquals(4, hangman.getGuessesRemaining()); Assert.assertFalse(hangman.isWon()); Assert.assertFalse(hangman.isLost()); doGuessTest(hangman, 'e', true); Assert.assertEquals(4, hangman.getGuessesRemaining()); Assert.assertFalse(hangman.isWon()); Assert.assertFalse(hangman.isLost()); doGuessTest(hangman, 's', true); Assert.assertEquals(4, hangman.getGuessesRemaining()); Assert.assertFalse(hangman.isWon()); Assert.assertFalse(hangman.isLost()); doGuessTest(hangman, 'i', true); Assert.assertEquals(4, hangman.getGuessesRemaining()); Assert.assertFalse(hangman.isWon()); Assert.assertFalse(hangman.isLost()); doGuessTest(hangman, 'n', true); Assert.assertEquals(4, hangman.getGuessesRemaining()); Assert.assertFalse(hangman.isWon()); Assert.assertFalse(hangman.isLost()); doGuessTest(hangman, 'g', true); Assert.assertEquals(4, hangman.getGuessesRemaining()); Assert.assertTrue(hangman.isWon()); Assert.assertFalse(hangman.isLost()); } private Letter letter(Game hangman, char c) { for (Iterator iter = hangman.getLetters().iterator(); iter.hasNext();) { Letter letter = (Letter)iter.next(); if (letter.asString().equalsIgnoreCase(Character.toString(c))) { return letter; } } return null; } private boolean guess(Game hangman, char c) { return hangman.guess(letter(hangman, c)); } /** * Tests the hangman class directly for a lost game. * * @throws Exception */ public void testHangmanLoseGame() throws Exception { Game hangman = new Game(); hangman.newGame(2, new WordGenerator(new String[] { "foo" })); Assert.assertEquals(2, hangman.getGuessesRemaining()); Assert.assertFalse(hangman.isWon()); Assert.assertFalse(hangman.isLost()); doGuessTest(hangman, 'z', false); Assert.assertEquals(1, hangman.getGuessesRemaining()); Assert.assertFalse(hangman.isWon()); Assert.assertFalse(hangman.isLost()); doGuessTest(hangman, 'v', false); Assert.assertEquals(0, hangman.getGuessesRemaining()); Assert.assertFalse(hangman.isWon()); Assert.assertTrue(hangman.isLost()); } private void clickLetter(WicketTester tester, char ch) { tester.clickLink("letters:" + (ch - 'a') + ":letter"); } /** * Tests the webapplication for a successful match. */ public void testHangmanSuccessWebGame() { WicketTester tester = new WicketTester(new HangmanApplication()); tester.startPage(Home.class, new PageParameters("word=hangman")); tester.assertComponent("start", Link.class); tester.assertContains("Wicket Examples - hangman"); tester.clickLink("start"); tester.assertLabel("guessesRemaining", "5"); clickLetter(tester, 'f'); tester.assertLabel("guessesRemaining", "4"); clickLetter(tester, 'h'); tester.assertLabel("guessesRemaining", "4"); clickLetter(tester, 'a'); clickLetter(tester, 'n'); clickLetter(tester, 'g'); clickLetter(tester, 'm'); tester.assertRenderedPage(Win.class); } /** * Tests the webapplication for an unsuccessful match. */ public void testHangmanFailureWebGame() { WicketTester tester = new WicketTester(new HangmanApplication()); tester.startPage(Home.class, new PageParameters("word=hangman")); tester.assertComponent("start", Link.class); tester.assertContains("Wicket Examples - hangman"); tester.clickLink("start"); tester.assertLabel("guessesRemaining", "5"); clickLetter(tester, 'f'); tester.assertLabel("guessesRemaining", "4"); clickLetter(tester, 'e'); tester.assertLabel("guessesRemaining", "3"); clickLetter(tester, 't'); tester.assertLabel("guessesRemaining", "2"); clickLetter(tester, 'x'); tester.assertLabel("guessesRemaining", "1"); clickLetter(tester, 'z'); tester.assertRenderedPage(Lose.class); } /** * Performs a guess. * * @param hangman * @param c * @param expected */ private void doGuessTest(Game hangman, char c, boolean expected) { Assert.assertFalse(letter(hangman, c).isGuessed()); Assert.assertEquals(expected, guess(hangman, c)); Assert.assertTrue(letter(hangman, c).isGuessed()); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -