Tengo que hacer una baraja, tengo la clase Carta y la clase Baraja, y le tengo que pasar un test de prueba, y ahi viene mi problema... Me da error con el constructor esPoker, esColor y getCartas en el test.
Clase Carta:
package org.mp.bloque2.ejercicio01;
public class Carta {
private int numeroCarta;
private String palo;
public Carta (int numeroCarta, String palo){
this.numeroCarta = numeroCarta;
this.palo = palo;
}
public int getNumeroCarta(){
return numeroCarta;
}
public String getPalo(){
return palo;
}
public Carta(){
numeroCarta = 0;
palo = null;
}
/*Orden palo:
* oros = 0
* copas = 1
* espadas = 2
* bastos = 3
*/
//Sobreescribimos el metodo equals para poder comparar el numero de carta y el palo.
public boolean equals(Carta carta){
if(palo.equals(carta.palo)){
if(numeroCarta == carta.numeroCarta){
return true;
}
}
return false;
}
/* El metodo compareTo sirve para comparar que una carta si son iguales devuelve 0
* Si el palo es igual pero la carta es mayor devuelve 1
* y si no se da esas condiciones de vuelve -1
*/
public int compareTo(Carta carta){
if(this.equals(carta)){
return 0;
}
else if(this.palo.equals(palo)){
if(this.numeroCarta > carta.numeroCarta){
return 1;
}
}
return -1;
}
@Override
public String toString() {
return "Carta [numeroCarta=" + numeroCarta + ", palo=" + palo + "]";
}
}
Clase Baraja:
package org.mp.bloque2.ejercicio01;
import java.util.Arrays;
public class Baraja {
private Carta[] cartas;
private String nombre;
public Baraja(int posicion, String nombre){
cartas = new Carta[posicion];
this.nombre = nombre;
//Vector entrante desdel main
this.barajar();
}
public Carta getCartas(int i){
return cartas[i];
}
public String getNombre(){
return nombre;
}
//Metodo para barajar
public void barajar(){
Carta cartaAuxiliar;
int posicionA = 0;
int posicionB = 0;
for(int i = 0; i > 4000; i++){
posicionA = (int) Math.random()*40+1;//Genera un numero cualquiera y lo multiplica por 39
posicionB = (int) Math.random()*40+1;
while(posicionA == posicionB){
posicionB = (int) Math.random()*40+1;
}
}
cartaAuxiliar = cartas[posicionA];
cartas[posicionA] = cartas[posicionB];
cartas[posicionB] = cartaAuxiliar;
}
//Metodo para buscar una carta en la baraja
public int buscarCarta(Carta unaCarta){
int i = 0;
while(cartas[i].equals(unaCarta)) if(i < cartas.length){
i++;
}
return i;
}
//Metodo que ordena la baraja hecho por el metodo de la burbuja
@SuppressWarnings("null")
public void ordenarBaraja(){
Carta barajaAuxiliar[] = null;
for (int n = 0; n < 40; n++){
barajaAuxiliar[n] = new Carta();
}
int t = cartas.length;
for (int i = 1; i < t; i++) {
for (int k = t- 1; k >= i; k--) {
if(cartas[k].compareTo(cartas[k-1]) == 1){
barajaAuxiliar[k] = cartas[k];
cartas[k] = cartas[k-1];
cartas[k-1]= barajaAuxiliar[k-1];
}
}
}
}
//Metodo jugada mismo color(palo)
public boolean esColor(Carta palo){
int i = 0;
while(cartas[i].equals(palo)) if (i < 5){
i++;
return true;
}
return false ;
}
public boolean esPoker(Carta numeroCarta){
int i = 0;
while(cartas[i].equals(numeroCarta)) if (i < 5){
i++;
return true;
}
return false;
}
@Override
public String toString() {
return "Baraja [cartas=" + Arrays.toString(cartas) + ", nombre="
+ nombre + "]";
}
}
Y el test que le tengo que pasar:
package org.mp.bloque2.ejercicio01;
import junit.framework.TestCase;
public class BarajaTestA extends TestCase {
Carta carta;
Baraja baraja;
public BarajaTestA(String name) {
super(name);
}
protected void setUp() throws Exception {
// TODO Auto-generated method stub
super.setUp();
Carta[] cartas = new Carta[40];
String[] palos = { "B", "C", "E", "O" };
int j = 0;
for (int k = 0; k < palos.length; k++) {
for (int i = 1; i < 8; i++) {
carta = new Carta(i, palos[k]);
cartas[j] = carta;
j++;
}
for (int i = 10; i < 13; i++) {
carta = new Carta(i, palos[k]);
cartas[j] = carta;
j++;
}
}
baraja = new Baraja(cartas, "Española");
}
public void testEqualsCarta() {
Carta carta1 = new Carta(5, "O");
Carta carta2 = new Carta(2, "O");
Carta carta3 = new Carta(2, "E");
assertEquals(true, carta1.equals(carta1));
assertEquals(true, carta2.equals(carta2));
assertEquals(true, carta3.equals(carta3));
assertEquals(false, carta3.equals(carta1));
}
public void testCompareToCarta() {
Carta carta1 = new Carta(5, "O");
Carta carta2 = new Carta(2, "O");
Carta carta3 = new Carta(2, "E");
assertEquals(0, carta1.compareTo(carta1));
assertEquals(-1, carta1.compareTo(carta3));
assertEquals(1, carta1.compareTo(carta2));
}
public void testBuscarCarta() {
Carta carta1 = new Carta(5, "O");
assertTrue(carta1.equals(baraja.buscarCarta(carta1)));
Carta carta2 = new Carta(5, "W");
assertNull(baraja.buscarCarta(carta2));
}
public void testOrdenarBaraja() {
baraja.ordenarBaraja();
Carta[] cartas = baraja.getCartas();
for (int i = 0; i < cartas.length - 1; i++) {
assertEquals(-1, cartas[i].compareTo(cartas[i + 1]));
}
}
public void testJugada() {
Carta carta1 = new Carta(5, "E");
Carta carta2 = new Carta(2, "E");
Carta carta3 = new Carta(2, "E");
Carta carta4 = new Carta(2, "E");
Carta carta5 = new Carta(2, "E");
Carta carta6 = new Carta(11, "O");
Carta[] jugada1 = { carta1, carta2, carta3, carta4, carta5 };
assertTrue(baraja.esColor(jugada1));
Carta[] jugada2 = { carta1, carta2, carta3, carta4, carta6 };
assertFalse(baraja.esColor(jugada2));
assertTrue(baraja.esPoker(jugada1));
assertFalse(baraja.esPoker(jugada2));
}
public void testBarajar() {
Carta[] cartasOrdenadas = new Carta[baraja.getCartas().length];
for (int i = 0; i < cartasOrdenadas.length; i++) {
cartasOrdenadas[i] = baraja.getCartas()[i];
}
baraja.barajar();
Carta[] cartasBarajadas = baraja.getCartas();
int contador = 0;
for (int i = 0; i < cartasBarajadas.length; i++) {
if (cartasOrdenadas[i].equals(cartasBarajadas[i])) {
System.out.println(i + "---" + cartasOrdenadas[i] + "---"
+ cartasBarajadas[i]);
contador++;
}
}
assertTrue(contador < 4);
}
}