/thirdparty/breakpad/client/linux/minidump_writer/directory_reader_unittest.cc

http://github.com/tomahawk-player/tomahawk · C++ · 77 lines · 35 code · 14 blank · 28 comment · 7 complexity · 2af056c122fdf915bfe29f2155045afe MD5 · raw file

  1. // Copyright (c) 2009, Google Inc.
  2. // All rights reserved.
  3. //
  4. // Redistribution and use in source and binary forms, with or without
  5. // modification, are permitted provided that the following conditions are
  6. // met:
  7. //
  8. // * Redistributions of source code must retain the above copyright
  9. // notice, this list of conditions and the following disclaimer.
  10. // * Redistributions in binary form must reproduce the above
  11. // copyright notice, this list of conditions and the following disclaimer
  12. // in the documentation and/or other materials provided with the
  13. // distribution.
  14. // * Neither the name of Google Inc. nor the names of its
  15. // contributors may be used to endorse or promote products derived from
  16. // this software without specific prior written permission.
  17. //
  18. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  19. // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  20. // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  21. // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  22. // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  23. // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  24. // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  25. // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  26. // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  27. // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  28. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29. #include <set>
  30. #include <string>
  31. #include <dirent.h>
  32. #include <fcntl.h>
  33. #include <sys/types.h>
  34. #include "client/linux/minidump_writer/directory_reader.h"
  35. #include "breakpad_googletest_includes.h"
  36. using namespace google_breakpad;
  37. namespace {
  38. typedef testing::Test DirectoryReaderTest;
  39. }
  40. TEST(DirectoryReaderTest, CompareResults) {
  41. std::set<std::string> dent_set;
  42. DIR *const dir = opendir("/proc/self");
  43. ASSERT_TRUE(dir != NULL);
  44. struct dirent* dent;
  45. while ((dent = readdir(dir)))
  46. dent_set.insert(dent->d_name);
  47. closedir(dir);
  48. const int fd = open("/proc/self", O_DIRECTORY | O_RDONLY);
  49. ASSERT_GE(fd, 0);
  50. DirectoryReader dir_reader(fd);
  51. unsigned seen = 0;
  52. const char* name;
  53. while (dir_reader.GetNextEntry(&name)) {
  54. ASSERT_TRUE(dent_set.find(name) != dent_set.end());
  55. seen++;
  56. dir_reader.PopEntry();
  57. }
  58. ASSERT_TRUE(dent_set.find("status") != dent_set.end());
  59. ASSERT_TRUE(dent_set.find("stat") != dent_set.end());
  60. ASSERT_TRUE(dent_set.find("cmdline") != dent_set.end());
  61. ASSERT_EQ(dent_set.size(), seen);
  62. close(fd);
  63. }