{"_id":"@amatsukan/codingame-local-tester","_rev":"4-a2c2fd24aa115334ed5ce093e94bff3a","name":"@amatsukan/codingame-local-tester","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.0":{"name":"@amatsukan/codingame-local-tester","version":"1.0.0","keywords":["codingame","jest","testing","simulation"],"author":{"name":"Amatsukan"},"license":"ISC","_id":"@amatsukan/codingame-local-tester@1.0.0","maintainers":[{"name":"amatsukan","email":"luiz.cfj@apilab.ufsc.br"}],"homepage":"https://github.com/YOUR_USERNAME/codingame-local-tester#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/codingame-local-tester/issues"},"bin":{"codingame-local-tester":"bin/cli.js"},"dist":{"shasum":"955d1b11bc866504611c195619e57c0d72075f63","tarball":"https://registry.npmjs.org/@amatsukan/codingame-local-tester/-/codingame-local-tester-1.0.0.tgz","fileCount":14,"integrity":"sha512-vDLfpUQoS689clPkRze3zmtjNzGX8AFEa2cC5M44tZgt87IrwyIEPqEsRt7J0Fys7cFLHH8aMW4N22dWP04lsA==","signatures":[{"sig":"MEYCIQDBCpdBrhaRwTYxdXkx3hjgSkM7wZMr64e2LB01k/IyDQIhANsiDlxy7NNDe09mIt+SjnAMrSGuACiZyF0zUzq+n5yn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15661},"main":"src/index.js","gitHead":"cf85d37282eae11476106cf7cee64026550d8107","scripts":{"test":"jest","test:ci":"jest --coverage","publish:local":"dotenv npm publish --access public"},"_npmUser":{"name":"amatsukan","email":"luiz.cfj@apilab.ufsc.br"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/codingame-local-tester.git","type":"git"},"_npmVersion":"10.9.2","description":"A local testing framework for CodinGame JavaScript solutions.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"jest":"^29.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"dotenv-cli":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/codingame-local-tester_1.0.0_1755268305061_0.9586603541875784","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@amatsukan/codingame-local-tester","version":"1.2.0","keywords":["codingame","jest","testing","simulation"],"author":{"name":"Amatsukan"},"license":"ISC","_id":"@amatsukan/codingame-local-tester@1.2.0","maintainers":[{"name":"amatsukan","email":"luiz.cfj@apilab.ufsc.br"}],"homepage":"https://github.com/YOUR_USERNAME/codingame-local-tester#readme","bugs":{"url":"https://github.com/YOUR_USERNAME/codingame-local-tester/issues"},"bin":{"codingame-local-tester":"bin/cli.js"},"dist":{"shasum":"6f4f64ec0e5f44b74fb46dd1c22dbd3a9631bfa7","tarball":"https://registry.npmjs.org/@amatsukan/codingame-local-tester/-/codingame-local-tester-1.2.0.tgz","fileCount":14,"integrity":"sha512-NjGgO/Y+HwynwL0hY6yBRC3Yc0AaTHLESuqXEiFb9+zDwlBucCdwIE10/0ArLSSCqFejF02z79Mnl8FA68+UgQ==","signatures":[{"sig":"MEYCIQD1+XSKzz0g607YWOSyZMKNu9LXmxJmdj2PdAy/6fD5+gIhAJxVcxKmO1aDvuBXm8cTgefljsvlISXRb3rQeh7AQJhm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15454},"main":"src/index.js","gitHead":"8e0998f8ef82ec5c22526489dba2cd97daced4b6","scripts":{"test":"jest","test:ci":"jest --coverage","publish:local":"dotenv npm publish --access public"},"_npmUser":{"name":"amatsukan","email":"luiz.cfj@apilab.ufsc.br"},"repository":{"url":"git+https://github.com/YOUR_USERNAME/codingame-local-tester.git","type":"git"},"_npmVersion":"10.9.2","description":"A local testing framework for CodinGame JavaScript solutions.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"jest":"^29.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"dotenv-cli":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/codingame-local-tester_1.2.0_1755268491375_0.8458308677827437","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@amatsukan/codingame-local-tester","version":"1.2.1","keywords":["codingame","jest","testing","simulation"],"author":{"name":"Amatsukan"},"license":"ISC","_id":"@amatsukan/codingame-local-tester@1.2.1","maintainers":[{"name":"amatsukan","email":"luiz.cfj@apilab.ufsc.br"}],"homepage":"https://github.com/Amatsukan/codingame-local-tester#readme","bugs":{"url":"https://github.com/Amatsukan/codingame-local-tester/issues"},"bin":{"codingame-local-tester":"bin/cli.js"},"dist":{"shasum":"5329fd8600f1dbc70df26e829e0d5c332bc34e0c","tarball":"https://registry.npmjs.org/@amatsukan/codingame-local-tester/-/codingame-local-tester-1.2.1.tgz","fileCount":14,"integrity":"sha512-6661eGRVMOdhADp2mVGLFyeEz6Vn6MGUe3M+dDxYpXrp8HjV796VRpTeh+vwO3TWvRsYVhB3S00z7bsR6dLPVQ==","signatures":[{"sig":"MEQCIEylBYyQ0xNhfrwWBOjIpaApq9K/aXJiCcB0LG/DhVmbAiB2ple/DhN4E+DpdPp9kKZOjmehIGRgT69NNvjslKm6HQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15464},"main":"src/index.js","gitHead":"223bb5fdedf68064266d258f0772f4f1bcb1ca25","scripts":{"test":"jest","test:ci":"jest --coverage","publish:local":"dotenv npm publish --access public"},"_npmUser":{"name":"amatsukan","email":"luiz.cfj@apilab.ufsc.br"},"repository":{"url":"git+https://github.com/Amatsukan/codingame-local-tester.git","type":"git"},"_npmVersion":"10.9.2","description":"A local testing framework for CodinGame JavaScript solutions.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"jest":"^29.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"dotenv-cli":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/codingame-local-tester_1.2.1_1755268967340_0.5756660588201119","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@amatsukan/codingame-local-tester","version":"1.3.0","description":"A local testing framework for CodinGame JavaScript solutions.","main":"src/index.js","bin":{"codingame-local-tester":"bin/cli.js"},"repository":{"type":"git","url":"git+https://github.com/Amatsukan/codingame-local-tester.git"},"scripts":{"test":"jest","test:ci":"jest --coverage","publish:local":"dotenv npm publish --access public"},"keywords":["codingame","jest","testing","simulation"],"author":{"name":"Amatsukan"},"license":"ISC","bugs":{"url":"https://github.com/Amatsukan/codingame-local-tester/issues"},"homepage":"https://github.com/Amatsukan/codingame-local-tester#readme","dependencies":{"chalk":"^4.1.2"},"devDependencies":{"dotenv-cli":"^10.0.0","jest":"^29.7.0"},"publishConfig":{"access":"public"},"_id":"@amatsukan/codingame-local-tester@1.3.0","gitHead":"c421b85499d810ead7004c81afca6698c2d069b7","_nodeVersion":"22.13.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-CwIBRPBBZehb3902sXOZhUokeb/zqp/XXhEjdtTR/8lvqfvBSpVgB6ESpoLr18cXCYXwnWNEj1c2QsO/q56HxA==","shasum":"bb06d4705a4e8c56acfe2b2c032620cff39e3d06","tarball":"https://registry.npmjs.org/@amatsukan/codingame-local-tester/-/codingame-local-tester-1.3.0.tgz","fileCount":10,"unpackedSize":14144,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCh6/QbjYSqYgWLC7rzJRcBxaKPEEoRrOBntaHTN3SLRQIhAI6HY5iWJpmwNN7TcsJ1PW1126SCXLWkSUpS+bIvvtvu"}]},"_npmUser":{"name":"amatsukan","email":"luiz.cfj@apilab.ufsc.br"},"directories":{},"maintainers":[{"name":"amatsukan","email":"luiz.cfj@apilab.ufsc.br"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/codingame-local-tester_1.3.0_1755285117060_0.12301825500219676"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-15T14:31:44.930Z","modified":"2025-08-15T19:11:57.438Z","1.0.0":"2025-08-15T14:31:45.252Z","1.2.0":"2025-08-15T14:34:51.576Z","1.2.1":"2025-08-15T14:42:47.518Z","1.3.0":"2025-08-15T19:11:57.255Z"},"bugs":{"url":"https://github.com/Amatsukan/codingame-local-tester/issues"},"author":{"name":"Amatsukan"},"license":"ISC","homepage":"https://github.com/Amatsukan/codingame-local-tester#readme","keywords":["codingame","jest","testing","simulation"],"repository":{"type":"git","url":"git+https://github.com/Amatsukan/codingame-local-tester.git"},"description":"A local testing framework for CodinGame JavaScript solutions.","maintainers":[{"name":"amatsukan","email":"luiz.cfj@apilab.ufsc.br"}],"readme":"\nCodinGame Local Tester\n======================\n\n[![NPM Version](https://img.shields.io/npm/v/codingame-local-tester.svg)](https://www.npmjs.com/package/@amatsukan/codingame-local-tester)\n\nUma ferramenta de linha de comando para testar suas soluções de quebra-cabeças do CodinGame localmente. `codingame-local-tester` executa seu código JavaScript contra um conjunto de casos de teste, simulando o ambiente da plataforma e fornecendo feedback instantâneo.\n\nRecursos\n--------\n\n* **Teste Localmente**: Desenvolva e teste suas soluções sem precisar enviá-las para a plataforma CodinGame a cada alteração.\n* **Execução Isolada**: Cada caso de teste executa sua solução em um processo separado e isolado, evitando efeitos colaterais entre os testes.\n* **E/S Automatizada**: A ferramenta lida automaticamente com a injeção de `input` através de um `readline()` mockado e captura a saída do `console.log()` para verificação.\n* **Configuração Simples**: Um único arquivo de configuração para apontar para sua solução e seus testes.\n* **Feedback Rápido**: Obtenha resultados claros de aprovação/reprovação para cada caso de teste diretamente no seu terminal.\n\nInstalação\n----------\n\nVocê pode instalar o pacote de duas maneiras:\n\n### Globalmente (Recomendado)\n\nUma instalação global permite que você execute o comando `codingame-local-tester` em qualquer pasta.\n\n```\nnpm install -g @amatsukan/codingame-local-tester\n```\n\n### Localmente\n\nVocê também pode instalá-lo como uma dependência de desenvolvimento em seu projeto.\n\n```\nnpm install --save-dev @amatsukan/codingame-local-tester\n```\n\nNesse caso, você pode executar a ferramenta via `npx codingame-local-tester` ou adicionando um script ao seu `package.json`.\n\nComo Usar\n---------\n\nA ferramenta executa seu script de solução contra múltiplos arquivos de casos de teste. Para cada caso, ela fornecerá a entrada especificada via `readline()` e comparará a saída do seu script (via `console.log()`) com a `expectedOutput` correspondente.\n\n### 1. Estruture Seu Projeto\n\nCrie uma pasta para o seu quebra-cabeça com a seguinte estrutura:\n\n```\nmy-puzzle/\n├── solution.js\n├── test-cases/\n│   ├── 1.js\n│   └── 2.js\n└── codingame-workspace.config.js\n```\n\n### 2. Escreva Sua Solução (solution.js)\n\nEscreva seu código como faria na plataforma CodinGame, usando `readline()` para ler a entrada e `console.log()` para imprimir a saída.\n\n**Exemplo: `solution.js`**\n\n```\n// Este código lê duas linhas de entrada,\n// soma os números e imprime o resultado.\nconst n1 = parseInt(readline());\nconst n2 = parseInt(readline());\n\nconsole.log(n1 + n2);\n```\n\n### 3. Crie os Casos de Teste\n\nDentro da pasta de casos de teste, crie arquivos `.js`. Cada arquivo representa um caso de teste e **deve exportar um objeto** contendo as propriedades `input` e `expectedOutput`.\n\n**Exemplo: `test-cases/1.js`**\n\n```\nconst input = `10\\n5`;\nconst expectedOutput = `15`;\n\nmodule.exports = { input, expectedOutput };\n```\n\n> **Nota**: Tanto `input` quanto `expectedOutput` devem ser strings. Para múltiplas linhas, use o caractere de nova linha (`\\n`).\n\n### 4. Crie o Arquivo de Configuração\n\nNa raiz do seu projeto, crie o arquivo `codingame-workspace.config.js`. Este arquivo informa à ferramenta onde encontrar sua solução e os casos de teste.\n\n**Exemplo: `codingame-workspace.config.js`**\n\n```\nmodule.exports = {\n  // Caminho para o seu arquivo de solução principal\n  solution_main_file: 'solution.js',\n\n  // Caminho para a pasta contendo os arquivos de caso de teste\n  cases_folder: 'test-cases'\n};\n```\n\n### 5. Execute os Testes\n\nAbra o terminal na pasta raiz do seu projeto (`my-puzzle/`) e execute o comando:\n\nSe instalado globalmente:\n\n```\ncodingame-local-tester\n```\n\nSe instalado como dependência de desenvolvimento:\n\n```\nnpx codingame-local-tester\n```\n\nA ferramenta executará sua solução para cada caso de teste e exibirá os resultados diretamente no terminal.\n\nAPI Programática\n----------------\n\nAlém da CLI, você pode usar o `codingame-local-tester` programaticamente.\n\n```\nconst tester = require('codingame-local-tester');\n\n// A função 'run' encapsula a lógica principal da CLI.\n// Ela encontra e usa automaticamente o 'codingame-workspace.config.js'.\ntry {\n  await tester.run();\n} catch (error) {\n  console.error('Ocorreu um erro:', error.message);\n}\n```\n\nLicença\n-------\n\nEste projeto está licenciado sob a Licença ISC.","readmeFilename":"README.md"}