Projetar testes uniários para uma terceira equipe implementar
Receber uma string contendo uma expressão matemática em notação polonesa e retornar o valor de resultado da expressão.
Exemplos
"3 2 5 + *" => 21
Este projeto foi desenvolvido por Albert Morato e Guilherme Portela.
O projeto será desenvolvido em Python.
Entrada | Condição | Classes válidas | Classes inválidas |
---|---|---|---|
expressao | É uma string | (1) type(expressao) is str |
(6) type(expressao) is not str |
É separada por espaços | (2) len(expressao.split(' ')) > 1 |
(7) len(expressao.split(' ') <= 1 |
|
Começa com dois números | (3) bool(re.match('^\d+(.\d+)? \d+(.\d+)?')')) is True |
(8) bool(re.match('^\d+(.\d+)? \d+(.\d+)?')')) is False |
|
Só possui números, espaços, e os operadores aritméticos básicos ('+', '-', '/', '*') | (4) bool(re.match('^\d+(.\d+)?( (\d+(\.\d+)?|\+|\-|\/|\*))*$', expressao)) is True |
(9) bool(re.match('^\d+(.\d+)?( (\d+(\.\d+)?|\+|\-|\/|\*))*$', expressao)) is False |
|
A quantidade de operadores aritméticos é igual à quantidade de números menos um | (5) sum(map(expressao.count, ['+', '-', '*', '/'])) == len(re.findall('(\d+(\.\d+)?)', expressao)) - 1 |
(10) sum(map(expressao.count, ['+', '-', '*', '/'])) != len(re.findall('(\d+(\.\d+)?)', expressao)) - 1 |
# | Método | Classes | Chamada | Resultado esperado |
---|---|---|---|---|
1 | Analisador#eh_valida(expressao) |
6 | Analisador.eh_valida(2) |
Lança exceção (TypeError ) |
2 | 7 | Analisador.eh_valida('23*') |
False |
|
3 | 8 | Analisador.eh_valida('2 + 3') |
False |
|
4 | 9 | Analisador.eh_valida('2 3 x') |
False |
|
5 | 10 | Analisador.eh_valida('2 3 4 +') |
False |
|
6 | 1, 2, 3, 4, 5 | Analisador.eh_valida('2 3 +') |
True |
|
7 | 1, 2, 3, 4, 5 | Analisador.eh_valida('3 2 5 + *') |
True |
|
8 | 1, 2, 3, 4, 5 | Analisador.eh_valida('3.1 1.1 +') |
True |
|
9 | Analisador#tokenizar(expressao) |
6 | Analisador.tokenizar(2) |
Lança exceção (TypeError ) |
10 | 7 | Analisador.tokenizar('23*') |
Lança exceção (ValueError ) |
|
11 | 8 | Analisador.tokenizar('2 + 3') |
Lança exceção (ValueError ) |
|
12 | 9 | Analisador.tokenizar('2 3 x') |
Lança exceção (ValueError ) |
|
13 | 10 | Analisador.tokenizar('2 3 4 +') |
Lança exceção (ValueError ) |
|
14 | 1, 2, 3, 4, 5 | Analisador.tokenizar('2 3 +') |
['2', '3', '+'] |
|
15 | 1, 2, 3, 4, 5 | Analisador.tokenizar('3 2 5 + *') |
['3', '2', '5', '+', '*'] |
|
16 | 1, 2, 3, 4, 5 | Analisador.tokenizar('3.1 1.1 +') |
['3.1', '1.1', '+'] |
|
17 | Avaliador#avaliar(expressao) |
6 | Avaliador.avaliar(2) |
Lança exceção (TypeError ) |
18 | 7 | Avaliador.avaliar('23*') |
Lança exceção (ValueError ) |
|
19 | 8 | Avaliador.avaliar('2 + 3') |
Lança exceção (ValueError ) |
|
20 | 9 | Avaliador.avaliar('2 3 x') |
Lança exceção (ValueError ) |
|
21 | 10 | Avaliador.avaliar('2 3 4 +') |
Lança exceção (ValueError ) |
|
22 | 1, 2, 3, 4, 5 | Avaliador.avaliar('2 3 +') |
5 |
|
23 | 1, 2, 3, 4, 5 | Avaliador.avaliar('3 2 5 + *') |
21 |
|
24 | 1, 2, 3, 4, 5 | Avaliador.avaliar('3.1 1.1 +') |
4.2 |
Com o Python 3.5+ instalado, rode:
python3 -m unittest discover tests "*_test.py"
- segunda-feira 25-09
- forkar este repositório
- atualizar README.md com
- equipe (lembrar de colocar link para o github dos membros)
- tecnologia usada
- plano de teste (definir se vai usar top-down ou bottom-up)
- implementar os testes unitários
- como executar teste
- apresentar em sala o plano de teste
- quinta-feira 28-09
- sortear repositório e equipe
- forkar repositório
- desenvolver solução para os testes
- apresentar plano de teste e solução