ddouggs/test_command

Comandos para testes shell

Maintainers

Package info

github.com/DDouGGS/test_command

pkg:composer/ddouggs/test_command

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.1.22 2026-04-06 12:57 UTC

README

Aqui está um exemplo de README.md bem estruturado para a sua classe TC:

📦 TestCommand (TC)

A classe TC é um utilitário abstrato para gerenciamento de testes, breakpoints e manipulação de arquivos dentro de um fluxo de execução. Ela atua como uma fachada (facade), centralizando chamadas para diferentes responsabilidades:

  • 🧪 Testes (Tests)
  • 📁 Arquivos (Archives)
  • 🛑 Breakpoints (Breakpoints)

🚀 Objetivo

Facilitar a execução de testes e depuração durante o desenvolvimento, fornecendo métodos estáticos simples e diretos para validações e controle de fluxo.

📂 Namespace

namespace test_command;

🧱 Estrutura

A classe depende das seguintes implementações:

  • Tests / TestsInterface
  • Archives / ArchivesInterface
  • Breakpoints / BreakpointsInterface

Essas classes são instanciadas automaticamente quando necessário (lazy loading).

⚙️ Inicialização

Ao instanciar a classe, o componente de arquivos é automaticamente carregado:

public function __construct()
{
    $this->setArchives(new Archives());
}

🛑 Breakpoints

Permite controlar a execução do código em pontos específicos:

Métodos disponíveis:

TC::halt($output = [], $condition = true);
TC::begin($output = [], $condition = true);
TC::rollback($output = [], $condition = true);

Descrição:

  • halt → Interrompe a execução
  • begin → Marca o início de um bloco monitorado
  • rollback → Reverte ou desfaz execução

🧪 Testes

Execução de testes

TC::testing($configs = null, $test = null);

✅ Asserções disponíveis

A classe fornece diversas asserções para validação de dados:

Tipos primitivos

TC::assertBool(fn() => true);
TC::assertString(fn() => "texto");
TC::assertInt(fn() => 10);
TC::assertFloat(fn() => 10.5);
TC::assertArray(fn() => []);
TC::assertObject(fn() => new stdClass());
TC::assertResource(fn() => fopen(...));

Comparações e validações

TC::assertTrue(fn() => true);
TC::assertFalse(fn() => false);
TC::assertNull(fn() => null);
TC::assertEmpty(fn() => []);
TC::assertEquals($expected, fn() => $value);
TC::assertDiff($unexpected, fn() => $value);

Expressões e arquivos

TC::assertRegExp('/regex/', fn() => "valor");
TC::assertFileExists(fn() => "/caminho/arquivo");

Comparações numéricas

TC::assertGreaterThan(10, fn() => 20);
TC::assertGreaterThanOrEqual(10, fn() => 10);
TC::assertLessThan(10, fn() => 5);
TC::assertLessThanOrEqual(10, fn() => 10);

Tipagem e instância

TC::assertInstanceOf(MinhaClasse::class, fn() => new MinhaClasse());

🧠 Funcionamento interno

A classe utiliza:

  • Lazy initialization: Instancia objetos apenas quando necessário
  • Singleton-like static storage: Mantém instâncias em propriedades estáticas
  • Encapsulamento: Métodos get* e set* controlam acesso interno

🔒 Métodos internos importantes

  • getTests() / setTests()
  • getArchives() / setArchives()
  • getBreakpoints() / setBreakpoints()

Esses métodos garantem que apenas uma instância de cada componente seja utilizada.

📌 Observações

  • Todos os métodos são estáticos, facilitando o uso global
  • Ideal para ambientes de desenvolvimento e debugging
  • Depende da correta implementação das classes auxiliares (Tests, Archives, Breakpoints)

💡 Exemplo de uso

use test_command\TC;

// Teste simples
TC::assertTrue(fn() => 1 === 1, 'Teste básico');

// Comparação
TC::assertEquals(10, fn() => 5 + 5);

// Breakpoint
TC::halt(['Erro encontrado'], true);

📄 Licença

Defina aqui a licença do seu projeto.

Se quiser, posso melhorar esse README para:

  • padrão de pacote Composer
  • adicionar badges (build, cobertura, etc.)
  • ou transformar isso em documentação estilo Laravel/PHPUnit 👌