/* * Copyright (C) 2023 The C++ Plus Project. * This file is part of the cppp-reiconv Library. * * The cppp-reiconv Library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * The cppp-reiconv Library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with the cppp-reiconv Library; see the file COPYING. * If not, see . */ /* Simple check of a stateful encoding. */ #include #include #include "file_utils.hpp" #include "reiconv-test.hpp" std::string replace(const std::string& src, const std::string& from, const std::string& to) { std::string result = src; size_t pos = 0; while ((pos = result.find(from, pos)) != std::string::npos) { result.replace(pos, from.length(), to); pos += to.length(); } return result; } std::string srcdir, charset; // Usage: check-stateful SRCDIR CHARSET int main(int argc, char* argv[]) { if(argc < 3) { std::cerr << "Usage: check-stateful SRCDIR CHARSET\n"; return 1; } srcdir = argv[1]; charset = argv[2]; std::string charsetf = replace(charset, ":", "-"); if(file_exists(srcdir + "/" + charsetf + "-snippet.alt")) { test::iconv::main(charset, "UTF-8", srcdir + "/" + charsetf + "-snippet.alt", "tmp-snippet"); assert_compare_file(srcdir + "/" + charsetf + "-snippet.UTF-8", "tmp-snippet"); } test::iconv::main(charset, "UTF-8", srcdir + "/" + charsetf + "-snippet", "tmp-snippet"); assert_compare_file(srcdir + "/" + charsetf + "-snippet.UTF-8", "tmp-snippet"); test::iconv::main("UTF-8", charset, srcdir + "/" + charsetf + "-snippet.UTF-8", "tmp-snippet"); assert_compare_file(srcdir + "/" + charsetf + "-snippet", "tmp-snippet"); remove_file("tmp-snippet"); success("check-stateful", charset + " OK."); return 0; }