FileTest.cc 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include "File.h"
  2. #include <sys/types.h>
  3. #include <sys/stat.h>
  4. #include <fcntl.h>
  5. #include <string>
  6. #include <cppunit/extensions/HelperMacros.h>
  7. using namespace std;
  8. class FileTest:public CppUnit::TestFixture {
  9. CPPUNIT_TEST_SUITE(FileTest);
  10. CPPUNIT_TEST(testExists);
  11. CPPUNIT_TEST(testIsFile);
  12. CPPUNIT_TEST(testIsDir);
  13. CPPUNIT_TEST(testRemove);
  14. CPPUNIT_TEST(testSize);
  15. CPPUNIT_TEST(testMkdir);
  16. CPPUNIT_TEST_SUITE_END();
  17. private:
  18. public:
  19. void setUp() {
  20. }
  21. void testExists();
  22. void testIsFile();
  23. void testIsDir();
  24. void testRemove();
  25. void testSize();
  26. void testMkdir();
  27. };
  28. CPPUNIT_TEST_SUITE_REGISTRATION( FileTest );
  29. void FileTest::testExists() {
  30. File f("FileTest.cc");
  31. CPPUNIT_ASSERT(f.exists());
  32. File f2("NonExistentFile");
  33. CPPUNIT_ASSERT(!f2.exists());
  34. File d1("../test");
  35. CPPUNIT_ASSERT(d1.exists());
  36. }
  37. void FileTest::testIsFile() {
  38. File f("FileTest.cc");
  39. CPPUNIT_ASSERT(f.isFile());
  40. File f2("NonExistentFile");
  41. CPPUNIT_ASSERT(!f2.isFile());
  42. File d1("../test");
  43. CPPUNIT_ASSERT(!d1.isFile());
  44. }
  45. void FileTest::testIsDir() {
  46. File f("FileTest.cc");
  47. CPPUNIT_ASSERT(!f.isDir());
  48. File f2("NonExistentFile");
  49. CPPUNIT_ASSERT(!f2.isDir());
  50. File d1("../test");
  51. CPPUNIT_ASSERT(d1.isDir());
  52. }
  53. void FileTest::testRemove() {
  54. int fd;
  55. string name = "/tmp/aria2test";
  56. unlink(name.c_str());
  57. if((fd = creat(name.c_str(), S_IRUSR|S_IWUSR)) < 0) {
  58. CPPUNIT_FAIL("cannot create test file");
  59. }
  60. close(fd);
  61. File f(name);
  62. CPPUNIT_ASSERT(f.isFile());
  63. CPPUNIT_ASSERT(f.remove());
  64. CPPUNIT_ASSERT(!f.exists());
  65. // delete the file again
  66. CPPUNIT_ASSERT(!f.remove());
  67. string dir = "/tmp/aria2testdir";
  68. mkdir(dir.c_str(), 0777);
  69. File d(dir);
  70. CPPUNIT_ASSERT(d.exists());
  71. CPPUNIT_ASSERT(d.remove());
  72. CPPUNIT_ASSERT(!d.exists());
  73. // delete the directory again
  74. CPPUNIT_ASSERT(!d.remove());
  75. }
  76. void FileTest::testSize() {
  77. File f("4096chunk.txt");
  78. CPPUNIT_ASSERT_EQUAL(4096, (int)f.size());
  79. }
  80. void FileTest::testMkdir() {
  81. string dir = "/tmp/aria2test2/test";
  82. File d(dir);
  83. if(d.exists()) {
  84. CPPUNIT_ASSERT(d.remove());
  85. }
  86. CPPUNIT_ASSERT(!d.exists());
  87. CPPUNIT_ASSERT(d.mkdirs());
  88. CPPUNIT_ASSERT(d.exists());
  89. // this test failes because d.mkdir returns false when the directory is
  90. // already exists.
  91. CPPUNIT_ASSERT(!d.mkdirs());
  92. }