コード例 #1
0
LocalMediaStream::LocalMediaStream(const talk_base::scoped_refptr<webrtc::LocalMediaStreamInterface>& pStream)
    : FB::JSAPIAuto("MediaStream")
    , m_label(pStream->label())
    , m_videoTracks(FB::variant_list_of())
    , m_audioTracks(FB::variant_list_of())
{
    registerProperty("label", make_property(this, &LocalMediaStream::get_label));
    registerProperty("videoTracks", make_property(this,&LocalMediaStream::get_videoTracks));
    registerProperty("audioTracks", make_property(this, &LocalMediaStream::get_audioTracks));

    for(int i=0; i<pStream->video_tracks()->count(); i++)
    {
        talk_base::scoped_refptr<webrtc::VideoTrackInterface> pTrack(pStream->video_tracks()->at(i));
        talk_base::scoped_refptr<webrtc::LocalVideoTrackInterface> pTrack_(
            static_cast<webrtc::LocalVideoTrackInterface*>(pTrack.get())
        );

        AddTrack(LocalVideoTrack::Create(pTrack_));
    }

    for(int i=0; i<pStream->audio_tracks()->count(); i++)
    {
        talk_base::scoped_refptr<webrtc::AudioTrackInterface> pTrack(pStream->audio_tracks()->at(i));
        talk_base::scoped_refptr<webrtc::LocalAudioTrackInterface> pTrack_(
            static_cast<webrtc::LocalAudioTrackInterface*>(pTrack.get())
        );

        AddTrack(LocalAudioTrack::Create(pTrack_));
    }
}
コード例 #2
0
TEST_F(SearchQueryParserTest, MultipleTermsMultipleColumnsNegation) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    QScopedPointer<QueryNode> pQuery(
        m_parser.parseQuery("asdf -zxcv", searchColumns, ""));

    TrackPointer pTrack(new TrackInfoObject());
    pTrack->setTitle("asdf zxcv");
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setAlbum("asDF");
    EXPECT_TRUE(pQuery->match(pTrack));
    pTrack->setArtist("zXcV");
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setArtist("");
    pTrack->setAlbum("ASDF ZXCV");
    EXPECT_FALSE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString(
            "((artist LIKE '%asdf%') OR (album LIKE '%asdf%')) "
            "AND NOT ((artist LIKE '%zxcv%') OR (album LIKE '%zxcv%'))")),
        qPrintable(pQuery->toSql()));
}
コード例 #3
0
TEST_F(SearchQueryParserTest, HumanReadableDurationSearchwithRangeFilter) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    QScopedPointer<QueryNode> pQuery(
        m_parser.parseQuery("duration:2:30-3:20", searchColumns, ""));

    TrackPointer pTrack(new TrackInfoObject());
    pTrack->setSampleRate(44100);
    pTrack->setDuration(80);
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setDuration(150);
    EXPECT_TRUE(pQuery->match(pTrack));
    pTrack->setDuration(199);
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("(duration >= 150 AND duration <= 200)")),
        qPrintable(pQuery->toSql()));

    pQuery.reset(m_parser.parseQuery("duration:2:30-200", searchColumns, ""));
    pTrack->setSampleRate(44100);
    pTrack->setDuration(80);
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setDuration(150);
    EXPECT_TRUE(pQuery->match(pTrack));
    pTrack->setDuration(199);
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("(duration >= 150 AND duration <= 200)")),
        qPrintable(pQuery->toSql()));

    pQuery.reset(m_parser.parseQuery("duration:150-200", searchColumns, ""));
    pTrack->setSampleRate(44100);
    pTrack->setDuration(80);
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setDuration(150);
    EXPECT_TRUE(pQuery->match(pTrack));
    pTrack->setDuration(199);
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("(duration >= 150 AND duration <= 200)")),
        qPrintable(pQuery->toSql()));

    pQuery.reset(m_parser.parseQuery("duration:2m30s-3m20s", searchColumns, ""));
    pTrack->setSampleRate(44100);
    pTrack->setDuration(80);
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setDuration(150);
    EXPECT_TRUE(pQuery->match(pTrack));
    pTrack->setDuration(199);
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("(duration >= 150 AND duration <= 200)")),
        qPrintable(pQuery->toSql()));
}
コード例 #4
0
TEST_F(SearchQueryParserTest, TextFilterTrailingSpace) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    auto pQuery(
        m_parser.parseQuery("comment:\"asdf \"", searchColumns, ""));

    TrackPointer pTrack(Track::newTemporary());
    pTrack->setArtist("asdf");
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setComment("test ASDF test");
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("comment LIKE '%asdf _%'")),
        qPrintable(pQuery->toSql()));

    // We allow to search for two consequitve spaces
    auto pQuery2(
        m_parser.parseQuery("comment:\"  \"", searchColumns, ""));

    EXPECT_FALSE(pQuery2->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("comment LIKE '%  _%'")),
        qPrintable(pQuery2->toSql()));
}
コード例 #5
0
ファイル: basetrackplayer.cpp プロジェクト: daschuer/mixxx
TrackPointer BaseTrackPlayerImpl::loadFakeTrack(bool bPlay, double filebpm) {
    TrackPointer pTrack(Track::newTemporary());
    pTrack->setSampleRate(44100);
    // 10 seconds
    pTrack->setDuration(10);
    if (filebpm > 0) {
        pTrack->setBpm(filebpm);
    }

    TrackPointer pOldTrack = m_pLoadedTrack;
    m_pLoadedTrack = pTrack;
    if (m_pLoadedTrack) {
        // Listen for updates to the file's BPM
        connect(m_pLoadedTrack.get(), SIGNAL(bpmUpdated(double)),
                m_pFileBPM.get(), SLOT(set(double)));

        connect(m_pLoadedTrack.get(), SIGNAL(keyUpdated(double)),
                m_pKey.get(), SLOT(set(double)));

        // Listen for updates to the file's Replay Gain
        connect(m_pLoadedTrack.get(), SIGNAL(ReplayGainUpdated(mixxx::ReplayGain)),
                this, SLOT(slotSetReplayGain(mixxx::ReplayGain)));
    }

    // Request a new track from EngineBuffer
    EngineBuffer* pEngineBuffer = m_pChannel->getEngineBuffer();
    pEngineBuffer->loadFakeTrack(pTrack, bPlay);

    // await slotTrackLoaded()/slotLoadFailed()
    emit(loadingTrack(pTrack, pOldTrack));

    return pTrack;
}
コード例 #6
0
ファイル: dlgtrackinfo.cpp プロジェクト: Adna1206/mixxx
void DlgTrackInfo::reloadTrackMetadata() {
    if (m_pLoadedTrack) {
        TrackPointer pTrack(new TrackInfoObject(m_pLoadedTrack->getLocation(),
                                                m_pLoadedTrack->getSecurityToken()));
        populateFields(pTrack);
    }
}
コード例 #7
0
ファイル: soundproxy_test.cpp プロジェクト: tarche/mixxx
TEST_F(SoundSourceProxyTest, readArtist) {
    TrackPointer pTrack(new TrackInfoObject(
            QDir::currentPath().append("/src/test/id3-test-data/artist.mp3")));
    SoundSourceProxy proxy(pTrack);
    Mixxx::TrackMetadata trackMetadata;
    EXPECT_EQ(OK, proxy.parseTrackMetadata(&trackMetadata));
    EXPECT_EQ("Test Artist", trackMetadata.getArtist());
}
コード例 #8
0
ファイル: soundproxy_test.cpp プロジェクト: 22degrees/mixxx
TEST_F(SoundSourceProxyTest, readArtist) {
    TrackPointer pTrack(Track::newTemporary(
            kTestDir.absoluteFilePath("artist.mp3")));
    SoundSourceProxy proxy(pTrack);
    Mixxx::TrackMetadata trackMetadata;
    EXPECT_EQ(OK, proxy.parseTrackMetadata(&trackMetadata));
    EXPECT_EQ("Test Artist", trackMetadata.getArtist());
}
コード例 #9
0
ファイル: coverartutils.cpp プロジェクト: chegestar/mixxx
//static
QImage CoverArtUtils::extractEmbeddedCover(
        const QFileInfo& fileInfo,
        SecurityTokenPointer pToken) {
    // TODO(uklotzde): Resolve the TrackPointer from the track cache
    // to avoid accessing reading the file while it is written.
    TrackPointer pTrack(
            Track::newTemporary(fileInfo, pToken));
    return SoundSourceProxy(pTrack).parseCoverImage();
}
コード例 #10
0
ファイル: soundproxy_test.cpp プロジェクト: 22degrees/mixxx
TEST_F(SoundSourceProxyTest, TOAL_TPE2) {
    TrackPointer pTrack(Track::newTemporary(
            kTestDir.absoluteFilePath("TOAL_TPE2.mp3")));
    SoundSourceProxy proxy(pTrack);
    Mixxx::TrackMetadata trackMetadata;
    EXPECT_EQ(OK, proxy.parseTrackMetadata(&trackMetadata));
    EXPECT_EQ("TITLE2", trackMetadata.getArtist());
    EXPECT_EQ("ARTIST", trackMetadata.getAlbum());
    EXPECT_EQ("TITLE", trackMetadata.getAlbumArtist());
}
コード例 #11
0
ファイル: searchqueryparsertest.cpp プロジェクト: Mauru/mixxx
TEST_F(SearchQueryParserTest, EmptySearch) {
    QScopedPointer<QueryNode> pQuery(
        m_parser.parseQuery("", QStringList(), ""));

    TrackPointer pTrack(new TrackInfoObject());
    EXPECT_FALSE(pQuery->match(pTrack));

    EXPECT_STREQ(qPrintable(QString("")),
                 qPrintable(pQuery->toSql()));
}
コード例 #12
0
ファイル: soundproxy_test.cpp プロジェクト: tarche/mixxx
TEST_F(SoundSourceProxyTest, TOAL_TPE2) {
    TrackPointer pTrack(new TrackInfoObject(
            QDir::currentPath().append("/src/test/id3-test-data/TOAL_TPE2.mp3")));
    SoundSourceProxy proxy(pTrack);
    Mixxx::TrackMetadata trackMetadata;
    EXPECT_EQ(OK, proxy.parseTrackMetadata(&trackMetadata));
    EXPECT_EQ("TITLE2", trackMetadata.getArtist());
    EXPECT_EQ("ARTIST", trackMetadata.getAlbum());
    EXPECT_EQ("TITLE", trackMetadata.getAlbumArtist());
}
コード例 #13
0
TEST_F(SearchQueryParserTest, EmptySearch) {
    auto pQuery(
        m_parser.parseQuery("", QStringList(), ""));

    // An empty query matches all tracks.
    TrackPointer pTrack(Track::newTemporary());
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(qPrintable(QString("")),
                 qPrintable(pQuery->toSql()));
}
コード例 #14
0
ファイル: importfilestask.cpp プロジェクト: tarche/mixxx
void ImportFilesTask::run() {
    ScopedTimer timer("ImportFilesTask::run");
    foreach (const QFileInfo& file, m_filesToImport) {
        // If a flag was raised telling us to cancel the library scan then stop.
        if (m_scannerGlobal->shouldCancel()) {
            setSuccess(false);
            return;
        }

        QString filePath = file.filePath();
        //qDebug() << "ImportFilesTask::run" << filePath;

        // If the file does not exist in the database then add it. If it
        // does then it is either in the user's library OR the user has
        // "removed" the track via "Right-Click -> Remove". These tracks
        // stay in the library, but their mixxx_deleted column is 1.
        if (m_scannerGlobal->trackExistsInDatabase(filePath)) {
            // If the track is in the database, mark it as existing. This code gets
            // executed when other files in the same directory have changed (the
            // directory hash has changed).
            emit(trackExists(filePath));
        } else {
            // Parse the track including cover art from metadata. This is a new
            // (never before seen) track so it is safe to parse cover art
            // without checking if we have cover art that is USER_SELECTED. If
            // this changes in the future you MUST check that the cover art is
            // not USER_SELECTED first.
            TrackPointer pTrack(
                new TrackInfoObject(filePath, m_pToken));
            SoundSourceProxy(pTrack).loadTrackMetadataAndCoverArt();

            // If cover art is not found in the track metadata, populate from
            // possibleCovers.
            // This is a new (never before seen) track so it is safe
            // to parse cover art without checking if we have cover art
            // that is USER_SELECTED. If this changes in the future you
            // MUST check that the cover art is not USER_SELECTED first.
            if (pTrack->getCoverArt().image.isNull()) {
                CoverArt art = CoverArtUtils::selectCoverArtForTrack(
                    pTrack.data(), m_possibleCovers);
                if (!art.image.isNull()) {
                    pTrack->setCoverArt(art);
                }
            }

            emit(addNewTrack(pTrack));
        }
    }
    // Insert or update the hash in the database.
    emit(directoryHashedAndScanned(m_dirPath, !m_prevHashExists, m_newHash));
    setSuccess(true);
}
コード例 #15
0
TEST_F(SearchQueryParserTest, NumericFilterEmpty) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    QScopedPointer<QueryNode> pQuery(
        m_parser.parseQuery("bpm:", searchColumns, ""));

    TrackPointer pTrack(new TrackInfoObject());
    pTrack->setSampleRate(44100);
    pTrack->setBpm(127);
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("")),
        qPrintable(pQuery->toSql()));
}
コード例 #16
0
TEST_F(SearchQueryParserTest, NumericFilterOperators) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    QScopedPointer<QueryNode> pQuery(
        m_parser.parseQuery("bpm:>127.12", searchColumns, ""));

    TrackPointer pTrack(new TrackInfoObject());
    pTrack->setSampleRate(44100);
    pTrack->setBpm(127.12);
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setBpm(127.13);
    EXPECT_TRUE(pQuery->match(pTrack));
    EXPECT_STREQ(
        qPrintable(QString("(bpm > 127.12)")),
        qPrintable(pQuery->toSql()));


    pQuery.reset(m_parser.parseQuery("bpm:>=127.12", searchColumns, ""));
    pTrack->setBpm(127.11);
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setBpm(127.12);
    EXPECT_TRUE(pQuery->match(pTrack));
    EXPECT_STREQ(
        qPrintable(QString("(bpm >= 127.12)")),
        qPrintable(pQuery->toSql()));

    pQuery.reset(m_parser.parseQuery("bpm:<127.12", searchColumns, ""));
    pTrack->setBpm(127.12);
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setBpm(127.11);
    EXPECT_TRUE(pQuery->match(pTrack));
    EXPECT_STREQ(
        qPrintable(QString("(bpm < 127.12)")),
        qPrintable(pQuery->toSql()));

    pQuery.reset(m_parser.parseQuery("bpm:<=127.12", searchColumns, ""));
    pTrack->setBpm(127.13);
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setBpm(127.12);
    EXPECT_TRUE(pQuery->match(pTrack));
    EXPECT_STREQ(
        qPrintable(QString("(bpm <= 127.12)")),
        qPrintable(pQuery->toSql()));
}
コード例 #17
0
TEST_F(SearchQueryParserTest, TextFilterEmpty) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    // An empty argument should pass everything.
    QScopedPointer<QueryNode> pQuery(
        m_parser.parseQuery("comment:", searchColumns, ""));

    TrackPointer pTrack(new TrackInfoObject());
    pTrack->setComment("test ASDF test");
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("")),
        qPrintable(pQuery->toSql()));
}
コード例 #18
0
TEST_F(SearchQueryParserTest, OneTermOneColumn) {
    QStringList searchColumns;
    searchColumns << "artist";

    auto pQuery(
        m_parser.parseQuery("asdf", searchColumns, ""));

    TrackPointer pTrack(Track::newTemporary());
    pTrack->setTitle("testASDFtest");
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setArtist("testASDFtest");
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("artist LIKE '%asdf%'")),
        qPrintable(pQuery->toSql()));
}
コード例 #19
0
TEST_F(SearchQueryParserTest, MultipleTermsOneColumn) {
    QStringList searchColumns;
    searchColumns << "artist";

    QScopedPointer<QueryNode> pQuery(
        m_parser.parseQuery("asdf zxcv", searchColumns, ""));

    TrackPointer pTrack(new TrackInfoObject());
    pTrack->setTitle("test zXcV test");
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setArtist("test zXcV test asDf");
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("(artist LIKE '%asdf%') AND (artist LIKE '%zxcv%')")),
        qPrintable(pQuery->toSql()));
}
コード例 #20
0
TEST_F(SearchQueryParserTest, NumericFilterOperators) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    auto pQuery(
        m_parser.parseQuery("bpm:>127.12", searchColumns, ""));

    TrackPointer pTrack(Track::newTemporary());
    pTrack->setSampleRate(44100);
    pTrack->setBpm(127.12);
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setBpm(127.13);
    EXPECT_TRUE(pQuery->match(pTrack));
    EXPECT_STREQ(
        qPrintable(QString("bpm > 127.12")),
        qPrintable(pQuery->toSql()));


    pQuery = m_parser.parseQuery("bpm:>=127.12", searchColumns, "");
    pTrack->setBpm(127.11);
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setBpm(127.12);
    EXPECT_TRUE(pQuery->match(pTrack));
    EXPECT_STREQ(
        qPrintable(QString("bpm >= 127.12")),
        qPrintable(pQuery->toSql()));

    pQuery = m_parser.parseQuery("bpm:<127.12", searchColumns, "");
    pTrack->setBpm(127.12);
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setBpm(127.11);
    EXPECT_TRUE(pQuery->match(pTrack));
    EXPECT_STREQ(
        qPrintable(QString("bpm < 127.12")),
        qPrintable(pQuery->toSql()));

    pQuery = m_parser.parseQuery("bpm:<=127.12", searchColumns, "");
    pTrack->setBpm(127.13);
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setBpm(127.12);
    EXPECT_TRUE(pQuery->match(pTrack));
    EXPECT_STREQ(
        qPrintable(QString("bpm <= 127.12")),
        qPrintable(pQuery->toSql()));
}
コード例 #21
0
TEST_F(SearchQueryParserTest, ExtraFilterAppended) {
    QStringList searchColumns;
    searchColumns << "artist";

    QScopedPointer<QueryNode> pQuery(
        m_parser.parseQuery("asdf", searchColumns, "1 > 2"));

    TrackPointer pTrack(new TrackInfoObject());
    pTrack->setArtist("zxcv");
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setArtist("asdf");
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("(1 > 2) AND (artist LIKE '%asdf%')")),
        qPrintable(pQuery->toSql()));
}
コード例 #22
0
TEST_F(SearchQueryParserTest, OneTermMultipleColumnsNegation) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    QScopedPointer<QueryNode> pQuery(
        m_parser.parseQuery("-asdf", searchColumns, ""));

    TrackPointer pTrack(new TrackInfoObject());
    pTrack->setTitle("testASDFtest");
    EXPECT_TRUE(pQuery->match(pTrack));
    pTrack->setAlbum("testASDFtest");
    EXPECT_FALSE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("NOT ((artist LIKE '%asdf%') OR (album LIKE '%asdf%'))")),
        qPrintable(pQuery->toSql()));
}
コード例 #23
0
TEST_F(SearchQueryParserTest, TextFilterQuotes) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    auto pQuery(
        m_parser.parseQuery("comment:\"asdf ewe\"", searchColumns, ""));

    TrackPointer pTrack(Track::newTemporary());
    pTrack->setArtist("asdf");
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setComment("test ASDF ewetest");
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("comment LIKE '%asdf ewe%'")),
        qPrintable(pQuery->toSql()));
}
コード例 #24
0
TEST_F(SearchQueryParserTest, TextFilterNegation) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    QScopedPointer<QueryNode> pQuery(
        m_parser.parseQuery("-comment: asdf", searchColumns, ""));

    TrackPointer pTrack(new TrackInfoObject());
    pTrack->setArtist("asdf");
    EXPECT_TRUE(pQuery->match(pTrack));
    pTrack->setComment("test ASDF test");
    EXPECT_FALSE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("NOT (comment LIKE '%asdf%')")),
        qPrintable(pQuery->toSql()));
}
コード例 #25
0
TEST_F(SearchQueryParserTest, TextFilterQuote_NoEndQuoteTakesWholeQuery) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    QScopedPointer<QueryNode> pQuery(
        m_parser.parseQuery("comment:\"asdf zxcv qwer", searchColumns, ""));

    TrackPointer pTrack(new TrackInfoObject());
    pTrack->setArtist("asdf zxcv qwer");
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setComment("test ASDF zxcv qwer test");
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("(comment LIKE '%asdf zxcv qwer%')")),
        qPrintable(pQuery->toSql()));
}
コード例 #26
0
TEST_F(SearchQueryParserTest, TextFilterAllowsSpace) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    auto pQuery(
        m_parser.parseQuery("comment: asdf", searchColumns, ""));

    TrackPointer pTrack(new TrackInfoObject());
    pTrack->setArtist("asdf");
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setComment("test ASDF test");
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("comment LIKE '%asdf%'")),
        qPrintable(pQuery->toSql()));
}
コード例 #27
0
TEST_F(SearchQueryParserTest, NumericFilterNegation) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    auto pQuery(
        m_parser.parseQuery("-bpm:127.12", searchColumns, ""));

    TrackPointer pTrack(Track::newTemporary());
    pTrack->setSampleRate(44100);
    pTrack->setBpm(127);
    EXPECT_TRUE(pQuery->match(pTrack));
    pTrack->setBpm(127.12);
    EXPECT_FALSE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("NOT (bpm = 127.12)")),
        qPrintable(pQuery->toSql()));
}
コード例 #28
0
TEST_F(SearchQueryParserTest, NumericFilterAllowsSpace) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    auto pQuery(
        m_parser.parseQuery("bpm: 127.12", searchColumns, ""));

    TrackPointer pTrack(new TrackInfoObject());
    pTrack->setSampleRate(44100);
    pTrack->setBpm(127);
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setBpm(127.12);
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("bpm = 127.12")),
        qPrintable(pQuery->toSql()));
}
コード例 #29
0
ファイル: coverartcache_test.cpp プロジェクト: aalex/mixxx
    void loadCoverFromMetadata(QString trackLocation) {
        CoverInfo info;
        info.type = CoverInfo::METADATA;
        info.source = CoverInfo::GUESSED;
        info.coverLocation = QString();
        info.trackLocation = trackLocation;

        CoverArtCache::FutureResult res;
        res = CoverArtCache::loadCover(info, NULL, 0, false);
        EXPECT_QSTRING_EQ(QString(), res.cover.coverLocation);
        EXPECT_EQ(info.hash, res.cover.hash);

        SecurityTokenPointer securityToken = Sandbox::openSecurityToken(
            QDir(trackLocation), true);
        TrackPointer pTrack(Track::newTemporary(trackLocation, securityToken));
        SoundSourceProxy proxy(pTrack);
        QImage img(SoundSourceProxy(pTrack).parseCoverImage());
        EXPECT_FALSE(img.isNull());
        EXPECT_EQ(img, res.cover.image);
    }
コード例 #30
0
TEST_F(SearchQueryParserTest, NumericRangeFilter) {
    QStringList searchColumns;
    searchColumns << "artist"
                  << "album";

    QScopedPointer<QueryNode> pQuery(
        m_parser.parseQuery("bpm:127.12-129", searchColumns, ""));

    TrackPointer pTrack(new TrackInfoObject());
    pTrack->setSampleRate(44100);
    pTrack->setBpm(125);
    EXPECT_FALSE(pQuery->match(pTrack));
    pTrack->setBpm(127.12);
    EXPECT_TRUE(pQuery->match(pTrack));
    pTrack->setBpm(129);
    EXPECT_TRUE(pQuery->match(pTrack));

    EXPECT_STREQ(
        qPrintable(QString("(bpm >= 127.12 AND bpm <= 129)")),
        qPrintable(pQuery->toSql()));
}