\chapter{Sprawdzenie poprawności programu}

Całość powyższych rozważań teoretycznych byłaby zupełnie niepotrzebna, jeżeli nie byłaby zgodna z ogólnie przyjętymi normami.  Aby upewnić się, że nie popełniłem błędów w rozumieniu oraz we wdrażaniu (w postaci programu komputerowego) badanych metod oceny jakości oddawania barw, przeprowadziłem obszerną

\section{Testy jednostkowe}

Najprostsze opierają się na śledzeniu tak zwanych \textit{inwariantów}, czyli wielkości, które nie zależą od sposobu ich opisu. Najlepszym i najbardziej intuicyjnym przykładem jest barwa. Nieważne, w jakiej postaci przedstawione jest to wrażenie -- czy jako słowny opis, bądź zestaw współrzędnych w wybranej matematycznej przestrzeni -- doznanie jest dokładnie takie same. Czerwony jest czerwony niezależnie od tego, z jakiej abstrakcji skorzystamy do jego opisu.

Dokładnie tej samej własności należy spodziewać się od współrzędnych chromatycznych. Przejścia pomiędzy przestrzeniami powinny zachowywać barwy i być idealnie odwracalne. Wszelkie naruszenia tej zasady muszą zatem być wynikiem  błędu. Szeroko stosowaną metodologią programistyczną, stworzoną do detekcji tego typu błędów jest \textit{testowanie jednostkowe}, polegającą na wyodrębnieniu i zbadaniu prostych elementów programu.

Testowanie rozpocząłem od sprawdzenia, czy zaprogramowane przeze mnie przejścia między przestrzeniami barw są rzeczywiście odwracalne oraz spójne ze sobą. W tym celu, dla kilkuset losowo wybranych współrzędnych w przestrzeni CIE 1931 $(X,Y,Z)$, sprawdzałem odwracalność przejść do wszystkich innych, wdrożonych przestrzeni. Sprawdzanie było zautomatyzowane i było przeprowadzane po każdej zmianie, aby zminimalizować ryzyko wprowadzenia błędu do kodu.

W taki sam sposób upewniłem się, że napisany przeze mnie program poprawnie generował rozkłady promieniowania CDC i iluminantów serii D (o zadanej CCT) oraz wyznaczał temperaturę barwową.

\section{Porównanie z literaturą}

Niestety, wyżej opisane testy są w stanie wykryć jedynie niespójności w samym programie. Nie można w ten sposób dostrzec niezgodności ze standardami, wynikającymi, przykładowo, ze złego zrozumienia używanych metod. Aby zapobiec błędom tego rodzaju, należy własne wyniki porównać z opublikowanymi w odpowiednich standardach lub w szeroko przyjętej literaturze. Przykładowo, współczynnik CRI $R_a$ jest zdefiniowany w taki sposób, aby dla wzorca F4 przyjmował wartość 51, przy zaokrągleniu do najbliższej liczby całkowitej.

W \cite{Rea2008} autorzy opublikowali wykresy widm emisyjnych ośmiu źródeł wraz z obliczoną CCT, współczynnikami $R_a$, GAI i FSCI. Za pomocą wolnego programu \textit{Plot Digitizer} \cite{plotdigitizer} odtworzyłem dane bezpośrednio z wykresów. Proces nie jest idealnie dokładny, należy więc spodziewać się niewielkich błędów w wynikach. Tabela \ref{tab:rea2008} porównuje obliczone przeze mnie wyniki z opublikowanymi. Nazwy lamp pochodzą od ich temperatur barwowych -- ,,cool white'' (zimna biel) i ''warm white'' (ciepła biel).

\begin{table}[!htb]
	\centering
	\begin{tabular}{|l|rr|cr|cr|cr|}
		\hline
		\multirow{2}{*}{Lampa} & \multicolumn{2}{c|}{CCT [K]} & \multicolumn{2}{c|}{$R_a$} & \multicolumn{2}{c|}{GAI} & \multicolumn{2}{c|}{FSCI} \\
		& pub. & wł. & pub. & wł. & pub. & wł. & pub. & wł. \\
		\hline
		\input{rea2008.tex}
		\hline
	\end{tabular}
	\caption{Porównanie obliczonych parametrów źródeł, opublikowanych w \cite{Rea2008} (pub.) z obliczonymi przeze mnie (wł.).}
	\label{tab:rea2008}
\end{table}

\clearpage
