package forge;
import org.testng.annotations.Test;
import java.util.ArrayList;
/**
* <p>MoveTest class.</p>
*
* @author Forge
* @version $Id: $
*/
@Test(timeOut = 1000)
public class MoveTest {
class MoveConcrete extends Move {
private final int myNumber;
/**
* Constant <code>classNumber=-1</code>
*/
private int classNumber = -1;
/**
* Constant <code>array=</code>
*/
private int[] array;
/**
* Constant <code>classIndex=</code>
*/
private int classIndex;
private int myIndex = -1;
/**
* <p>Constructor for MoveTest.</p>
*
* @param i_array an array of int.
*/
public MoveConcrete(int i_array[]) {
this();
classIndex = 0;
array = i_array;
}
/**
* <p>Constructor for MoveTest.</p>
*/
public MoveConcrete() {
myNumber = classNumber;
classNumber++;
}
/**
* <p>Getter for the field <code>classNumber</code>.</p>
*
* @return a int.
*/
public int getClassNumber() {
return classNumber;
}
/**
* <p>Getter for the field <code>myNumber</code>.</p>
*
* @return a int.
*/
public int getMyNumber() {
return myNumber;
}
/**
* {@inheritDoc}
*/
@Override
public Move[] generateMoves() {
ArrayList<MoveTest> list = new ArrayList<MoveTest>();
for (int i = 0; i < 2; i++)
list.add(new MoveTest());
Move m[] = new Move[list.size()];
list.toArray(m);
return m;
}
/**
* {@inheritDoc}
*/
@Override
public int getScore() {
if (myIndex == -1) {
myIndex = classIndex;
classIndex++;
}
return array[myIndex];
}//getScore()
}
//branching 2
//fully test depths 1 and 2, one test of depth 3
/**
* <p>test.</p>
*/
@Test(timeOut = 1000)
public void MoveTest1() {
MoveConcrete t;
t = new MoveConcrete(new int[]{4, 1, 6, 3, 2, 7, 6, 9});
test("1", t.max(t, 3, true) == 7);
t = new MoveConcrete(new int[]{1, 2});
test("2", t.max(t, 1, true) == 2);
t = new MoveConcrete(new int[]{2, 1});
test("3", t.max(t, 1, true) == 2);
t = new MoveConcrete(new int[]{1, 2, 3, 4});
test("4", t.max(t, 2, true) == 3);
t = new MoveConcrete(new int[]{2, 1, 4, 3});
test("5", t.max(t, 2, true) == 3);
t = new MoveConcrete(new int[]{4, 3, 1, 2});
test("6", t.max(t, 2, true) == 3);
t = new MoveConcrete(new int[]{3, 4, 2, 1});
test("7", t.max(t, 2, true) == 3);
}
/**
* <p>test.</p>
*
* @param message a {@link java.lang.String} object.
* @param shouldBeTrue a boolean.
*/
public void test(String message, boolean shouldBeTrue) {
if (!shouldBeTrue) {
throw new RuntimeException(message);
}
}
}