private void test_07(GrupTest arrel)
 {
     GrupTest grup = arrel.NouGrup("Processament de fitxers");
     Regles regles = CarregaRegles(true);
     List<Entrada> entrades = new List<Entrada>();
     Identificador identificador = null;
     grup.NouTest(@"Llegeix DIEC", delegate(RTest resultat)
     {
         identificador = new IdentificadorDIEC("DIEC", regles, DirEntrades("irregulars_diec.txt"));
         identificador.LlegeixEntrades(DirEntrades("diec.txt"), entrades, 100);
         identificador = new IdentificadorDIEC("DIEC2", regles, DirEntrades("irregulars_diec2.txt"));
         identificador.LlegeixEntrades(DirEntrades("diec2.txt"), entrades, 1);
         identificador = new IdentificadorDIEC("més paraules", regles, null);
         identificador.LlegeixEntrades(DirEntrades("mes_paraules.txt"), entrades, 1);
         identificador = new IdentificadorToponims("topònims", regles);
         identificador.LlegeixEntrades(DirEntrades("topònims.txt"), entrades, 1);
         identificador.LlegeixEntrades(DirEntrades("topònims_estrangers.txt"), entrades, 1);
         identificador = new IdentificadorGentilicis("gentilicis", regles, null);
         identificador.LlegeixEntrades(DirEntrades("gentilicis.txt"), entrades, 1);
         identificador.LlegeixEntrades(DirEntrades("gentilicis_estrangers.txt"), entrades, 1);
         identificador = new IdentificadorAntroponims("noms i llinatges", regles, null);
         identificador.LlegeixEntrades(DirEntrades("antropònims.txt"), entrades, 1);
         identificador.LlegeixEntrades(DirEntrades("llinatges.txt"), entrades, 1);
         identificador = new IdentificadorDiversos("diversos", regles);
         identificador.LlegeixEntrades(DirEntrades("abreviatures_duarte.txt"), entrades, 1);
         identificador.LlegeixEntrades(DirEntrades("marques.txt"), entrades, 1);
     });
     grup.NouTest(@"Genera .aff i .dic (Hunspell)", delegate(RTest resultat)
     {
         regles.GeneraAffDicHunspell(DirResultats("prova"), entrades, new Marques(true, "013"), Cat.Cmp);
         List<string> excSenseEmprar = identificador.ExcepcionsSenseEmprar();
         if (excSenseEmprar.Count != 0)
             foreach (string exc in excSenseEmprar)
                 resultat.Error("No emprada: {0}", exc);
     });
     grup.NouTest(@"Genera .aff i .dic (Hunspell i Myspell)", delegate(RTest resultat)
     {
         Identificador id = new IdentificadorDIEC("DIEC", regles, null);
         List<Entrada> ee = new List<Entrada>();
         ee.Add(id.IdentificaEntrada("ent=alçar^cat1=v. tr.^cat2=pron.^cat3=intr."));
         ee.Add(id.IdentificaEntrada("ent=cantar^cat1=v. tr.^cat2=intr."));
         ee.Add(id.IdentificaEntrada("ent=abellir^cat1=v. intr.^cat2=pron."));
         ee.Add(id.IdentificaEntrada("ent=adduir^cat1=v. tr."));
         ee.Add(id.IdentificaEntrada("ent=abatre^cat1=v. tr.^cat2=pron."));
         ee.Add(id.IdentificaEntrada("ent=anglés -esa^cat1=adj. i m. i f.^cat2=adj.^cat3=m.^mrc1=201"));
         regles.GeneraAffDicHunspell(DirResultats("prova"), ee, Marques.totes, Cat.Cmp);
         regles.GeneraAffDicMyspell(DirResultats("prova_myspell"), ee, Marques.totes, Cat.Cmp,
             IdentificadorCat.GetAfinaMyspell);
     });
     grup.NouTest(@"Versions de diccionaris", delegate(RTest resultat)
     {
         Marca marca201 = Marca.Una("201");
         Identificador id = new IdentificadorDIEC("DIEC", regles, null);
         List<Entrada> ee = new List<Entrada>();
         ee.Add(id.IdentificaEntrada("ent=alçar^cat1=v. tr.^cat2=pron.^cat3=intr."));
         ee.Add(id.IdentificaEntrada("ent=cantar^cat1=v. tr.^cat2=intr."));
         ee.Add(id.IdentificaEntrada("ent=abellir^cat1=v. intr.^cat2=pron."));
         ee.Add(id.IdentificaEntrada("ent=adduir^cat1=v. tr."));
         ee.Add(id.IdentificaEntrada("ent=abatre^cat1=v. tr.^cat2=pron."));
         ee.Add(id.IdentificaEntrada("ent=anglès -esa^cat1=adj. i m. i f.^cat2=adj.^cat3=m."));
         //ee.Add(id.IdentificaEntrada("ent=anglés -esa^cat1=adj. i m. i f.^cat2=adj.^cat3=m.^mrc1=201"));
         regles.GeneraAffDicHunspell(DirResultats("prova"), ee, new Marques(true, marca201), Cat.Cmp);
         List<String> llistaSense201 = regles.GeneraFormes(DirResultats("prova.dic"), new Marques(true, marca201), false);
         regles.GeneraAffDicHunspell(DirResultats("prova"), ee, Marques.totes, Cat.Cmp);
         List<String> llistaAmb201 = regles.GeneraFormes(DirResultats("prova.dic"), Marques.totes, false);
         string dif = Compara(llistaSense201, llistaAmb201, 100);
         resultat.Assert(dif == "+anglés +d'anglés +l'anglés", "Diferència inesperada entre llistaSense201 i llistaAmb201 ({0})", dif);
     });
     //grup.NouTest(@"Genera .aff i .dic (Myspell, II)", delegate(RTest resultat)
     //{
     //    regles.GeneraAffDic(DirResultats("prova_myspell"), entrades, new Marques(true, "013"), Entrada.Speller.MYSPELL, Cat.Cmp);
     //});
     //grup.NouTest(@"Genera les formes d'un diccionari", delegate(RTest resultat)
     //{
     //    List<string> formes = regles.GeneraFormes(DirResultats("prova.dic"), Marques.totes, false);
     //    resultat.Nota("S'han generat {0} formes", formes.Count);
     //});
 }
 private List<Entrada> LlegeixEntrades(int mod, List<string> log, DateTime horaInici, Regles regles, List<Identificador> identificadors)
 {
     List<Entrada> entrades = new List<Entrada>();
     LlegeixEntradesWeb(mod, log, horaInici, regles, identificadors, entrades);
     Identificador identificador = null;
     identificador = new IdentificadorDIEC("DIEC", regles, DirEntrades("irregulars_diec.txt"));
     AfegeixLiniaLog("Llegeix les entrades del DIEC", horaInici, log);
     identificador.LlegeixEntrades(DirEntrades("diec.txt"), entrades, mod);
     identificadors.Add(identificador);
     identificador = new IdentificadorDIEC("DIEC2", regles, DirEntrades("irregulars_diec2.txt"));
     AfegeixLiniaLog("Llegeix les entrades del DIEC2", horaInici, log);
     identificador.LlegeixEntrades(DirEntrades("diec2.txt"), entrades, mod);
     identificadors.Add(identificador);
     identificador = new IdentificadorDIEC("més paraules", regles, null);
     AfegeixLiniaLog("Llegeix més entrades tipus DIEC", horaInici, log);
     identificador.LlegeixEntrades(DirEntrades("mes_paraules.txt"), entrades, mod);
     identificadors.Add(identificador);
     identificador = new IdentificadorDIEC("Termcat", regles, DirEntrades("irregulars_termcat.txt"));
     AfegeixLiniaLog("Llegeix entrades del Termcat", horaInici, log);
     identificador.LlegeixEntrades(DirEntrades("termcat.txt"), entrades, mod);
     identificadors.Add(identificador);
     identificador = new IdentificadorToponims("topònims", regles);
     AfegeixLiniaLog("Llegeix els topònims", horaInici, log);
     identificador.LlegeixEntrades(DirEntrades("topònims.txt"), entrades, mod);
     identificador.LlegeixEntrades(DirEntrades("topònims_estrangers.txt"), entrades, mod);
     identificadors.Add(identificador);
     identificador = new IdentificadorGentilicis("gentilicis", regles, null);
     AfegeixLiniaLog("Llegeix els gentilicis", horaInici, log);
     identificador.LlegeixEntrades(DirEntrades("gentilicis.txt"), entrades, mod);
     identificador.LlegeixEntrades(DirEntrades("gentilicis_estrangers.txt"), entrades, mod);
     identificadors.Add(identificador);
     identificador = new IdentificadorAntroponims("noms i llinatges", regles, null);
     AfegeixLiniaLog("Llegeix els noms i els llinatges", horaInici, log);
     identificador.LlegeixEntrades(DirEntrades("antropònims.txt"), entrades, mod);
     identificador.LlegeixEntrades(DirEntrades("llinatges.txt"), entrades, mod);
     identificadors.Add(identificador);
     identificador = new IdentificadorDiversos("diversos", regles);
     AfegeixLiniaLog("Llegeix entrades diverses", horaInici, log);
     identificador.LlegeixEntrades(DirEntrades("abreviatures_duarte.txt"), entrades, mod);
     identificador.LlegeixEntrades(DirEntrades("marques.txt"), entrades, mod);
     identificadors.Add(identificador);
     identificador = new IdentificadorDIEC("AVL", regles, DirEntrades("irregulars_avl.txt"));
     AfegeixLiniaLog("Llegeix les entrades de l'AVL", horaInici, log);
     identificador.LlegeixEntrades(DirEntrades("avl.txt"), entrades, mod);
     identificadors.Add(identificador);
     identificador = new IdentificadorDIEC("AVL_gen", regles, DirEntrades("irregulars_avl_gen.txt"));
     AfegeixLiniaLog("Llegeix les entrades de l'AVL per a la versió general", horaInici, log);
     identificador.LlegeixEntrades(DirEntrades("avl_gen.txt"), entrades, mod);
     identificadors.Add(identificador);
     identificador = new IdentificadorDIEC("AVL_val", regles, DirEntrades("irregulars_avl_val.txt"));
     AfegeixLiniaLog("Llegeix les entrades de l'AVL per a la versió valenciana", horaInici, log);
     identificador.LlegeixEntrades(DirEntrades("avl_val.txt"), entrades, mod);
     identificadors.Add(identificador);
     return entrades;
 }