ctkDICOMDatabaseTest1.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // Qt includes
  2. #include <QApplication>
  3. #include <QDir>
  4. #include <QTimer>
  5. // ctkDICOMCore includes
  6. #include "ctkDICOMDatabase.h"
  7. // STD includes
  8. #include <iostream>
  9. #include <cstdlib>
  10. int ctkDICOMDatabaseTest1( int argc, char * argv [] )
  11. {
  12. QApplication app(argc, argv);
  13. ctkDICOMDatabase database;
  14. QDir databaseDirectory = QDir::temp();
  15. QFileInfo databaseFile(databaseDirectory, QString("database.test"));
  16. database.openDatabase(databaseFile.absoluteFilePath());
  17. if (!database.lastError().isEmpty())
  18. {
  19. std::cerr << "ctkDICOMDatabase::openDatabase() failed: "
  20. << qPrintable(database.lastError()) << std::endl;
  21. return EXIT_FAILURE;
  22. }
  23. if (!database.database().isValid())
  24. {
  25. std::cerr << "ctkDICOMDatabase::openDatabase() failed: "
  26. << "invalid sql database" << std::endl;
  27. return EXIT_FAILURE;
  28. }
  29. if (database.isInMemory())
  30. {
  31. std::cerr << "ctkDICOMDatabase::openDatabase() failed: "
  32. << "database should not be in memory" << std::endl;
  33. return EXIT_FAILURE;
  34. }
  35. if (database.databaseFilename() != databaseFile.absoluteFilePath())
  36. {
  37. std::cerr << "ctkDICOMDatabase::databaseFilename() failed: "
  38. << qPrintable( database.databaseFilename()) << std::endl;
  39. return EXIT_FAILURE;
  40. }
  41. if (QDir(database.databaseDirectory()) != databaseDirectory)
  42. {
  43. std::cerr << "ctkDICOMDatabase::databaseDirectory() failed"
  44. << qPrintable(database.databaseDirectory()) << std::endl;
  45. return EXIT_FAILURE;
  46. }
  47. bool res = database.initializeDatabase();
  48. if (!res)
  49. {
  50. std::cerr << "ctkDICOMDatabase::initializeDatabase() failed." << std::endl;
  51. return EXIT_FAILURE;
  52. }
  53. // check if it doesn't crash
  54. database.pathForDataset(0);
  55. database.insert(0, true, true);
  56. database.insert(0, true, false);
  57. database.insert(0, false, false);
  58. database.insert(0, false, true);
  59. database.closeDatabase();
  60. database.initializeDatabase();
  61. if (argc <= 1 || QString(argv[1]) != "-I")
  62. {
  63. QTimer::singleShot(200, &app, SLOT(quit()));
  64. }
  65. return app.exec();
  66. }