Faction (Português)

From ArchWiki
Status de tradução: Esse artigo é uma tradução de Faction. Data da última tradução: 2021-04-14. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Faction é uma biblioteca para desenvolvimento de software movido a testes.

Instalação

Instale o pacote libfactionAUR.

Uso

A biblioteca fornece várias macros C para acelerar os testes de gravação.

  • FI representa "Faction Initialization"
  • FT indica um "Faction Test"
  • FC representa "Faction Close"

Usando a macro FT, três campos são obrigatórios.

  • AUTHORS() pega uma lista separada por vírgula de nomes de autores entre aspas duplas
  • SPEC() recebe uma única descrição de especificação de teste entre aspas duplas
  • Uma expressão booleana C (como ao usar macros de declaração C)

A convenção determina que os testes de Faction devem ser escritos na parte inferior do arquivo fonte que contém o código que será testado. Os testes devem ser cercados por uma proteção macro FACTION (veja o exemplo abaixo) para que possam ser ativados/desativados no tempo de compilação. Compiladores C, como o GNU C Compiler (GCC), oferecem uma maneira de ativar macros na linha de comando (ou seja, o sinalizador -D)

Exemplo

/* Essa é a função a ser testada */
int
increment(int input)
{
   return (input + 1);
}

#ifdef FACTION
#include <faction.h>
#include <limits.h>
FI

  FT(
    AUTHORS( "timetoplatypus" ),
    SPEC( "increment() returns 1 when given 0" ),
    increment(0) == 1
  );

  FT(
    AUTHORS( "timetoplatypus" ),
    SPEC( "increment() returns 0 when given the largest integer value" ),
    increment(INT_MAX) == 0
  );

FC
#endif

Isso pode ser compilado usando gcc nome-de-arquivo.c -D FACTION

Modos

Existem dois modos nos quais o Faction pode compilar: o modo minimal e o modo extended.

O exemplo acima compila Faction no modo mínimo. Uma compilação mínima possui exatamente três dependências de biblioteca: stdlib, stdio e getopt. Uma compilação estendida possui dependências adicionais, incluindo algumas funções que estão disponíveis apenas através da macro de teste do recurso GNU.

Portanto, para compilar no modo estendido, basta definir a macro de teste do recurso GNU na parte superior do arquivo. Por exemplo, o exemplo anterior modificado para ser compilado no modo estendido ficaria assim:

#ifdef FACTION
#define _GNU_SOURCE
#endif
/* Essa é a saída a ser testada */
increment(int input)
{
  return (input + 1);
}

#ifdef FACTION
#include <faction.h>
#include <limits.h>
FI

  FT(
    AUTHORS( "timetoplatypus" ),
    SPEC( "increment() returns 1 when given 0" ),
    increment(0) == 1
  );

  FT(
    AUTHORS( "timetoplatypus" ),
    SPEC( "increment() returns 0 when given the largest integer value" ),
    increment(INT_MAX) == 0
  );

FC
#endif

Recursos de modo estendido

No modo estendido,

  • a saída pode ser opcionalmente espelhada para um arquivo de log especificado pelo usuário usando o sinalizador -l no tempo de execução.
  • a tabela de resultados será redimensionada dinamicamente para a largura do terminal que está sendo usado. Caso contrário, o padrão será uma largura de 78 caracteres.

Veja também