Examen Backend C#

Descripción

Desarrollar una solución(C#) para lanzar una serie de drones para sobrevolar el territorio y detectar fuentes de calor.

Herramientas utilizadas

  • Visual Studio 2019 (Community)
  • .Net Core 3.1
  • Lenguaje C#
  • Swashbuckle.AspNetCore 6.1.4
  • MSTest

Estructura prototipo inicial

image

Estructura Prototipo y consideraciones finales

  • Definir formula de avance del dron al volar, este puede moverse hacia el norte, sur, este y oeste segun el grafico: image

  • Definir dirección al girar hacia la izquierda "L" o hacia la derecha "R" image Ejemplo: Si la direccion inicial está en "este" eso equivale a 0° al girar hacia la izquierda se le aumentan 90°, el resultado de la suma es 90° eso indica que la nueva direccion es "norte". Si la dirección inicial es "oeste" eso equivale a 180° o -180°(segun la grafica), al girar hacia la derecha se le disminuye -90°, el resultado de la operación seria 90° y -270° respectivamente, eso indica que la nueva direccion seria "norte".

Uso instrucciones

1 Ejecutar la aplicacion con el programa visual studio 2019(Community), donde previamente se le haya instalado .net Core 3.1. 2 La aplicacion tipo Api, levantará con el puerto 44392 y a traves del endpoint /api/ControlForestal (POST) se enviará las instrucciones por el body de la peticcion http, de las siguientes 2 formas: - Con postman: - Copiar y pegar la url "https://localhost:44392/api/ControlForestal" del Api. image - Pegar la siguiente estructura en el body:

      {
          "PerimetroRectanguloBase": 5,
          "PerimetroRectanguloAltura": 5,
          "InstruccionesDto": [
              {
                  "CoordenadaVuelo": {
                      "PuntoX": 3,
                      "PuntoY": 3,
                      "Direccion" :"E"
                  },
                  "Acciones": ["L"]
              },
              {
                  "CoordenadaVuelo": {
                      "PuntoX": 3,
                      "PuntoY": 3,
                      "Direccion" :"E"
                  },
                  "Acciones": ["M","M","R","M","M","R","M","R","R","M"]
              },
              {
                  "CoordenadaVuelo": {
                      "PuntoX": 1,
                      "PuntoY": 2,
                      "Direccion" :"N"
                  },
                  "Acciones": ["L","M","L","M","L","M","L","M","M","L","M","L","M","L","M","L","M","M"]
              }
          ] 
      } 
  • Enviar la petición con el boton "Send", el resultado respondera un code status 200 y la respuesta final con las coordenadas del recorrido del dron.

    [
        {
            "puntoX": 3,
            "puntoY": 3,
            "direccion": "N"
        },
        {
            "puntoX": 5,
            "puntoY": 1,
            "direccion": "E"
        },
        {
            "puntoX": 1,
            "puntoY": 4,
            "direccion": "N"
        }
    ]
    

    image image - Con swagger:

    • Ir la url https://localhost:44392/swagger/index.html y click en el endpoint POST "/api/ControlForestal" image

    • Click en Try it out image

    • Pegar la siguiente estructura en el body:

      {
          "PerimetroRectanguloBase": 5,
          "PerimetroRectanguloAltura": 5,
          "InstruccionesDto": [
              {
                  "CoordenadaVuelo": {
                      "PuntoX": 3,
                      "PuntoY": 3,
                      "Direccion" :"E"
                  },
                  "Acciones": ["L"]
              },
              {
                  "CoordenadaVuelo": {
                      "PuntoX": 3,
                      "PuntoY": 3,
                      "Direccion" :"E"
                  },
                  "Acciones": ["M","M","R","M","M","R","M","R","R","M"]
              },
              {
                  "CoordenadaVuelo": {
                      "PuntoX": 1,
                      "PuntoY": 2,
                      "Direccion" :"N"
                  },
                  "Acciones": ["L","M","L","M","L","M","L","M","M","L","M","L","M","L","M","L","M","M"]
              }
          ] 
      }
      

      image

    • Enviar la petición con el boton "Execute", el resultado respondera un code status 200 y la respuesta final con las coordenadas del recorrido del dron. image

Test Unitarios

Se han creado 5 test unitarios para validar 5 escenarios del correcto vuelo de la aplicacion.

  • Post_SiLaDireccionInicialNoEsValida_SeNosRetornaUn400 Las direccion inicial, solo puede aceptar valores como "N":Norte,"S":Sur,"E":Este,"O":Oeste
  • Post_SiLasAccionesNoSonValidas_SeNosRetornaUn400 Las acciones ingresadas solo pueden ser los valores como "L": Izquierda, "R": Derecha, "M": Avanzar
  • Post_SiElAreaDeVueloDelDronPorSusAccionesNoEsValida_SeNosRetornaUn400 Valida el area de vuelo del dron, si las instrucciones indican que el dron debe salir del area, este retornará un 400(BadResquest).
  • Post_SiLosValoresDeVueloIngresadoSonValidos_Caso01_SeNosRetornaUn200 Se prueba que el api, retorne 200 con las coordenadas finales, para un primer escenario sencillo, con los valores correctamente ingresados.
  • Post_SiLosValoresDeVueloIngresadoSonValidos_Caso02_SeNosRetornaUn200 Se prueba que el api, retorne 200 con las coordenadas finales, para un segundo escenario más complejo, con los valores correctamente ingresados.