lihuencarranza / algo3-TP

1 stars 0 forks source link

Etapa 2 #3

Closed lihuencarranza closed 1 year ago

lihuencarranza commented 1 year ago

Hice los casilleros y pruebas de los mismos y el tablero. No se si puedo agregar mas pruebas porque los tableros son aleatorios entonces no puedo controlar el comportamiento de por ejemplo cuando hago click en una casilla si no tienen nada se clickeen als de alrededor con nada pero imprimí la matriz por consola y parece funcionar. Se puede correr BoxTest.java, BoardTest.java, BoxFactory.java y Main.java (este último para un intento de partida)

smaraggi commented 1 year ago

Hola Liz, genial. A partir de mañana empezamos a corregirlos. No te preocupes si no podés probar lo random, está bien porque el espíritu de las pruebas es leer el resultado esperado. En el caso de un random se podría esperar que el resultado esté dentro de los parámetros posibles y no afuera, pero si probaste todo lo demás o la mayor parte seguramente va a estar muy bien.

dessaya commented 1 year ago

La entrega de la etapa 2 está bastante bien pero pedimos que hagas una reentrega corrigiendo lo siguiente:

La clase Game tiene todos sus atributos estáticos, convirtiéndolos prácticamente en variables globales. Eso entre otras cosas hace que sea difícil escribir pruebas unitarias para la clase Game. También hay una dependencia implícita entre BombBox y Game.

Requerimiento: Por favor cambiá todos esos atributos para que no sean static. La relación entre BombBox y Game debería ser explícita, o bien esa llamada a gameOver debería estar resuelta de alguna otra manera. (Sugerencia: patrón Observer)

Deseable: si podés escribí uno o dos tests creando una instancia de Game y simulando que el juego avanza.

lihuencarranza commented 1 year ago

Perfecto. Recibido. Cuando lo termino mando otro comentario. Gracias.

lihuencarranza commented 1 year ago

Buenas, ahi creo que modifiqué lo solicitado. Agregué unas pruebas de Game también.

dessaya commented 1 year ago

Bien, la etapa 2 está aprobada. Podés continuar con la etapa 3. Podés cerrar este issue,

Ojo que la prueba que escribiste elige un casillero al azar, que puede o no ser una bomba.

        public void clickearBombEsGameOver() {
                Game game = new Game();
                Box box = game.usingBotModeBoxClicked();
                assertSame(box.bomb == true, game.gameOver == true);
        }

El nombre de la prueba hace pensar que testea que al clickear una bomba el juego termina. Pero al ser un casillero random, la prueba a veces testea una cosa y a veces otra.

En general es deseable que no haya nada de aleatoriedad en los tests. La prueba del ejemplo debería ser, por ejemplo:

test "si clickeo vacío no es game over":
  - Construyo un tablero de 2x2:
      0 1
    0 . B
    1 B .
  - Clickeo (0, 0) -> verifico que no es game over

test "si clickeo en bomba es game over":
  - Construyo un tablero de 2x2:
      0 1
    0 . B
    1 B .
  - Clickeo (0, 1) -> verifico que es game over