% evaluace semestralek ze ZDO - Karty 2012
% 

% Cesta k testovacim Obrazkum
dataPath = '../zdoKartyData';
% Cesta k adresari studentu, ve kterem je jejich soubor 'karty2012.m'
solPath = '../zdoKartyStudenti';



addpath(solPath);

% seznamDat = {, };
testData = {};
%% pridavani dat

testData{end+1}.filename = 'vlcsnap-2012-03-27-14h47m16s218.png';
testData{end}.hodnoty = {'10','10', '3','9'};
testData{end}.barvy = {'srdce','piky','krize','srdce'};

testData{end+1}.filename = 'vlcsnap-2012-03-27-14h50m20s218.png';
testData{end}.hodnoty = {'4','2', '7','Q', '7'};
testData{end}.barvy = {'krize','piky','srdce','krize', 'kary'};

% pridavani dalsich testovacich dat
% testovaciData

%% vyhodnoceni

% kolik karet se celkem testuje
celkemKaret = 0;
% kolik bylo klasifikovano spravne
spravne = 0;
% kolik bylo klasifiovano spatne
spatne = 0;
% id obrazku s chybou
spatneDetail.idim = [];
% id karty s chybou
spatneDetail.idcard = [];
% pocet chyb ve strukture yamlu
spatneStruktura = 0;


tic
for i = 1:numel(testData)
    out = karty2012([dataPath '/' testData{i}.filename]);
    odpovReseni = testData{i};
    
    % Nalezeni chybneho poctu karet
    idKarty = min (numel(out.hodnoty), numel(odpovReseni.hodnoty));
    spatne = spatne + abs (numel(out.hodnoty) - numel(odpovReseni.hodnoty));
    
    
    for j=1:idKarty
        celkemKaret = celkemKaret + 1;
        try
            spravHodnoty = strcmp(out.hodnoty{j}, odpovReseni.hodnoty{j});
            spravBarvy = strcmp(out.barvy{j} , odpovReseni.barvy{j});
        catch err
            warning(['Chyba ve strukture, ', ...
                err.message, ...
                ' out.hodnoty = ', ...
                num2str(numel(out.hodnoty),0), ...
                ' out.barvy = ', ...
                num2str(numel(out.barvy),0), ...
                ' odpovReseni.hodnoty = ', ...
                num2str(numel(odpovReseni.hodnoty),0), ...
                ' odpovReseni.barvy = ', ...
                num2str(numel(odpovReseni.barvy),0), ...
                ]) %, num2str(numel(out.barvy),2) ]);
            spatneStruktura = spatneStruktura + 1;
        end
        if spravBarvy && spravHodnoty
            spravne = spravne + 1;
        else
            spatne = spatne + 1;
            spatneDetail.idim(end+1) = i;
            spatneDetail.idcard(end+1) = j;
        end
    end
end
t = toc
rmpath(solPath);

%% zhodnoceni a vypisy
pocetObrazku = numel(testData);
tAvgIm = t/pocetObrazku;
tAvgKarta = t/celkemKaret;

disp (['Pocet obrazku: ', num2str(pocetObrazku,0)]);
disp (['Chyby ve strukture: ', num2str(spatneStruktura,0)]);
disp (['Cas vypoctu: ', num2str(t,2), ' [s] ', ...
    'Prumer na obrazek: ', num2str(tAvgIm,2), ...
    ' Prumer na kartu: ', num2str(tAvgKarta,2)]);
    
disp (['Uspesnost: ' num2str(spravne/(celkemKaret),3) , ...
    ' (', num2str(spravne,0), '/', num2str(celkemKaret,0) ,')' ])


