libmoost
/home/mhx/git/github/libmoost/test/string/levenshtein.cpp
Go to the documentation of this file.
00001 /* vim:set ts=3 sw=3 sts=3 et: */
00028 #include <boost/test/unit_test.hpp>
00029 #include <boost/test/test_tools.hpp>
00030 
00031 #include <vector>
00032 #include "../../include/moost/string/levenshtein.hpp"
00033 
00034 using namespace moost::string;
00035 
00036 BOOST_AUTO_TEST_SUITE( levenshtein_test )
00037 
00038 BOOST_AUTO_TEST_CASE( test_same )
00039 {
00040   BOOST_CHECK_EQUAL(levenshtein("foo", "foo"), 0);
00041 }
00042 
00043 BOOST_AUTO_TEST_CASE( test_diff )
00044 {
00045   BOOST_CHECK_EQUAL(levenshtein("foo", "fob"), 1);
00046 }
00047 
00048 BOOST_AUTO_TEST_CASE( test_order )
00049 {
00050   BOOST_CHECK_EQUAL(levenshtein("foo", "oof"), 2);
00051 }
00052 
00053 BOOST_AUTO_TEST_CASE( test_max )
00054 {
00055   BOOST_CHECK_EQUAL(levenshtein("foo", "abc"), 3);
00056 }
00057 
00058 BOOST_AUTO_TEST_CASE( test_transposition )
00059 {
00060   BOOST_CHECK_EQUAL(levenshtein("abc", "acb"), 1);
00061 }
00062 
00063 BOOST_AUTO_TEST_CASE( test_fast_same )
00064 {
00065   BOOST_CHECK_EQUAL(fast_levenshtein("foo", "foo"), 0);
00066 }
00067 
00068 BOOST_AUTO_TEST_CASE( test_fast_diff )
00069 {
00070   BOOST_CHECK_EQUAL(fast_levenshtein("foo", "fob"), 1);
00071 }
00072 
00073 BOOST_AUTO_TEST_CASE( test_fast_order )
00074 {
00075   BOOST_CHECK_EQUAL(fast_levenshtein("foo", "oof"), 2);
00076 }
00077 
00078 BOOST_AUTO_TEST_CASE( test_fast_max )
00079 {
00080   BOOST_CHECK_EQUAL(fast_levenshtein("foo", "abc"), 3);
00081 }
00082 
00083 BOOST_AUTO_TEST_CASE( test_fast_transposition )
00084 {
00085   BOOST_CHECK_EQUAL(fast_levenshtein("abc", "acb"), 2);  // NB e=different from levenshtein!
00086 }
00087 
00088 BOOST_AUTO_TEST_SUITE_END()