Faction (Português)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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