-- Unit tests per il [[Modulo:Progetti interessati]]. Cliccare sulla pagina di discussione per eseguire i test.
local p = require('Modulo:UnitTests')

function p:test_livello()
	self:preprocess_equals_many('{{#invoke:Progetti interessati/sandbox|livello|', '}}', {
		-- mancano tutte le valutazioni
		{ '', '' },
		-- se manca accuratezza, ma ce ne è almeno 1 o più degli altri => 0.5
		{ 'scrittura=a', '0.5' },
		{ 'fonti=b', '0.5' },
		{ 'immagini=c', '0.5' },
		{ 'scrittura=a|immagini=b|fonti=c', '0.5' },
		-- se c'è accuratezza, ma manca scrittura, a prescindere dai restanti due => 0.4
		{ 'accuratezza=a', '0.4' },
		{ 'accuratezza=a|fonti=b', '0.4' },
		{ 'accuratezza=a|fonti=b|immagini=c', '0.4' },
		-- se ci sono sia accuratezza che scrittura, ma manca fonti, a prescindere da immagini => 0.3
		{ 'accuratezza=a|scrittura=b', '0.3' },
		{ 'accuratezza=a|scrittura=b|immagini=c', '0.3' },
		-- se ci sono accuratezza, scrittura, fonti e manca immagine => 0.2
		{ 'accuratezza=a|scrittura=b|fonti=c', '0.2' },
		
		-- sono presenti tutti e quattro:
		-- tutti con valore a
		{ 'accuratezza=a|scrittura=a|fonti=a|immagini=a', '4' },
		-- il più basso è b
		{ 'accuratezza=b|scrittura=a|fonti=a|immagini=a', '3' },
		{ 'accuratezza=a|scrittura=b|fonti=a|immagini=b', '3' },
		-- il più basso è c
		{ 'accuratezza=c|scrittura=a|fonti=a|immagini=a', '2' },
		{ 'accuratezza=a|scrittura=c|fonti=a|immagini=c', '2' },
		-- il più basso è d
		{ 'accuratezza=d|scrittura=a|fonti=a|immagini=a', '1' },
		{ 'accuratezza=a|scrittura=d|fonti=a|immagini=d', '1' },
		-- il più basso è e
		{ 'accuratezza=e|scrittura=a|fonti=a|immagini=a', 'BOZZA' },
		{ 'accuratezza=a|scrittura=e|fonti=a|immagini=a', 'W' },
		{ 'accuratezza=a|scrittura=a|fonti=e|immagini=a', 'F' },
		{ 'accuratezza=a|scrittura=a|fonti=a|immagini=e', 'IMMAGINI' }
	})
end

function p:test_categorie()
	self:preprocess_equals_many('{{#invoke:Progetti interessati/sandbox|categorie|debug=1| ', '}}', {
		-- nessun progetto, valutazione e data
		{
			'',
			'[[:Categoria:Voci monitorate - non compilate]]<br />' ..
			'[[:Categoria:Voci monitorate - accuratezza NC]]<br />' ..
			'[[:Categoria:Voci monitorate - scrittura NC]]<br />' ..
			'[[:Categoria:Voci monitorate - fonti NC]]<br />' ..
			'[[:Categoria:Voci monitorate - immagini NC]]<br />'
		},

		-- test data/utente senza monitoraggio
		{
			'data=gennaio 2015',
			'[[:Categoria:Voci monitorate - non compilate]]<br />' ..
			'[[:Categoria:Voci monitorate - accuratezza NC]]<br />' ..
			'[[:Categoria:Voci monitorate - scrittura NC]]<br />' ..
			'[[:Categoria:Voci monitorate - fonti NC]]<br />' ..
			'[[:Categoria:Voci monitorate - immagini NC]]<br />' ..
			'[[:Categoria:Pagine con template Progetti interessati con utente o data e senza monitoraggio]]<br />'
		},

		-- nessun progetto e data, 1 valutazione
		{
			'accuratezza=a',
			'[[:Categoria:Voci monitorate - nessun livello]]<br />' ..
			'[[:Categoria:Voci monitorate - accuratezza A]]<br />' ..
			'[[:Categoria:Voci monitorate - scrittura NC]]<br />' ..
			'[[:Categoria:Voci monitorate - fonti NC]]<br />' ..
			'[[:Categoria:Voci monitorate - immagini NC]]<br />' ..
			'[[:Categoria:Voci monitorate - non datate]]<br />'
		},

		-- nessun progetto e data, 4 valutazioni diverse fino al d
		{
			'accuratezza=a|scrittura=b|fonti=c|immagini=d',
			'[[:Categoria:Voci monitorate - livello minimo]]<br />' ..
			'[[:Categoria:Voci monitorate - accuratezza A]]<br />' ..
			'[[:Categoria:Voci monitorate - scrittura B]]<br />' ..
			'[[:Categoria:Voci monitorate - fonti C]]<br />' ..
			'[[:Categoria:Voci monitorate - immagini D]]<br />' ..
			'[[:Categoria:Voci monitorate - non datate]]<br />'
		},

		-- 1 progetto, nessuna valutazione e data
		{
			'progetto=Astronomia',
			'[[:Categoria:Voci monitorate - non compilate]]<br />' ..
			'[[:Categoria:Voci monitorate Progetto Astronomia]]<br />' ..
			'[[:Categoria:Voci monitorate - accuratezza NC]]<br />' ..
			'[[:Categoria:Progetto:Astronomia/Tabella monitoraggio automatico - accuratezza nc]]<br />' ..
			'[[:Categoria:Voci monitorate - scrittura NC]]<br />' ..
			'[[:Categoria:Progetto:Astronomia/Tabella monitoraggio automatico - scrittura nc]]<br />' ..
			'[[:Categoria:Voci monitorate - fonti NC]]<br />' ..
			'[[:Categoria:Progetto:Astronomia/Tabella monitoraggio automatico - fonti nc]]<br />' ..
			'[[:Categoria:Voci monitorate - immagini NC]]<br />' ..
			'[[:Categoria:Progetto:Astronomia/Tabella monitoraggio automatico - immagini nc]]<br />' ..
			'[[:Categoria:Voci monitorate Progetto Astronomia - non compilate]]<br />'
		},

		-- 1 progetto, 4 valutazioni diverse fino al d e data
		{
			'progetto=Astronomia|accuratezza=a|scrittura=b| fonti=c|immagini=d|data=gennaio 2015',
			'[[:Categoria:Voci monitorate - livello minimo]]<br />' ..
			'[[:Categoria:Voci monitorate Progetto Astronomia]]<br />' ..
			'[[:Categoria:Voci monitorate - accuratezza A]]<br />' ..
			'[[:Categoria:Progetto:Astronomia/Tabella monitoraggio automatico - accuratezza a]]<br />' ..
			'[[:Categoria:Voci monitorate - scrittura B]]<br />' ..
			'[[:Categoria:Progetto:Astronomia/Tabella monitoraggio automatico - scrittura b]]<br />' ..
			'[[:Categoria:Voci monitorate - fonti C]]<br />' ..
			'[[:Categoria:Progetto:Astronomia/Tabella monitoraggio automatico - fonti c]]<br />' ..
			'[[:Categoria:Voci monitorate - immagini D]]<br />' ..
			'[[:Categoria:Progetto:Astronomia/Tabella monitoraggio automatico - immagini d]]<br />' ..
			'[[:Categoria:Voci monitorate Progetto Astronomia - livello minimo]]<br />' ..
			'[[:Categoria:Voci monitorate - gennaio 2015]]<br />'
		}
	})
end

return p