Fixed a bug in digitalCompare(). (#902)

* Improved file name sort in cloud file browser.

* Improved file name digital sort in cloud file browser.

* Added some unittest cases for digitalCompare().

* Fixed a bug in digitalCompare().

* Added some unittest cases for digitalCompare().
This commit is contained in:
Lingxiang Pan 2017-05-06 16:50:11 +08:00 committed by Shuai Lin
parent 774877f01b
commit 6b7c59fb67
3 changed files with 52 additions and 0 deletions

View file

@ -803,6 +803,10 @@ int digitalCompare(const QString &left, const QString &right)
int ret = 0;
if (left.compare(right) == 0)
return ret;
if (left.size() == 0)
return -1;
if (right.size() == 0)
return 1;
QString left_sub = left;
QString right_sub = right;

View file

@ -94,4 +94,5 @@ QByteArray buildFormData(const QHash<QString, QString>& params);
int digitalCompare(const QString &left, const QString &right);
bool shouldUseFramelessWindow();
#endif

View file

@ -1,8 +1,18 @@
#include "test_utils.h"
#include <QtTest/QtTest>
#include <algorithm> // std::sort
#include "../src/utils/utils.h"
namespace {
bool digitalCompareFileByName(const QString& a, const QString& b)
{
return digitalCompare(a, b) < 0 ? true : false;
}
} // namespace
void Utils::testReadableFileSize() {
QCOMPARE(::readableFileSize(0), QString("0B"));
QCOMPARE(::readableFileSize(1000), QString("1KB"));
@ -43,11 +53,48 @@ void Utils::testIncludeUrlParams() {
}
void Utils::testDigitalCompare() {
QList<QString> list;
list << "05 copy 2.ico" << "05 copy 3.ico"
<< "05 copy.ico" << "05.ico"
<< "34th TOPIK Papers - Advanced level 2.pdf"
<< "34th TOPIK Papers - Advanced level.pdf"
<< "A1/" << "B1/" << "a2/" << "b2/"
<< "IMG_20140523_171911 - 副本.jpg"
<< "IMG_20140523_171911.jpg"
<< "MIT18_06SCF11_Ses3.1sum.pdf" << "Paraffin.exe"
<< "Screen Shot 2016-08-13 at 11.42.35 PM.png"
<< "Screen Shot 2016-09-02 at 4.47.12 PM.png"
<< "WixDependencyExtension.dll"
<< "darice - 副本 - 副本.cub"
<< "darice - 副本.cub" << "darice.cub"
<< "depends.chm" << "depends.exe"
<< "dokan-build - 副本.log" << "dokan-build.log"
<< "dokan-build copy 2 - 副本(2).log"
<< "dokan-build copy 2 - 副本.log"
<< "dokan-build copy 2.log"
<< "dokan-build copy 3.log"
<< "dokan-build copy.log"
<< "heat.exe" << "heat.exe.config"
<< "new copy.txt" << "new.txt"
<< "require(1).js" << "require.js"
<< "subfolder1/" << "untitled folder/"
<< "whole-stage-codegen.pdf" << "wix.dll"
<< "x copy 10.md" << "x copy.md"
<< "x copy 2.md" << "x copy 3.md"
<< "新建文本文档.txt"
<< "新建文本文档 copy.txt"
<< "新建文本文档 - 副本.txt"
<< "新建文本文档(2).txt"
<< "新建文本文档(3).txt";
std::sort(list.begin(), list.end(), digitalCompareFileByName);
QCOMPARE(::digitalCompare("9", "9"), 0);
QCOMPARE(::digitalCompare("aa9aa", "aa9aa"), 0);
QCOMPARE(::digitalCompare("99a99", "99a99"), 0);
QCOMPARE(::digitalCompare("9", "11"), -2);
QCOMPARE(::digitalCompare("1.9", "1.11"), -2);
QCOMPARE(::digitalCompare("1 9", "1 11"), -2);
QCOMPARE(::digitalCompare("1abc1", "1abc1.abc"), -1);
QCOMPARE(::digitalCompare("1.1.1.1.9", "1.1.1.1.11"), -2);
QCOMPARE(::digitalCompare("a9", "a11"), -2);
QCOMPARE(::digitalCompare("a9aaa", "a11aaa"), -2);