/* Copyright (C) 2013 Børre Gaup This file is part of the program wordlist2hunspell. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include #include // dirty trick to make private functions available for testing :D #define private public // place includes for classes that should be test below this line #include "../wordlistparsernocompound.h" extern void debugoutputSetSetMap(std::map, std::set > uffsetsetmap); extern void debugoutputStringIntMap(std::map uffstringintmap); extern std::istream* setupinputfile(); extern std::string wp2wordlist(std::map stems, std::map suffixes, std::map< std::set, std::set > ss); std::map nocompoundsetupstemmap() { std::map stems; int i = 1; stems.insert(std::pair("100000-geardásačča", i)); ++i; stems.insert(std::pair("100000-geardásaš", i)); ++i; stems.insert(std::pair("10000-geardásačča", i)); ++i; stems.insert(std::pair("10000-geardásaš", i)); ++i; stems.insert(std::pair("1000-geardásačča", i)); ++i; stems.insert(std::pair("1000-geardásaš", i)); ++i; stems.insert(std::pair("10-Đ", i)); ++i; stems.insert(std::pair("10-Đ-", i)); ++i; stems.insert(std::pair("1-D", i)); ++i; stems.insert(std::pair("1-D-", i)); ++i; stems.insert(std::pair("2-C", i)); ++i; stems.insert(std::pair("2-C-", i)); ++i; stems.insert(std::pair("3-juvllatsihkkel", i)); ++i; stems.insert(std::pair("7. juni-plassen", i)); ++i; stems.insert(std::pair("Aabakken", i)); ++i; stems.insert(std::pair("Aabel", i)); ++i; stems.insert(std::pair("abandonere", i)); ++i; stems.insert(std::pair("aborigiinnalačča", i)); ++i; stems.insert(std::pair("absoluhta", i)); ++i; stems.insert(std::pair("absoluhtalačča", i)); ++i; stems.insert(std::pair("addinbeai", i)); ++i; stems.insert(std::pair("advokáhta gukto", i)); ++i; stems.insert(std::pair("agibeai", i)); ++i; stems.insert(std::pair("a.", i)); ++i; stems.insert(std::pair("almmustusbeai", i)); ++i; stems.insert(std::pair("as", i)); ++i; stems.insert(std::pair("čuohpan", i)); ++i; stems.insert(std::pair("dáppe", i)); ++i; stems.insert(std::pair("dieppe", i)); ++i; stems.insert(std::pair("doppe", i)); ++i; stems.insert(std::pair("NSR", i)); ++i; return stems; } TEST(NoCompoundTestProcessFileStems) { std::istream* inputfile = setupinputfile(); WordlistParserNoCompound wp; wp.processFile(inputfile); std::map got = wp.getStems(); std::map want = nocompoundsetupstemmap(); CHECK_EQUAL(want.size(), got.size()); CHECK(equal(want.begin(), want.end(), got.begin())); } std::map nocompoundsuffixmap() { std::map s; int i = 1; s.insert(std::pair("ide\tI", i)); ++i; s.insert(std::pair("id\tI", i)); ++i; s.insert(std::pair("id-\tX", i)); ++i; s.insert(std::pair("iguin\tI", i)); ++i; s.insert(std::pair("0\tI", i)); ++i; s.insert(std::pair("-\tX", i)); ++i; s.insert(std::pair(":ide\tI", i)); ++i; s.insert(std::pair(":id\tI", i)); ++i; s.insert(std::pair(":iguin\tI", i)); ++i; s.insert(std::pair("0\tX", i)); ++i; s.insert(std::pair("aččade\tI", i)); ++i; s.insert(std::pair("aččadet\tI", i)); ++i; s.insert(std::pair("aččaidanguin\tI", i)); ++i; s.insert(std::pair("a\tI", i)); ++i; s.insert(std::pair("a-\tX", i)); ++i; s.insert(std::pair("ii\tI", i)); ++i; s.insert(std::pair("iin\tI", i)); ++i; s.insert(std::pair("ba\tI", i)); ++i; s.insert(std::pair("beahtti\tI", i)); ++i; s.insert(std::pair("behtet\tI", i)); ++i; s.insert(std::pair("dan\tI", i)); ++i; s.insert(std::pair("deaddjái\tI", i)); ++i; s.insert(std::pair("deaddji\tI", i)); ++i; s.insert(std::pair("deaddjin\tI", i)); ++i; s.insert(std::pair("dišgoahtán\tI", i)); ++i; s.insert(std::pair("duvvogoahtán\tI", i)); ++i; s.insert(std::pair("t\tI", i)); ++i; s.insert(std::pair("buččat\tI", i)); ++i; s.insert(std::pair("de\tI", i)); ++i; s.insert(std::pair("det\tI", i)); ++i; s.insert(std::pair("me\tI", i)); ++i; s.insert(std::pair(":in\tX", i)); ++i; s.insert(std::pair(":in-\tX", i)); ++i; s.insert(std::pair(":i\tX", i)); ++i; s.insert(std::pair(":i-\tX", i)); ++i; s.insert(std::pair(":n\tX", i)); ++i; s.insert(std::pair(":n-\tX", i)); ++i; s.insert(std::pair("laččaide\tI", i)); ++i; s.insert(std::pair("laččaid\tI", i)); ++i; s.insert(std::pair("laččaiguin\tI", i)); ++i; s.insert(std::pair(":i\tI", i)); ++i; return s; } TEST(NoCompoundTestProcessFileSuffixes) { std::istream* inputfile = setupinputfile(); WordlistParserNoCompound wp; wp.processFile(inputfile); std::map want = nocompoundsuffixmap(); std::map got = wp.getSuffixMap(); CHECK_EQUAL(want.size(), got.size()); CHECK(equal(got.begin(), got.end(), want.begin())); } std::set nocompoundsetupplxclasses() { std::set plxclasses; plxclasses.insert("I"); plxclasses.insert("X"); return plxclasses; } TEST(NoCompoundTestProcessFilePlx) { std::istream* inputfile = setupinputfile(); WordlistParserNoCompound wp; wp.processFile(inputfile); std::set want = nocompoundsetupplxclasses(); std::set got = wp.getPlxClasses(); CHECK_EQUAL(want.size(), got.size()); CHECK(equal(got.begin(), got.end(), want.begin())); } TEST(NoCompoundTestProcessFileSuffixStemMap) { std::istream* inputfile = setupinputfile(); WordlistParserNoCompound wp; wp.processFile(inputfile); std::string want("100000-geardásaččaide\tI\n100000-geardásaččaid\tI\n100000-geardásaččaid-\tX\n100000-geardásaččaiguin\tI\n100000-geardásačča\tI\n100000-geardásačča-\tX\n1000-geardásaččaid\tI\n10000-geardásaččaid\tI\n10000-geardásačča\tI\n10000-geardásaš\tI\n1000-geardásaš\tI\n1-D\tI\n2-C\tI\n100000-geardásaš\tI\n100000-geardásaš-\tX\n7. juni-plassen\tI\n7. juni-plassen-\tX\n7. juni-plassena\tI\n7. juni-plassena-\tX\n7. juni-plassenii\tI\n7. juni-plasseniin\tI\n10-Đ\tI\n10-Đ:ide\tI\n10-Đ:id\tI\n10-Đ:iguin\tI\nNSR\tI\nNSR:i\tI\nAabel-\tX\naddinbeai-\tX\nagibeai-\tX\nalmmustusbeai-\tX\nAabakken-\tX\nAabakkena\tI\nAabakkena-\tX\nas:ide\tI\nas:id\tI\nas:iguin\tI\n10-Đ-\tX\n1-D-\tX\n2-C-\tX\ndáppe\tX\ndieppe\tX\ndoppe\tX\n3-juvllatsihkkelaččade\tI\n3-juvllatsihkkelaččadet\tI\n3-juvllatsihkkelaččaidanguin\tI\nabandonereba\tI\nabandonerebeahtti\tI\nabandonerebehtet\tI\nabandoneredan\tI\nabandoneredeaddjái\tI\nabandoneredeaddji\tI\nabandoneredeaddjin\tI\nabandoneredišgoahtán\tI\nabandonereduvvogoahtán\tI\naborigiinnalaččat\tI\nabsoluhtalaččat\tI\nabsoluhtabuččat\tI\nadvokáhta guktode\tI\nadvokáhta guktodet\tI\nadvokáhta guktome\tI\na.:in\tX\na.:in-\tX\na.:i\tX\na.:i-\tX\na.:n\tX\na.:n-\tX\nčuohpanlaččaide\tI\nčuohpanlaččaid\tI\nčuohpanlaččaiguin\tI\n"); std::map< std::set, std::set > ss = wp.getSuffixSetStemSet(); std::string got = wp2wordlist(wp.getStems(), wp.getSuffixMap(), ss); CHECK_EQUAL(want, got); }