Luke, I'm your father

Zaczynając pisać T-Rexa, jak i w każdym innym moim projekcie, zależało mi żeby wszystko grało jak bozia nakazała. W tym standardzie zawarte jest pisanie testów- część developmentu którą wprost uwielbiam (serio). Jakie było moje zdziwienie gdy przeglądając githuba odkryłem że.. większość gier nie jest w ogóle otestowana*.

Nieświadom zagrożenia zacząłem wybierać framework do testów. Tych jest multum i jak to bywa z kodem pisanym w vimscripcie spora część z nich już dawno nie jest rozwijana. Odkryłem nawet całkiem przyjemne narzędzie dzięki któremu mógłbym sobie spokojnie testować w rspecu, jednak postanowiłem nie iść na łatwiznę, mimo że czuł bym się jak w domu. Postanowiłem przejść na ciemną stronę mocy.

Vader to dość przyjazne narzędzie. Na pierwszy rzut oka składnia przypomina Cucumbera. Test podzielony jest na sekcje składające się z nagłówków (Given, Do, Execute, Then, Expect, Before, After) i ich opisów, oraz kodu. Wszystko ładnie rozpisane jest w readme na githubie, ja chciałbym pokazać wam jakiś ogólny zarys tego jak wygląda pojedynczy test:

Given (Darth Vader's lines):
  I've been waiting for you, Obi-wan. We meet again at last. shhhh-hoh The circle is now complete. shhhh-hoh When I left you I was but the learner. Now I am the master. shhhh-hoh
  ~ Darth Vader

Execute (Filter Vader breathing):
  %s/\v shhhh-hoh//g

Expect (Darth Vader quote):
  I've been waiting for you, Obi-wan. We meet again at last. The circle is now complete. When I left you I was but the learner. Now I am the master.
  ~ Darth Vader

Proste? Niewątpliwe. Co więcej, zmieniając nagłówek Execute na Do równie fajnie możemy symulować polecenia z normal mode:

Given (Chewbacca quote lowercase):
  rwgwgwarahhhhwwrggwrwrw
  ~ Chewbacca

Do (Make quote uppercase):
  gUiw

Expect (Chewbacca quote):
  RWGWGWARAHHHHWWRGGWRWRW
  ~ Chewbacca

Jak już napisałem wyżej testowanie gier nie jest czymś częstym* - przyczyn mogę się tylko domyślać. Już same początki sprawiły że musiałem złamać ze 2 paradygmaty żeby przetestować cokolwiek. Mam nadzieję że się na mnie to nie zemści. W najgorszym wypadku wam o tym tutaj napiszę i przyjmę tę naukę z pokorą, jednak miejmy nadzieję że tak się jednak nie stanie. Jako że jest niedziela wieczór nie pozostaje mi nic innego jak życzyć wam udanego poniedziałku. Do zobaczenia przy okazji następnego postu.

* Sprawdzone przez niezależny instytut badawczy