/* * The ManaPlus Client * Copyright (C) 2013 The ManaPlus Developers * * This file is part of The ManaPlus Client. * * 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 * 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, see . */ #include "utils/files.h" #include "catch.hpp" #include "logger.h" #include "utils/physfstools.h" #include "resources/resourcemanager.h" #include "debug.h" TEST_CASE("Files renameFile", "files") { PHYSFS_init("manaplus"); dirSeparator = "/"; logger = new Logger(); const ResourceManager *const resman = ResourceManager::getInstance(); resman->addToSearchPath("data", false); resman->addToSearchPath("../data", false); const int sz = 1234567; char *buf = new char[sz]; for (int f = 0; f < sz; f ++) buf[f] = f; const std::string name1 = "file1.test"; const std::string name2 = "file2.test"; FILE *file = fopen(name1.c_str(), "w+b"); fwrite(buf, 1, sz, file); fclose(file); REQUIRE(0 == Files::renameFile(name1, name2)); char *buf2 = new char[sz]; FILE *file2 = fopen(name2.c_str(), "rb"); REQUIRE_FALSE(nullptr == file2); fread(buf2, 1, sz, file2); fclose(file2); ::remove(name1.c_str()); ::remove(name2.c_str()); for (int f = 0; f < sz; f ++) REQUIRE(buf[f] == buf2[f]); delete [] buf; delete [] buf2; }