fileunittest.cpp
来自「MySQL数据库开发源码 值得一看哦」· C++ 代码 · 共 238 行
CPP
238 行
/* Copyright (C) 2003 MySQL AB 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#include "FileUnitTest.hpp"#include <File.hpp>#include <NdbOut.hpp>typedef bool (*TESTFUNC)(const char*);typedef const char TESTNAME;typedef struct { const char* name; TESTFUNC test;}Tests;static Tests testCases[] = { {"Create/Write", &FileUnitTest::testWrite}, {"Read", &FileUnitTest::testRead}, {"Exists", &FileUnitTest::testExists}, {"File Size", &FileUnitTest::testSize}, {"Rename", &FileUnitTest::testRename}, {"Remove", &FileUnitTest::testRemove} };static int testFailed = 0; int main(int argc, char* argv[]){ if (argc < 2) { ndbout << "Usage: filetest <filename>" << endl; return 0; } const char* fileName = argv[1]; int testCount = (sizeof(testCases) / sizeof(Tests)); ndbout << "Starting " << testCount << " tests..." << endl; for (int i = 0; i < testCount; i++) { ndbout << "-- " << " Test " << i + 1 << " [" << testCases[i].name << "] --" << endl; if (testCases[i].test(fileName)) { ndbout << "-- Passed --" << endl; } else { ndbout << "-- Failed -- " << endl; } } ndbout << endl << "-- " << testCount - testFailed << " passed, " << testFailed << " failed --" << endl; return 0;}bool FileUnitTest::testWrite(const char* aFileName){ bool rc = true; File f; if (f.open(aFileName, "w")) { f.writeChar("ABABABABABAB ABBABAB ABBABA ABAB JKH KJHA JHHAHAH..."); f.writeChar("12129791242 1298371923 912738912 378129837128371128132...\n"); f.close(); } else { error("testWrite failed: "); rc = false; } return rc;}bool FileUnitTest::testRead(const char* aFileName){ bool rc = true; // Read file File f; if (f.open(aFileName, "r")) { long size = f.size(); ndbout << "File size = " << size << endl; ndbout << "Allocating buf of " << size << " bytes" << endl; char* buf = new char[size]; buf[size - 1] = '\0'; int r = 0; while ((r = f.readChar(buf, r, size)) > 0) { ndbout << "Read(" << r << "):" << buf << endl; } f.close(); delete buf; } else { error("readTest failed: "); rc = false; } return rc;}bool FileUnitTest::testExists(const char* aFileName){ bool rc = true; if (File::exists(aFileName)) { if (File::exists("ThisFileShouldnotbe.txt")) { rc = false; error("testExists failed, the file should NOT be found."); } } else { rc = false; error("testExists failed, the file should exist."); } return rc;}bool FileUnitTest::testSize(const char* aFileName){ bool rc = true; File f; if (f.open(aFileName, "r")) { long size = f.size(); if (size <= 0) { rc = false; error("testSize failed, size is <= 0"); } ndbout << "File size = " << size << endl; } else { rc = false; error("testSize failed, could no open file."); } f.close(); return rc;}bool FileUnitTest::testRename(const char* aFileName){ bool rc = true; if (File::rename(aFileName, "filetest_new.txt")) { if (!File::exists("filetest_new.txt")) { rc = false; error("testRename failed, new file does not exists."); } else { ndbout << "Renamed " << aFileName << " to filetest_new.txt" << endl; } } else { rc = false; error("testRename failed, unable to rename file."); } return rc;}bool FileUnitTest::testRemove(const char* aFileName){ bool rc = true; File f; if (f.open("filetest_new.txt", "r")) { if (!f.remove()) { rc = false; error("testRemove failed, could not remove file."); } else { if (File::exists("filetest_new")) { rc = false; error("testRemove failed, file was not removed, it still exists."); } } } // (f.open("filetest_new", "r")) else { rc = false; error("testRemove failed, could not read the file."); } return rc; }void FileUnitTest::error(const char* msg){ testFailed++; ndbout << "Test failed: " << msg << endl; perror("Errno msg");}FileUnitTest::FileUnitTest(){ }FileUnitTest::~FileUnitTest(){}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?