Para o desenvolvimento do projeto optei por utilizar a linguagem que tenho mais experiência que no caso é a linguagem PHP.
Para a execução localmente na máquina é necessário ter instalado o:
PHP 8.0
Composer 2.6.2
Para execução do projeto baixe o projeto acesse o diretório do projeto e execute o comando
composer install
start o php se por acaso não estiver startado, se desloque até o diretório cli/
e execute o comando
php index.php < input.txt
e depois pressione o enter, se deseja que sua entrada de dado não seja um arquivo, e sim gostaria de inserir manualmente
php index.php
Dados respeitando o modelo
e depois pressione o enter
[{"operation":"buy", "unit-cost":10.00, "quantity": 10000},{"operation":"sell", "unit-cost":20.00, "quantity": 5000}]
-
[{"operation":"buy", "unit-cost":10.00, "quantity": 10000},{"operation":"sell", "unit-cost":20.00, "quantity": 5000}]
-
[{"operation":"buy", "unit-cost":20.00, "quantity": 10000},{"operation":"sell", "unit-cost":10.00, "quantity": 5000}]
[{"tax":0},{"tax":10000}][{"tax":0},{"tax":0}],
para execução do teste que foram desenvolvido a principal biblioteca de teses do php que o PHPUnit execute o comando a seguir pelo terminal na raiz do projeto
vendor/phpunit/phpunit/phpunit -c tests/phpunit.unit.xml --no-coverage"
Para o desenvolvimento do projeto pensei inicialmente em fazer utilizando Domain Driven Design com a camada cálculos na camada de Application, porém entender que poderia está fazendo over engineering, então optei utiliza uma versão mais enxuta do MVC , garantido a "simplicidade" e "elegância" exigida no teste.