summaryrefslogtreecommitdiffstats
path: root/src/test/searchqueryparsertest.cpp
diff options
context:
space:
mode:
authorRJ Ryan <rryan@mixxx.org>2014-01-12 17:10:36 -0500
committerRJ Ryan <rryan@mixxx.org>2014-01-12 17:10:36 -0500
commitf70570c416b4f10fe8575e54a03eb0474d2c7d1a (patch)
tree3b1781b24401ff8dc84dda765e94fb07d8d02470 /src/test/searchqueryparsertest.cpp
parent028584b3da5c11788022c75c235e428b21e9c2ee (diff)
Refactor SearchQueryParser to handle matching of dirty tracks in BaseTrackCache.
Diffstat (limited to 'src/test/searchqueryparsertest.cpp')
-rw-r--r--src/test/searchqueryparsertest.cpp134
1 files changed, 98 insertions, 36 deletions
diff --git a/src/test/searchqueryparsertest.cpp b/src/test/searchqueryparsertest.cpp
index 6ca23a9b0d..3bc9ce79a3 100644
--- a/src/test/searchqueryparsertest.cpp
+++ b/src/test/searchqueryparsertest.cpp
@@ -28,146 +28,208 @@ class SearchQueryParserTest : public testing::Test {
};
TEST_F(SearchQueryParserTest, EmptySearch) {
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("", QStringList(), ""));
EXPECT_STREQ(qPrintable(QString("")),
- qPrintable(m_parser.parseQuery("", QStringList(), "")));
+ qPrintable(pQuery->toSql()));
}
TEST_F(SearchQueryParserTest, OneTermOneColumn) {
QStringList searchColumns;
searchColumns << "artist";
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("asdf", searchColumns, ""));
+
EXPECT_STREQ(
- qPrintable(QString("WHERE ((artist LIKE '%asdf%'))")),
- qPrintable(m_parser.parseQuery("asdf", searchColumns, "")));
+ qPrintable(QString("(artist LIKE '%asdf%')")),
+ qPrintable(pQuery->toSql()));
}
TEST_F(SearchQueryParserTest, OneTermMultipleColumns) {
QStringList searchColumns;
searchColumns << "artist"
<< "album";
+
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("asdf", searchColumns, ""));
+
EXPECT_STREQ(
- qPrintable(QString("WHERE ((artist LIKE '%asdf%') OR (album LIKE '%asdf%'))")),
- qPrintable(m_parser.parseQuery("asdf", searchColumns, "")));
+ qPrintable(QString("((artist LIKE '%asdf%') OR (album LIKE '%asdf%'))")),
+ qPrintable(pQuery->toSql()));
}
TEST_F(SearchQueryParserTest, MultipleTermsOneColumn) {
QStringList searchColumns;
searchColumns << "artist";
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("asdf zxcv", searchColumns, ""));
+
EXPECT_STREQ(
- qPrintable(QString("WHERE ((artist LIKE '%asdf%')) AND ((artist LIKE '%zxcv%'))")),
- qPrintable(m_parser.parseQuery("asdf zxcv", searchColumns, "")));
+ qPrintable(QString("(artist LIKE '%asdf%') AND (artist LIKE '%zxcv%')")),
+ qPrintable(pQuery->toSql()));
}
TEST_F(SearchQueryParserTest, MultipleTermsMultipleColumns) {
QStringList searchColumns;
searchColumns << "artist"
<< "album";
+
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("asdf zxcv", searchColumns, ""));
+
EXPECT_STREQ(
qPrintable(QString(
- "WHERE ((artist LIKE '%asdf%') OR (album LIKE '%asdf%')) "
+ "((artist LIKE '%asdf%') OR (album LIKE '%asdf%')) "
"AND ((artist LIKE '%zxcv%') OR (album LIKE '%zxcv%'))")),
- qPrintable(m_parser.parseQuery("asdf zxcv", searchColumns, "")));
+ qPrintable(pQuery->toSql()));
}
TEST_F(SearchQueryParserTest, TextFilter) {
QStringList searchColumns;
searchColumns << "artist"
<< "album";
+
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("comment:asdf", searchColumns, ""));
+
EXPECT_STREQ(
- qPrintable(QString("WHERE (comment LIKE '%asdf%')")),
- qPrintable(m_parser.parseQuery("comment:asdf", searchColumns, "")));
+ qPrintable(QString("(comment LIKE '%asdf%')")),
+ qPrintable(pQuery->toSql()));
}
TEST_F(SearchQueryParserTest, TextFilterQuote) {
QStringList searchColumns;
searchColumns << "artist"
<< "album";
+
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("comment:\"asdf zxcv\"", searchColumns, ""));
+
EXPECT_STREQ(
- qPrintable(QString("WHERE (comment LIKE '%asdf zxcv%')")),
- qPrintable(m_parser.parseQuery("comment:\"asdf zxcv\"", searchColumns, "")));
+ qPrintable(QString("(comment LIKE '%asdf zxcv%')")),
+ qPrintable(pQuery->toSql()));
}
TEST_F(SearchQueryParserTest, TextFilterQuote_NoEndQuoteTakesWholeQuery) {
QStringList searchColumns;
searchColumns << "artist"
<< "album";
+
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("comment:\"asdf zxcv qwer", searchColumns, ""));
+
EXPECT_STREQ(
- qPrintable(QString("WHERE (comment LIKE '%asdf zxcv qwer%')")),
- qPrintable(m_parser.parseQuery("comment:\"asdf zxcv qwer", searchColumns, "")));
+ qPrintable(QString("(comment LIKE '%asdf zxcv qwer%')")),
+ qPrintable(pQuery->toSql()));
}
TEST_F(SearchQueryParserTest, TextFilterAllowsSpace) {
QStringList searchColumns;
searchColumns << "artist"
<< "album";
+
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("comment: asdf", searchColumns, ""));
+
EXPECT_STREQ(
- qPrintable(QString("WHERE (comment LIKE '%asdf%')")),
- qPrintable(m_parser.parseQuery("comment: asdf", searchColumns, "")));
+ qPrintable(QString("(comment LIKE '%asdf%')")),
+ qPrintable(pQuery->toSql()));
}
TEST_F(SearchQueryParserTest, NumericFilter) {
QStringList searchColumns;
searchColumns << "artist"
<< "album";
+
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("bpm:127.12", searchColumns, ""));
+
EXPECT_STREQ(
- qPrintable(QString("WHERE (bpm = 127.12)")),
- qPrintable(m_parser.parseQuery("bpm:127.12", searchColumns, "")));
+ qPrintable(QString("(bpm = 127.12)")),
+ qPrintable(pQuery->toSql()));
}
TEST_F(SearchQueryParserTest, NumericFilterAllowsSpace) {
QStringList searchColumns;
searchColumns << "artist"
<< "album";
+
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("bpm: 127.12", searchColumns, ""));
+
EXPECT_STREQ(
- qPrintable(QString("WHERE (bpm = 127.12)")),
- qPrintable(m_parser.parseQuery("bpm: 127.12", searchColumns, "")));
+ qPrintable(QString("(bpm = 127.12)")),
+ qPrintable(pQuery->toSql()));
}
TEST_F(SearchQueryParserTest, NumericFilterOperators) {
QStringList searchColumns;
searchColumns << "artist"
<< "album";
+
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("bpm:>127.12", searchColumns, ""));
EXPECT_STREQ(
- qPrintable(QString("WHERE (bpm > 127.12)")),
- qPrintable(m_parser.parseQuery("bpm:>127.12", searchColumns, "")));
+ qPrintable(QString("(bpm > 127.12)")),
+ qPrintable(pQuery->toSql()));
+
+
+ pQuery.reset(m_parser.parseQuery("bpm:>=127.12", searchColumns, ""));
EXPECT_STREQ(
- qPrintable(QString("WHERE (bpm >= 127.12)")),
- qPrintable(m_parser.parseQuery("bpm:>=127.12", searchColumns, "")));
+ qPrintable(QString("(bpm >= 127.12)")),
+ qPrintable(pQuery->toSql()));
+
+ pQuery.reset(m_parser.parseQuery("bpm:<127.12", searchColumns, ""));
EXPECT_STREQ(
- qPrintable(QString("WHERE (bpm < 127.12)")),
- qPrintable(m_parser.parseQuery("bpm:<127.12", searchColumns, "")));
+ qPrintable(QString("(bpm < 127.12)")),
+ qPrintable(pQuery->toSql()));
+
+ pQuery.reset(m_parser.parseQuery("bpm:<=127.12", searchColumns, ""));
EXPECT_STREQ(
- qPrintable(QString("WHERE (bpm <= 127.12)")),
- qPrintable(m_parser.parseQuery("bpm:<=127.12", searchColumns, "")));
+ qPrintable(QString("(bpm <= 127.12)")),
+ qPrintable(pQuery->toSql()));
}
TEST_F(SearchQueryParserTest, NumericRangeFilter) {
QStringList searchColumns;
searchColumns << "artist"
<< "album";
+
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("bpm:127.12-129", searchColumns, ""));
+
EXPECT_STREQ(
- qPrintable(QString("WHERE (bpm >= 127.12 AND bpm <= 129)")),
- qPrintable(m_parser.parseQuery("bpm:127.12-129", searchColumns, "")));
+ qPrintable(QString("(bpm >= 127.12 AND bpm <= 129)")),
+ qPrintable(pQuery->toSql()));
}
TEST_F(SearchQueryParserTest, MultipleFilters) {
QStringList searchColumns;
searchColumns << "artist"
<< "title";
+
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("bpm:127.12-129 artist:\"com truise\" Colorvision",
+ searchColumns, ""));
+
EXPECT_STREQ(
- qPrintable(QString("WHERE (bpm >= 127.12 AND bpm <= 129) AND "
+ qPrintable(QString("(bpm >= 127.12 AND bpm <= 129) AND "
"((artist LIKE '%com truise%') OR (album_artist LIKE '%com truise%')) AND "
"((artist LIKE '%Colorvision%') OR (title LIKE '%Colorvision%'))")),
- qPrintable(m_parser.parseQuery("bpm:127.12-129 artist:\"com truise\" Colorvision",
- searchColumns, "")));
+ qPrintable(pQuery->toSql()));
}
TEST_F(SearchQueryParserTest, ExtraFilterAppended) {
QStringList searchColumns;
searchColumns << "artist";
+
+ QScopedPointer<QueryNode> pQuery(
+ m_parser.parseQuery("asdf", searchColumns, "1 > 2"));
+
EXPECT_STREQ(
- qPrintable(QString("WHERE (1 > 2) AND ((artist LIKE '%asdf%'))")),
- qPrintable(m_parser.parseQuery("asdf", searchColumns, "1 > 2")));
+ qPrintable(QString("(1 > 2) AND (artist LIKE '%asdf%')")),
+ qPrintable(pQuery->toSql()));
}