leticiasales / dev-rails-vortigo

Vortigo - Teste prático - Ruby on Rails

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Vortigo - Teste prático - Ruby on Rails

Overview

This application was developed as a test to show programming habilities.

The first screen is a drone selection, where you can create a new drone or select the existing one with the name you typed. Then, you can insert an action on the second screen and see, after you confirm, the result position, as long with the other actions added for that drone.

Running

Tests

docker-compose run --rm web rails test

Setup database

docker-compose run --rm web rails db:setup

Seeding (optional)

docker-compose run --rm web rails db:seed

Web

docker-compose up web

Access on http://localhost:3000

Instructions (In Portuguese)

Contexto:

Implementar uma página web para o controle de posição de um drone em um plano cartesiano (X, Y).

Essa página deve conter um campo de texto para receber a string de entrada, um botão de enviar coordenadas e, conforme achar melhor, deve responder o plano cartesiano calculado.

O ponto inicial do drone é (0, 0) para cada execução.

A string de entrada pode conter os seguintes caracteres N, S, L, e O representando Norte, Sul, Leste e Oeste respectivamente. Estes catacteres podem estar presentes aleatóriamente na string de entrada. Uma string de entrada NNNLLL irá resultar em uma posição final (3, 3), assim como uma string NLNLNL irá resultar em (3, 3).

Caso o caracter X esteja presente, o mesmo irá cancelar a operação anterior. Caso houver mais de um caracter X consecutivo, o mesmo cancelará mais de uma ação na quantidade em que o X estiver presente. Uma string de entrada NNNXLLLXX irá resultar em uma posição final (1, 2) pois a string poderia ser simplificada para NNL.

Além disso, um número pode estar presente após o caracter da operação, representando o "passo" que a operação deve acumular. Este número deve estar compreendido entre 1 e 2147483647. Deve-se observar que a operação X não suporta opção de passo e deve ser considerado inválido. Uma string de entrada NNX2 deve ser considerada inválida. Uma string de entrada N123LSX irá resultar em uma posição final (1, 123) pois a string pode ser simplificada para N123L Uma string de entrada NLS3X irá resultar em uma posição final (1, 1) pois a string pode ser siplificada para NL.

Caso a string de entrada seja inválida ou tenha algum outro problema, o resultado deve ser (999, 999).

Dica:

Os teste unitários esperados são:

Quando a string de entrada for: NNNNNLLLLL
O retorno esperado é: (5, 5)

Quando a string de entrada for: NLNLNLNLNL
O retorno esperado é: (5, 5)

Quando a string de entrada for: NNNNNXLLLLLX
O retorno esperado é: (4, 4)

Quando a string de entrada for: SSSSSOOOOO
O retorno esperado é: (-5, -5)

Quando a string de entrada for: S5O5
O retorno esperado é: (-5, -5)

Quando a string de entrada for: NNX2
O retorno esperado é: (999, 999)

Quando a string de entrada for: N123LSX
O retorno esperado é: (1, 123)

Quando a string de entrada for: NLS3X
O retorno esperado é: (1, 1)

Quando a string de entrada for: NNNXLLLXX
O retorno esperado é: (1, 2)

Quando a string de entrada for: N40L30S20O10NLSOXX
O retorno esperado é: (21, 21)

Quando a string de entrada for: NLSOXXN40L30S20O10
O retorno esperado é: (21, 21)

Quando a string de entrada for: nula
O retorno esperado é: (999, 999)

Quando a string de entrada for: vazia
O retorno esperado é: (999, 999)

Quando a string de entrada for: espaços em branco
O retorno esperado é: (999, 999)

Quando a string de entrada for: 123N
O retorno esperado é: (999, 999)

Quando a string de entrada for: N2147483647N (*This test was modified)
O retorno esperado é: (999, 999)

Quando a string de entrada for: NNI
O retorno esperado é: (999, 999)

Quando a string de entrada for: N2147483647XN
O retorno esperado é: (0, 1)

About

Vortigo - Teste prático - Ruby on Rails


Languages

Language:Ruby 73.1%Language:HTML 17.5%Language:JavaScript 6.1%Language:SCSS 2.0%Language:Dockerfile 1.0%Language:Shell 0.3%