Faction (Polski)

From ArchWiki
Translation Status: This article is a localized version of Faction. Last translation date: 2024-05-01. You can help to synchronize the translation, if there were changes in the English version.

Faction to biblioteka C do tworzenia oprogramowania w oparciu o testy.

Instalacja

Zainstaluj pakiet libfactionAUR.

Użycie

Biblioteka udostępnia kilka makr C, aby przyspieszyć pisanie testów.

  • FI reprezentuje inicjalizację Faction (Faction Initialization)
  • FT oznacza test Faction (Faction Test)
  • FC oznacza zamknięcie Faction (Faction Close)

Przy użyciu makra FT wymagane są trzy pola.

  • AUTHORS() pobiera oddzieloną przecinkami listę nazwisk autorów otoczonych podwójnymi cudzysłowami.
  • SPEC() przyjmuje pojedynczy opis specyfikacji testu otoczony podwójnym cudzysłowem
  • Wyrażenie logiczne C (tak jak przy użyciu makr C assert)

Konwencja nakazuje, aby testy Faction były pisane na dole pliku źródłowego zawierającego kod, który będzie testowany. Testy powinny być otoczone osłoną makra FACTION (patrz poniższy przykład), aby można je było włączyć/wyłączyć w czasie kompilacji. Kompilatory języka C, takie jak GNU C Compiler (GCC), oferują możliwość włączenia makr w wierszu poleceń (np. flaga -D).

Przykład

/* To jest funkcja do przetestowania */
int
increment(int input)
{
   return (input + 1);
}

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

  FT(
    AUTHORS( "timetoplatypus" ),
    SPEC( "increment() zwraca 1 po podaniu 0" ),
    increment(0) == 1
  );

  FT(
    AUTHORS( "timetoplatypus" ),
    SPEC( "increment() zwraca 0 po podaniu największej wartości całkowitej" ),
    increment(INT_MAX) == 0
  );

FC
#endif

Można to skompilować za pomocą gcc nazwa_pliku.c -D FACTION.

Tryby

Istnieją dwa tryby, w których Faction może się kompilować: minimalnym i rozszerzonym.

Powyższy przykład kompiluje Faction w trybie minimalnym. Minimalna kompilacja ma dokładnie trzy zależności biblioteczne: stdlib, stdio i getopt. Rozszerzona kompilacja ma dodatkowe zależności, w tym niektóre funkcje, które są dostępne tylko poprzez makro GNU feature test.

Tak więc, aby skompilować w trybie rozszerzonym, wystarczy zdefiniować makro GNU feature test na początku pliku. Na przykład, poprzedni przykład zmodyfikowany do kompilacji w trybie rozszerzonym wyglądałby następująco:

#ifdef FACTION
#define _GNU_SOURCE
#endif
/* To jest funkcja do przetestowania */
increment(int input)
{
  return (input + 1);
}

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

  FT(
    AUTHORS( "timetoplatypus" ),
    SPEC( "increment() zwraca 1 po podaniu 0" ),
    increment(0) == 1
  );

  FT(
    AUTHORS( "timetoplatypus" ),
    SPEC( "increment() zwraca 0 po podaniu największej wartości całkowitej" ),
    increment(INT_MAX) == 0
  );

FC
#endif

Funkcje trybu rozszerzonego

W trybie rozszerzonym,

  • dane wyjściowe mogą być opcjonalnie kopiowane do pliku dziennika określonego przez użytkownika przy użyciu flagi -l w czasie wykonywania.
  • Tabela wyników będzie dynamicznie dostosowywana do szerokości używanego terminala. W przeciwnym razie domyślnie przyjmuje szerokość 78 znaków.

Zobacz także