Giter Club home page Giter Club logo

monkeyrockettdd's Introduction

Scala Kata

Level: Easy

Author: Alvaro Del Pozo

Space Monkey Rocket

alt text

Requisitos

La ESA nos está pidiendo un programa que lance un cohete espacial para comprobar que efectivamente hay vida inteligente fuera de la Tierra. Para ello nos establece estos requisitos en base a la primera tanda de ideas "y si"

  • En el cohete irán 2 monos. Los ingenieros no se fían de los humanos.
  • El cohete será lanzado con una configuración, da igual que tipo de Setup, excepto que no tenga Setup (NoSetup). De ser así el cohete no seŕa lanzado devolviendo false.
  • Antes de lanzar, lógicamente viene la famosa cuenta atrás, con lo que el método de lanzamiento realizará una cuenta atrás a partir de 10.
  • Teniendo en cuenta que los monos el día antes se han puesto de M en otro experimento, es posible que hayan desconfigurado la configuración inicial del cohete. Y en la cuenta atrás se desconfigure (llamada obligatoria al método monkeyTouching de la clase MonkeyTouchingLikeCrazy) teniendo que volver a realizar los ajustes para su correcto funcionamiento.
  • El lanzamiento devolverá un booleano si fue bién true y si fue mal false.

Siguiente tanda de requisitos por parte de la ESA:

  • Ahora se han puesto finos, y no se quiere un boolean como resultado, si no que se devuelva un objecto String con el mensaje "COHETE LANZADO" y en caso de error una excepción de tipo MonkeyTouchingException.
  • Si no se pasa nada de configuración en el lanzamiento se entiende que es la configuración por defecto. Y ahora se controla que la configuración por defecto no sea NoSetup. Si fuera así, se devolvería un error en la construcción IllegalArgumentException
  • La cuenta atrás podrá ser de un número que se quiera, no necesariamente de 10.
  • Se han dado cuenta que quizás los monos no sean tampoco adecuados, por eso, se ha creado una normativa en la cual se añade la regla de que al método launcherRocket se pasa como argumento la función de monkeyTouching y se tendrá en cuenta que si por algún motivo los monos tocan el panel de control y tenemos un panel loco (CrazySetup) se abortará dicha cuenta atrás devolviendo una excepción MonkeyTouchingException.

Como empezar

Para empezar, haz fork del repo, realiza el ejercicio y pasa los test "sbt test".

Cuando acabes el ejercicio, comitea los cambios y sientete libre de hacer una pull request.

En el test SpaceMonkeyRocketSpec, tenemos una aproximación que nos valdrá para empezar a codificar. El nombre del servicio ya te lo da el propio test SpaceMonkeyRocket. Será una clase. De cara a codificar en un mismo camino todos, el nombre del método, vamos a denominarlo launcherRocket. A partir de aquí, libertad absoluta. Y sentir libertar de crear nuevos tests si lo necesitáis.

Pasando los tests

sbt test

monkeyrockettdd's People

Contributors

5u5iu5 avatar adelpozo-stratio avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.