TEST_F( FoldersNoDiscover, SearchMedia ) { auto newFolder = mock::FileSystemFactory::Root + "empty/"; fsMock->addFolder( newFolder ); ml->discover( mock::FileSystemFactory::Root ); bool discovered = cbMock->waitDiscovery(); ASSERT_TRUE( discovered ); enforceFakeMediaTypes( ml.get() ); auto folder = ml->folder( mock::FileSystemFactory::Root ); ASSERT_NE( nullptr, folder ); auto videosQuery = folder->searchMedia( "video", IMedia::Type::Video, nullptr ); ASSERT_EQ( 1u, videosQuery->count() ); auto videos = videosQuery->all(); ASSERT_EQ( 1u, videos.size() ); auto audioQuery = folder->searchMedia( "audio", IMedia::Type::Audio, nullptr ); ASSERT_EQ( 1u, audioQuery->count() ); auto audios = audioQuery->all(); ASSERT_EQ( 1u, audios.size() ); QueryParameters params; params.sort = SortingCriteria::Alpha; params.desc = true; auto allTypeQuery = folder->searchMedia( "video", IMedia::Type::Unknown, ¶ms ); ASSERT_EQ( 1u, allTypeQuery->count() ); auto all = allTypeQuery->all(); ASSERT_EQ( 1u, all.size() ); }
int MediaLibrary::listPlaylist( int listQuery, const medialibrary::QueryParameters* paramsPtr, const char* pattern, uint32_t nbItems, uint32_t offset, va_list args ) { switch( listQuery ) { case VLC_ML_LIST_PLAYLISTS: case VLC_ML_COUNT_PLAYLISTS: { medialibrary::Query<medialibrary::IPlaylist> query; if ( pattern != nullptr ) query = m_ml->searchPlaylists( pattern, paramsPtr ); else query = m_ml->playlists( paramsPtr ); if ( query == nullptr ) return VLC_EGENERIC; switch ( listQuery ) { case VLC_ML_LIST_PLAYLISTS: *va_arg( args, vlc_ml_playlist_list_t** ) = ml_convert_list<vlc_ml_playlist_list_t, vlc_ml_playlist_t>( query->items( nbItems, offset ) ); return VLC_SUCCESS; case VLC_ML_COUNT_PLAYLISTS: *va_arg( args, size_t* ) = query->count(); return VLC_SUCCESS; default: vlc_assert_unreachable(); } } case VLC_ML_LIST_PLAYLIST_MEDIA: case VLC_ML_COUNT_PLAYLIST_MEDIA: { auto playlist = m_ml->playlist( va_arg( args, int64_t ) ); if ( playlist == nullptr ) return VLC_EGENERIC; medialibrary::Query<medialibrary::IMedia> query; if ( pattern != nullptr ) query = playlist->searchMedia( pattern, paramsPtr ); else query = playlist->media(); if ( query == nullptr ) return VLC_EGENERIC; switch ( listQuery ) { case VLC_ML_LIST_PLAYLIST_MEDIA: *va_arg( args, vlc_ml_media_list_t**) = ml_convert_list<vlc_ml_media_list_t, vlc_ml_media_t>( query->items( nbItems, offset ) ); return VLC_SUCCESS; case VLC_ML_COUNT_PLAYLIST_MEDIA: *va_arg( args, size_t* ) = query->count(); return VLC_SUCCESS; default: vlc_assert_unreachable(); } } default: vlc_assert_unreachable(); } }