Testowanie reguł dopasowania

Zasady testowanie reguł dopasowania

Jako, że chcemy mieć możliwość testowania nie tylko dopasowań, ale też podjętych akcji, testy polegają na podaniu pliku z regułami dopasowania oraz pliku wejściowego (format XCES lub CCL) oraz oczekiwanego wyjścia (format CCL — interesują nas anotacje). Środowisko testów dostępne zawarte jest na repozytorium w katalogu tests/rules-data/, znajduje się tam również plik README oraz kilka dotychczas napisanych testów. Dotychczasowe (29.04.2011) testy używają niepełnej składni, tj. bez opakowania reguł w match_rules(APPLY1; APPLY2), zostanie to wkrótce zmienione, gdy implementacja przetwarzania całych plików WCCL będzie gotowa.

Stare zasady testowania operatora

Operator match będzie testowany poprzez porównanie wynikowej tablicy referencyjnej ze wzorem. Tablice referencyjne będą porównywane w postaci tekstowej przez co konieczne jest zdefiniowanie zasad zapisu tablicy referencyjnej w postaci tekstu. Proponuję następujące zasady zapisu tablicy:

  1. Tablica reprezentowana jest przez nawiasy okrągłe: ().
  2. Kolejne elementy tablicy oddzielone są przecinkiem i spacją.
  3. Dopuszczalne są 3 wartości w tablicy:
    • referencja na token, zapisana w postaci [n]="tekst",
    • referencja na anotację, zapisana w postaci [n,m:typ]="tekst", dla anotacji tekst jest sklejany z uwzględnieniem znaczników <ns/>
    • tablica.

Na przykład, dla zdania:

<IMIE>[Ala]</IMIE> [ma] [kota] [.]

Dla poniższego operatora (zapis skrótowy, z pominięciem 'otoczki' reguły):

$n = 0;
match($n, $m,
  is("IMIE"),
  inter(orth, {"ma"}),
  inter(orth, {"kota"})
)

otrzymamy:

dump($m) = ([0,0:IMIE]="Ala", [1]="ma", [2]="kota")

Przykład z tablicą zagnieżdżoną:

$n = 0;
match($n, $m,
  is("IMIE"),
  text({"ma kota"})
)

otrzymamy:

dump($m) = ([0,0:IMIE]="Ala", ([1]="ma", [2]="kota"))