testutility.cpp 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. /*
  2. This software is in the public domain, furnished "as is", without technical
  3. support, and with no warranty, express or implied, as to its usefulness for
  4. any purpose.
  5. */
  6. #include <QtTest>
  7. #include "utility.h"
  8. #define STR_(X) #X
  9. #define STR(X) STR_(X)
  10. #define BIN_PATH STR(OWNCLOUD_BIN_PATH)
  11. using namespace OCC::Utility;
  12. class TestUtility : public QObject
  13. {
  14. Q_OBJECT
  15. private slots:
  16. void testFormatFingerprint()
  17. {
  18. QVERIFY2(formatFingerprint("68ac906495480a3404beee4874ed853a037a7a8f")
  19. == "68:ac:90:64:95:48:0a:34:04:be:ee:48:74:ed:85:3a:03:7a:7a:8f",
  20. "Utility::formatFingerprint() is broken");
  21. }
  22. void testOctetsToString()
  23. {
  24. QLocale::setDefault(QLocale("en"));
  25. QCOMPARE(octetsToString(999) , QString("999 B"));
  26. QCOMPARE(octetsToString(1024) , QString("1 KB"));
  27. QCOMPARE(octetsToString(1364) , QString("1 KB"));
  28. QCOMPARE(octetsToString(9110) , QString("9 KB"));
  29. QCOMPARE(octetsToString(9910) , QString("10 KB"));
  30. QCOMPARE(octetsToString(10240) , QString("10 KB"));
  31. QCOMPARE(octetsToString(123456) , QString("121 KB"));
  32. QCOMPARE(octetsToString(1234567) , QString("1 MB"));
  33. QCOMPARE(octetsToString(12345678) , QString("12 MB"));
  34. QCOMPARE(octetsToString(123456789) , QString("118 MB"));
  35. QCOMPARE(octetsToString(1000LL*1000*1000 * 5) , QString("4.7 GB"));
  36. QCOMPARE(octetsToString(1), QString("1 B"));
  37. QCOMPARE(octetsToString(2), QString("2 B"));
  38. QCOMPARE(octetsToString(1024), QString("1 KB"));
  39. QCOMPARE(octetsToString(1024*1024), QString("1 MB"));
  40. QCOMPARE(octetsToString(1024LL*1024*1024), QString("1 GB"));
  41. }
  42. void testLaunchOnStartup()
  43. {
  44. qsrand(QDateTime::currentDateTime().toTime_t());
  45. QString postfix = QString::number(qrand());
  46. const QString appName = QString::fromLatin1("testLaunchOnStartup.%1").arg(postfix);
  47. const QString guiName = "LaunchOnStartup GUI Name";
  48. QVERIFY(hasLaunchOnStartup(appName) == false);
  49. setLaunchOnStartup(appName, guiName, true);
  50. QVERIFY(hasLaunchOnStartup(appName) == true);
  51. setLaunchOnStartup(appName, guiName, false);
  52. QVERIFY(hasLaunchOnStartup(appName) == false);
  53. }
  54. void testToCSyncScheme()
  55. {
  56. QVERIFY(toCSyncScheme("http://example.com/owncloud/") ==
  57. "owncloud://example.com/owncloud/");
  58. QVERIFY(toCSyncScheme("https://example.com/owncloud/") ==
  59. "ownclouds://example.com/owncloud/");
  60. }
  61. void testDurationToDescriptiveString()
  62. {
  63. QLocale::setDefault(QLocale("C"));
  64. //NOTE: in order for the plural to work we would need to load the english translation
  65. quint64 sec = 1000;
  66. quint64 hour = 3600 * sec;
  67. QDateTime current = QDateTime::currentDateTime();
  68. QCOMPARE(durationToDescriptiveString2(0), QString("0 second(s)") );
  69. QCOMPARE(durationToDescriptiveString2(5), QString("0 second(s)") );
  70. QCOMPARE(durationToDescriptiveString2(1000), QString("1 second(s)") );
  71. QCOMPARE(durationToDescriptiveString2(1005), QString("1 second(s)") );
  72. QCOMPARE(durationToDescriptiveString2(56123), QString("56 second(s)") );
  73. QCOMPARE(durationToDescriptiveString2(90*sec), QString("1 minute(s) 30 second(s)") );
  74. QCOMPARE(durationToDescriptiveString2(3*hour), QString("3 hour(s)") );
  75. QCOMPARE(durationToDescriptiveString2(3*hour + 20*sec), QString("3 hour(s)") );
  76. QCOMPARE(durationToDescriptiveString2(3*hour + 70*sec), QString("3 hour(s) 1 minute(s)") );
  77. QCOMPARE(durationToDescriptiveString2(3*hour + 100*sec), QString("3 hour(s) 2 minute(s)") );
  78. QCOMPARE(durationToDescriptiveString2(current.msecsTo(current.addYears(4).addMonths(5).addDays(2).addSecs(23*60*60))),
  79. QString("4 year(s) 5 month(s)") );
  80. QCOMPARE(durationToDescriptiveString2(current.msecsTo(current.addDays(2).addSecs(23*60*60))),
  81. QString("2 day(s) 23 hour(s)") );
  82. QCOMPARE(durationToDescriptiveString1(0), QString("0 second(s)") );
  83. QCOMPARE(durationToDescriptiveString1(5), QString("0 second(s)") );
  84. QCOMPARE(durationToDescriptiveString1(1000), QString("1 second(s)") );
  85. QCOMPARE(durationToDescriptiveString1(1005), QString("1 second(s)") );
  86. QCOMPARE(durationToDescriptiveString1(56123), QString("56 second(s)") );
  87. QCOMPARE(durationToDescriptiveString1(90*sec), QString("2 minute(s)") );
  88. QCOMPARE(durationToDescriptiveString1(3*hour), QString("3 hour(s)") );
  89. QCOMPARE(durationToDescriptiveString1(3*hour + 20*sec), QString("3 hour(s)") );
  90. QCOMPARE(durationToDescriptiveString1(3*hour + 70*sec), QString("3 hour(s)") );
  91. QCOMPARE(durationToDescriptiveString1(3*hour + 100*sec), QString("3 hour(s)") );
  92. QCOMPARE(durationToDescriptiveString1(current.msecsTo(current.addYears(4).addMonths(5).addDays(2).addSecs(23*60*60))),
  93. QString("4 year(s)") );
  94. QCOMPARE(durationToDescriptiveString1(current.msecsTo(current.addDays(2).addSecs(23*60*60))),
  95. QString("3 day(s)") );
  96. }
  97. void testVersionOfInstalledBinary()
  98. {
  99. if( isLinux() ) {
  100. if ( qgetenv("DISPLAY").isEmpty() ) {
  101. // Current requires an X-Server
  102. return;
  103. }
  104. // pass the binary name owncloud to the next call. This brakes branding,
  105. // but branding is not supposed to work with this.
  106. QString ver = versionOfInstalledBinary(BIN_PATH+QLatin1String("/owncloud"));
  107. qDebug() << "Version of installed ownCloud Binary: " << ver;
  108. QVERIFY( !ver.isEmpty());
  109. QRegExp rx( "ownCloud version \\d+\\.\\d+\\.\\d+.+" );
  110. QVERIFY( rx.exactMatch(ver));
  111. } else {
  112. QVERIFY( versionOfInstalledBinary().isEmpty());
  113. }
  114. }
  115. void testTimeAgo()
  116. {
  117. // Both times in local time
  118. QDateTime d1 = QDateTime::fromString("2015-01-24T09:20:30+01:00", Qt::ISODate);
  119. QDateTime d2 = QDateTime::fromString("2015-01-23T09:20:30+01:00", Qt::ISODate);
  120. QString s = timeAgoInWords(d2, d1);
  121. QCOMPARE(s, QLatin1String("1 day(s) ago"));
  122. //
  123. QDateTime earlyTS = QDateTime::fromString("2015-01-24T09:20:30+01:00", Qt::ISODate);
  124. earlyTS.setTimeSpec(Qt::UTC);
  125. QDateTime laterTS = earlyTS.toOffsetFromUtc(3600);
  126. laterTS.setTimeSpec(Qt::UTC);
  127. s = timeAgoInWords(earlyTS, laterTS);
  128. QCOMPARE(s, QLatin1String("1 hour(s) ago"));
  129. earlyTS = QDateTime::currentDateTime();
  130. laterTS.setTimeSpec(Qt::LocalTime);
  131. laterTS.setTimeZone( QTimeZone("Pacific/Easter") );
  132. laterTS = earlyTS;
  133. s = timeAgoInWords(earlyTS, laterTS );
  134. QCOMPARE(s, QLatin1String("now"));
  135. earlyTS = earlyTS.addSecs(-6);
  136. s = timeAgoInWords(earlyTS, laterTS );
  137. QCOMPARE(s, QLatin1String("Less than a minute ago"));
  138. }
  139. };
  140. QTEST_MAIN(TestUtility)
  141. #include "testutility.moc"