#include <stdio.h>
#include <string.h>
#include "xsml_node.h"
#include "xsml_tquery.h"
#include "xsml_iter.h"
#include "dati_test.h"

int main (int argc, const char * argv[]) {
	int err, attesi;
	node radice, tq, matches[MAX_MATCHES];
	list risultato;
	
	err = crea_dati_test(&radice, &tq, &attesi, matches);
	if (err != OP_OK) {
		printf("Errore interno nella creazione dei dati di test!\n");
		return err;
	}
	
	/* esegue la tquery */
	err = tquery(radice, tq, &risultato);
	if (err != OP_OK) {
		printf("Errore nella tquery!\n");
		return err;
	}
	
	/* verifica */
	iterator res_it = get_iterator(risultato);
	int trovati = 0, giusti = 0, errati = 0;
	int rimasti = attesi;
	while(has_next(res_it)) {
		trovati++;
		node n = (node)next(res_it);
		int k;
		for (k = 0; k < rimasti && n != matches[k]; k++);
		if (k < rimasti) {
			giusti++;
			/* elimino il risultato trovato dai match da trovare */
			rimasti--;
			matches[k] = matches[rimasti];
		} else
			errati++;
	}

	printf("Attesi | Trovati | Giusti | Errati | Non trovati\n");
	printf("  %d    |    %d    |    %d   |    %d   |    %d\n", attesi, trovati, giusti, errati, rimasti);
	
	printf("\n");
	
	if (trovati != attesi || rimasti > 0) {
		printf("risultati della query... ERRORI\n");
		return 1;
	}

	printf("risultati della query... OK\n");
	return 0;
}
