Dependencies:
Python3.4+ - sudo apt-get install python3
Introdução:
O sorter é completamente implementado com bibliotecas nativas do python3.
A configuração é totalmente feita por arquivos.
A execução é feita via linha de comando.
O resultado é retornado via arquivo.
Os testes unitários do Sorter e do carregamento de configurações estão inclusos na entrega.
Para este projeto ainda, foi cogitada a ideia de implementar client/server separados:
O serviço rodaria via TCP, comunicando via protocolo jsonRPC.
Mas dados os requisitos solicitados e meu tempo dinsponível, essas ideias foram descartadas.
Ainda assim, creio estar entregando um trabalho satisfatório.
Considerações:
Sobre os testes unitários:
Nunca havia trabalhado com isso, inclusive é a primeira vez que uso a biblioteca de testes do python.
Não tenho certeza se foram implementados da melhor forma possível.
Os testes foram feitos para apenas acusar o primeiro erro de cada TestCase, os demais são ignorados constando como se apresentassem sucesso.
No entanto, corrigindo o erro apresentado e havendo erros posteriores na linha de execução do código, será acusado na próxima execução dos testes.
Arquivos de configuração:
São necessários dois arquivos de configuração para o serviço rodar, ambos em formato INI. Seus nomes e diretórios podem ser configurados.
O primeiro arquivo tem por default o nome config.ini. Opcionalmente um outro nome/path pode ser passado via argumento na execução do serviço.
Seguindo o formato INI, este arquivo possui duas seções obrigatórias:
SorterConfig e Rules (case sensitive)
-
Na seção SorterConfig, duas chaves são obrigatórias:
BooksINI e SaveINI (case sensitive)
BooksINI -> o valor deve ser o nome/path do arquivo INI contendo os livros a serem ordenados pelo serviço.
SaveINI -> o valor deve ser o nome/path do arquivo INI a ser salvo com os livros ordenados.
-
Na seção Rules, as chaves são opcionais:
Podem ser três:
title, author, edition_year (case sensitive)
Seus valores podem ser 2:
ascending ou descending (case sensitive)
A ordem de prioridade no ordenamento é: A chave acima no arquivo terá maior prioridade que a chave abaixo.
-
Exemplo de config.ini:
[SorterConfig]
BooksINI = meuslivros
SaveINI = meuslivrosordenados
[Rules]
edition_year = ascending
title = descending
O arquivo de livros a serem ordenados possuem o seguinte formato:
[um titulo qualquer]
author = meu autor predileto
edition_year = 1800
-
Neste caso podem existir N livros cadastrados, ou nenhum. Mas para cada seção existente (livro cadastrado), as duas chaves são obrigatórias, embora sua ordem seja irrelevante.
O arquivo gerado pelo serviço tem o mesmo formato descrito acima.
Observação: Todos os valores de chaves devem ser não nulos.
Execução:
Todos os paths configurados devem apontar para diretórios válidos com permissão de leitura. O path do arquivo gerado deve ter permissão de escrita.
python3 -B sort_app.py (Usando por default o arquivo padrão config.ini)
python3 -B sort_app.py minha_configuracao.ini
Dúvidas e sugestões:
[email protected]
-
Notifications
You must be signed in to change notification settings - Fork 0
daviaws/book_sorter_with_unittest
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published