Files
SpotiFLAC-Mobile/test/fixtures/native_library_contract.json
T
zarzet d1de833184 perf(library): index scans and snapshots with native SQLite workers
Move full and incremental ingestion, source snapshots, path keys, and download exclusion to native transactions. Preserve schema 17, FTS, WAL coordination, cancellation, and Android SAF timestamp backfill.
2026-10-06 23:29:33 +07:00

992 lines
33 KiB
JSON

{
"rows": [
{
"input": {
"id": "row",
"trackName": " CAFÉ İ 💫 ",
"artistName": "Artist",
"albumName": "Album",
"filePath": "/music/a.flac",
"scannedAt": "2026-10-06T12:00:00.000Z"
},
"expected": {
"id": "row",
"track_name": " CAFÉ İ 💫 ",
"artist_name": "Artist",
"album_name": "Album",
"album_artist": null,
"file_path": "/music/a.flac",
"cover_path": null,
"scanned_at": "2026-10-06T12:00:00.000Z",
"file_mod_time": null,
"isrc": null,
"track_number": null,
"total_tracks": null,
"disc_number": null,
"total_discs": null,
"duration": null,
"release_date": null,
"bit_depth": null,
"sample_rate": null,
"bitrate": null,
"genre": null,
"composer": null,
"label": null,
"copyright": null,
"format": null,
"source_id": "source",
"explicit": 0,
"has_lyrics": 0,
"has_replaygain": 0,
"audio_metadata_scan_version": 4,
"track_name_norm": "café i 💫",
"artist_name_norm": "artist",
"album_name_norm": "album",
"album_artist_norm": "artist",
"match_key": "café i 💫|artist",
"album_key": "album|artist",
"search_text": "café i 💫 artist album artist",
"sort_genre": "",
"sort_release": "",
"sort_added": 1791288000000
}
},
{
"input": {
"id": "row",
"trackName": " CAFÉ İ 💫 ",
"artistName": "Artist",
"albumName": "Album",
"filePath": "/music/a.flac",
"scannedAt": "2026-10-06T12:00:00.000Z",
"albumArtist": ""
},
"expected": {
"id": "row",
"track_name": " CAFÉ İ 💫 ",
"artist_name": "Artist",
"album_name": "Album",
"album_artist": "",
"file_path": "/music/a.flac",
"cover_path": null,
"scanned_at": "2026-10-06T12:00:00.000Z",
"file_mod_time": null,
"isrc": null,
"track_number": null,
"total_tracks": null,
"disc_number": null,
"total_discs": null,
"duration": null,
"release_date": null,
"bit_depth": null,
"sample_rate": null,
"bitrate": null,
"genre": null,
"composer": null,
"label": null,
"copyright": null,
"format": null,
"source_id": "source",
"explicit": 0,
"has_lyrics": 0,
"has_replaygain": 0,
"audio_metadata_scan_version": 4,
"track_name_norm": "café i 💫",
"artist_name_norm": "artist",
"album_name_norm": "album",
"album_artist_norm": "",
"match_key": "café i 💫|artist",
"album_key": "album|",
"search_text": "café i 💫 artist album artist",
"sort_genre": "",
"sort_release": "",
"sort_added": 1791288000000
}
},
{
"input": {
"id": "row",
"trackName": " CAFÉ İ 💫 ",
"artistName": "Artist",
"albumName": "Album",
"filePath": "/music/a.flac",
"scannedAt": "2026-10-06T12:00:00.000Z",
"albumArtist": " Other ",
"explicit": 1.0,
"hasLyrics": true,
"hasReplayGain": 1
},
"expected": {
"id": "row",
"track_name": " CAFÉ İ 💫 ",
"artist_name": "Artist",
"album_name": "Album",
"album_artist": " Other ",
"file_path": "/music/a.flac",
"cover_path": null,
"scanned_at": "2026-10-06T12:00:00.000Z",
"file_mod_time": null,
"isrc": null,
"track_number": null,
"total_tracks": null,
"disc_number": null,
"total_discs": null,
"duration": null,
"release_date": null,
"bit_depth": null,
"sample_rate": null,
"bitrate": null,
"genre": null,
"composer": null,
"label": null,
"copyright": null,
"format": null,
"source_id": "source",
"explicit": 1,
"has_lyrics": 1,
"has_replaygain": 1,
"audio_metadata_scan_version": 4,
"track_name_norm": "café i 💫",
"artist_name_norm": "artist",
"album_name_norm": "album",
"album_artist_norm": "other",
"match_key": "café i 💫|artist",
"album_key": "album|other",
"search_text": "café i 💫 artist album other",
"sort_genre": "",
"sort_release": "",
"sort_added": 1791288000000
}
},
{
"input": {
"id": "row",
"trackName": " CAFÉ İ 💫 ",
"artistName": "Artist",
"albumName": "Album",
"filePath": "/music/a.flac",
"scannedAt": "2026-10-06T12:00:00.000Z",
"metadataFromFilename": true,
"fileModTime": 0,
"genre": " Rock ",
"releaseDate": " 2026-10 "
},
"expected": {
"id": "row",
"track_name": " CAFÉ İ 💫 ",
"artist_name": "Artist",
"album_name": "Album",
"album_artist": null,
"file_path": "/music/a.flac",
"cover_path": null,
"scanned_at": "2026-10-06T12:00:00.000Z",
"file_mod_time": 0,
"isrc": null,
"track_number": null,
"total_tracks": null,
"disc_number": null,
"total_discs": null,
"duration": null,
"release_date": " 2026-10 ",
"bit_depth": null,
"sample_rate": null,
"bitrate": null,
"genre": " Rock ",
"composer": null,
"label": null,
"copyright": null,
"format": null,
"source_id": "source",
"explicit": 0,
"has_lyrics": 0,
"has_replaygain": 0,
"audio_metadata_scan_version": 0,
"track_name_norm": "café i 💫",
"artist_name_norm": "artist",
"album_name_norm": "album",
"album_artist_norm": "artist",
"match_key": "café i 💫|artist",
"album_key": "album|artist",
"search_text": "café i 💫 artist album artist",
"sort_genre": "rock",
"sort_release": "2026-10",
"sort_added": 0
}
},
{
"input": {
"id": "row",
"trackName": " CAFÉ İ 💫 ",
"artistName": "Artist",
"albumName": "Album",
"filePath": "/music/a.flac",
"scannedAt": "2026-10-06T12:00:00.000Z",
"audioMetadataScanVersion": 2.9,
"fileModTime": 1770000000000.9,
"replaygain_track_gain": " -4.5 DB "
},
"expected": {
"id": "row",
"track_name": " CAFÉ İ 💫 ",
"artist_name": "Artist",
"album_name": "Album",
"album_artist": null,
"file_path": "/music/a.flac",
"cover_path": null,
"scanned_at": "2026-10-06T12:00:00.000Z",
"file_mod_time": 1770000000000.9,
"isrc": null,
"track_number": null,
"total_tracks": null,
"disc_number": null,
"total_discs": null,
"duration": null,
"release_date": null,
"bit_depth": null,
"sample_rate": null,
"bitrate": null,
"genre": null,
"composer": null,
"label": null,
"copyright": null,
"format": null,
"source_id": "source",
"explicit": 0,
"has_lyrics": 0,
"has_replaygain": 1,
"audio_metadata_scan_version": 2,
"track_name_norm": "café i 💫",
"artist_name_norm": "artist",
"album_name_norm": "album",
"album_artist_norm": "artist",
"match_key": "café i 💫|artist",
"album_key": "album|artist",
"search_text": "café i 💫 artist album artist",
"sort_genre": "",
"sort_release": "",
"sort_added": 1770000000000
}
},
{
"input": {
"id": "row",
"trackName": " CAFÉ İ 💫 ",
"artistName": "Artist",
"albumName": "Album",
"filePath": "/music/a.flac",
"scannedAt": "invalid",
"replaygain_album_gain": "NaN"
},
"expected": {
"id": "row",
"track_name": " CAFÉ İ 💫 ",
"artist_name": "Artist",
"album_name": "Album",
"album_artist": null,
"file_path": "/music/a.flac",
"cover_path": null,
"scanned_at": "invalid",
"file_mod_time": null,
"isrc": null,
"track_number": null,
"total_tracks": null,
"disc_number": null,
"total_discs": null,
"duration": null,
"release_date": null,
"bit_depth": null,
"sample_rate": null,
"bitrate": null,
"genre": null,
"composer": null,
"label": null,
"copyright": null,
"format": null,
"source_id": "source",
"explicit": 0,
"has_lyrics": 0,
"has_replaygain": 0,
"audio_metadata_scan_version": 4,
"track_name_norm": "café i 💫",
"artist_name_norm": "artist",
"album_name_norm": "album",
"album_artist_norm": "artist",
"match_key": "café i 💫|artist",
"album_key": "album|artist",
"search_text": "café i 💫 artist album artist",
"sort_genre": "",
"sort_release": "",
"sort_added": 0
}
},
{
"input": {
"id": "row",
"trackName": "",
"artistName": "",
"albumName": "",
"filePath": "/music/a.flac",
"scannedAt": "2026-10-06T12:00:00.000Z",
"replaygain_album_gain": 2.5
},
"expected": {
"id": "row",
"track_name": "",
"artist_name": "",
"album_name": "",
"album_artist": null,
"file_path": "/music/a.flac",
"cover_path": null,
"scanned_at": "2026-10-06T12:00:00.000Z",
"file_mod_time": null,
"isrc": null,
"track_number": null,
"total_tracks": null,
"disc_number": null,
"total_discs": null,
"duration": null,
"release_date": null,
"bit_depth": null,
"sample_rate": null,
"bitrate": null,
"genre": null,
"composer": null,
"label": null,
"copyright": null,
"format": null,
"source_id": "source",
"explicit": 0,
"has_lyrics": 0,
"has_replaygain": 1,
"audio_metadata_scan_version": 4,
"track_name_norm": "",
"artist_name_norm": "",
"album_name_norm": "",
"album_artist_norm": "",
"match_key": "|",
"album_key": "|",
"search_text": "",
"sort_genre": "",
"sort_release": "",
"sort_added": 1791288000000
}
},
{
"input": {
"id": "row",
"trackName": " CAFÉ İ 💫 ",
"artistName": "Artist",
"albumName": "Album",
"filePath": "/music/a.flac",
"scannedAt": "2026-10-06T19:00:00.123456+07:00",
"explicit": false,
"hasLyrics": 0
},
"expected": {
"id": "row",
"track_name": " CAFÉ İ 💫 ",
"artist_name": "Artist",
"album_name": "Album",
"album_artist": null,
"file_path": "/music/a.flac",
"cover_path": null,
"scanned_at": "2026-10-06T19:00:00.123456+07:00",
"file_mod_time": null,
"isrc": null,
"track_number": null,
"total_tracks": null,
"disc_number": null,
"total_discs": null,
"duration": null,
"release_date": null,
"bit_depth": null,
"sample_rate": null,
"bitrate": null,
"genre": null,
"composer": null,
"label": null,
"copyright": null,
"format": null,
"source_id": "source",
"explicit": 0,
"has_lyrics": 0,
"has_replaygain": 0,
"audio_metadata_scan_version": 4,
"track_name_norm": "café i 💫",
"artist_name_norm": "artist",
"album_name_norm": "album",
"album_artist_norm": "artist",
"match_key": "café i 💫|artist",
"album_key": "album|artist",
"search_text": "café i 💫 artist album artist",
"sort_genre": "",
"sort_release": "",
"sort_added": 1791288000123
}
},
{
"input": {
"id": "row",
"trackName": " CAFÉ İ 💫 ",
"artistName": "Artist",
"albumName": "Album",
"filePath": "/music/a.flac",
"scannedAt": "20261006T120000.123456789z"
},
"expected": {
"id": "row",
"track_name": " CAFÉ İ 💫 ",
"artist_name": "Artist",
"album_name": "Album",
"album_artist": null,
"file_path": "/music/a.flac",
"cover_path": null,
"scanned_at": "20261006T120000.123456789z",
"file_mod_time": null,
"isrc": null,
"track_number": null,
"total_tracks": null,
"disc_number": null,
"total_discs": null,
"duration": null,
"release_date": null,
"bit_depth": null,
"sample_rate": null,
"bitrate": null,
"genre": null,
"composer": null,
"label": null,
"copyright": null,
"format": null,
"source_id": "source",
"explicit": 0,
"has_lyrics": 0,
"has_replaygain": 0,
"audio_metadata_scan_version": 4,
"track_name_norm": "café i 💫",
"artist_name_norm": "artist",
"album_name_norm": "album",
"album_artist_norm": "artist",
"match_key": "café i 💫|artist",
"album_key": "album|artist",
"search_text": "café i 💫 artist album artist",
"sort_genre": "",
"sort_release": "",
"sort_added": 1791288000123
}
},
{
"input": {
"id": "row",
"trackName": "ΑΒΣ İ",
"artistName": "Artist",
"albumName": "Album",
"filePath": "/music/a.flac",
"scannedAt": "2026-10-32T25:61:00Z"
},
"expected": {
"id": "row",
"track_name": "ΑΒΣ İ",
"artist_name": "Artist",
"album_name": "Album",
"album_artist": null,
"file_path": "/music/a.flac",
"cover_path": null,
"scanned_at": "2026-10-32T25:61:00Z",
"file_mod_time": null,
"isrc": null,
"track_number": null,
"total_tracks": null,
"disc_number": null,
"total_discs": null,
"duration": null,
"release_date": null,
"bit_depth": null,
"sample_rate": null,
"bitrate": null,
"genre": null,
"composer": null,
"label": null,
"copyright": null,
"format": null,
"source_id": "source",
"explicit": 0,
"has_lyrics": 0,
"has_replaygain": 0,
"audio_metadata_scan_version": 4,
"track_name_norm": "αβσ i",
"artist_name_norm": "artist",
"album_name_norm": "album",
"album_artist_norm": "artist",
"match_key": "αβσ i|artist",
"album_key": "album|artist",
"search_text": "αβσ i artist album artist",
"sort_genre": "",
"sort_release": "",
"sort_added": 1793584860000
}
}
],
"paths": [
{
"input": "",
"expected": []
},
{
"input": " EXISTS: /Music/Café 01.FLAC ",
"expected": [
"/Music/Café 01",
"/Music/Café 01.FLAC",
"/music/café 01",
"/music/café 01.flac",
"file:///Music/Caf%C3%A9%2001",
"file:///Music/Caf%C3%A9%2001.FLAC",
"file:///music/caf%c3%a9%2001",
"file:///music/caf%c3%a9%2001.flac"
]
},
{
"input": "/a/../b/song.flac",
"expected": [
"/a/../b/song",
"/a/../b/song.flac",
"file:///b/song",
"file:///b/song.flac"
]
},
{
"input": "/Music/100%25/song.opus",
"expected": [
"/Music/100%/song",
"/Music/100%/song.opus",
"/Music/100%25/song",
"/Music/100%25/song.opus",
"/music/100%/song",
"/music/100%/song.opus",
"/music/100%25/song",
"/music/100%25/song.opus",
"file:///Music/100%25/song",
"file:///Music/100%25/song.opus",
"file:///Music/100%2525/song",
"file:///Music/100%2525/song.opus",
"file:///music/100%25/song",
"file:///music/100%25/song.opus",
"file:///music/100%2525/song",
"file:///music/100%2525/song.opus"
]
},
{
"input": "/Music/100%zz.flac",
"expected": [
"/Music/100%zz",
"/Music/100%zz.flac",
"/music/100%zz",
"/music/100%zz.flac",
"file:///Music/100%25zz",
"file:///Music/100%25zz.flac",
"file:///music/100%25zz",
"file:///music/100%25zz.flac"
]
},
{
"input": "/Music/💫 track.wav",
"expected": [
"/Music/💫 track",
"/Music/💫 track.wav",
"/music/💫 track",
"/music/💫 track.wav",
"file:///Music/%F0%9F%92%AB%20track",
"file:///Music/%F0%9F%92%AB%20track.wav",
"file:///music/%f0%9f%92%ab%20track",
"file:///music/%f0%9f%92%ab%20track.wav"
]
},
{
"input": "/Music/a#b.flac",
"expected": [
"/Music/a#b",
"/Music/a#b.flac",
"/music/a#b",
"/music/a#b.flac",
"file:///Music/a%23b",
"file:///Music/a%23b.flac",
"file:///music/a%23b",
"file:///music/a%23b.flac"
]
},
{
"input": "/Music/a?b.mp3",
"expected": [
"/Music/a?b",
"/Music/a?b.mp3",
"/music/a?b",
"/music/a?b.mp3",
"file:///Music/a%3Fb",
"file:///Music/a%3Fb.mp3",
"file:///music/a%3fb",
"file:///music/a%3fb.mp3"
]
},
{
"input": "/Music/a\\b.flac",
"expected": [
"/Music/a/b",
"/Music/a/b.flac",
"/Music/a\\b",
"/Music/a\\b.flac",
"/music/a/b",
"/music/a/b.flac",
"/music/a\\b",
"/music/a\\b.flac",
"file:///Music/a%5Cb",
"file:///Music/a%5Cb.flac",
"file:///Music/a/b",
"file:///Music/a/b.flac",
"file:///music/a%5cb",
"file:///music/a%5cb.flac",
"file:///music/a/b",
"file:///music/a/b.flac"
]
},
{
"input": "C:\\Music\\Hello.flac",
"expected": [
"C:/Music/Hello",
"C:/Music/Hello.flac",
"C:\\Music\\Hello",
"C:\\Music\\Hello.flac",
"c:/Music/Hello",
"c:/Music/Hello.flac",
"c:/music/hello",
"c:/music/hello.flac",
"c:\\music\\hello",
"c:\\music\\hello.flac"
]
},
{
"input": "file:///music/a%20b.flac",
"expected": [
"/music/a b",
"/music/a b.flac",
"file:///music/a b",
"file:///music/a b.flac",
"file:///music/a%20b",
"file:///music/a%20b.flac"
]
},
{
"input": "file://localhost/music/a.flac",
"expected": [
"file://localhost/music/a",
"file://localhost/music/a.flac"
]
},
{
"input": "file://localhost",
"expected": [
"file://localhost",
"file://localhost/"
]
},
{
"input": "file:///music/a.flac?x=1#frag",
"expected": [
"file:///music/a.flac?x=1#frag"
]
},
{
"input": "file:///music/a.flac#frag",
"expected": [
"file:///music/a.flac#frag"
]
},
{
"input": "file:///a/../b/song.flac",
"expected": [
"/b/song",
"/b/song.flac",
"file:///a/../b/song",
"file:///a/../b/song.flac",
"file:///b/song",
"file:///b/song.flac"
]
},
{
"input": "file:///music/%7e.flac",
"expected": [
"/music/~",
"/music/~.flac",
"file:///music/%7e",
"file:///music/%7e.flac",
"file:///music/~",
"file:///music/~.flac"
]
},
{
"input": "content://nas.provider/document/Ab%252FC.flac",
"expected": [
"content://nas.provider/document/Ab%252FC",
"content://nas.provider/document/Ab%252FC.flac",
"content://nas.provider/document/Ab%2FC",
"content://nas.provider/document/Ab%2FC.flac",
"content://nas.provider/document/Ab/C",
"content://nas.provider/document/Ab/C.flac",
"content://nas.provider/document/ab%252fc",
"content://nas.provider/document/ab%252fc.flac",
"content://nas.provider/document/ab%2fc",
"content://nas.provider/document/ab%2fc.flac",
"content://nas.provider/document/ab/c",
"content://nas.provider/document/ab/c.flac",
"saf-document:bmFzLnByb3ZpZGVy:Ab%2FC",
"saf-document:bmFzLnByb3ZpZGVy:Ab%2FC.flac"
]
},
{
"input": "content://nas.provider/tree/root/document/Ab%252FC.flac",
"expected": [
"content://nas.provider/tree/root/document/Ab%252FC",
"content://nas.provider/tree/root/document/Ab%252FC.flac",
"content://nas.provider/tree/root/document/Ab%2FC",
"content://nas.provider/tree/root/document/Ab%2FC.flac",
"content://nas.provider/tree/root/document/Ab/C",
"content://nas.provider/tree/root/document/Ab/C.flac",
"content://nas.provider/tree/root/document/ab%252fc",
"content://nas.provider/tree/root/document/ab%252fc.flac",
"content://nas.provider/tree/root/document/ab%2fc",
"content://nas.provider/tree/root/document/ab%2fc.flac",
"content://nas.provider/tree/root/document/ab/c",
"content://nas.provider/tree/root/document/ab/c.flac",
"saf-document:bmFzLnByb3ZpZGVy:Ab%2FC",
"saf-document:bmFzLnByb3ZpZGVy:Ab%2FC.flac"
]
},
{
"input": "content://NAS.PROVIDER/document/Ab%2FC.flac?x=Y#frag",
"expected": [
"content://NAS.PROVIDER/document/Ab%2FC.flac?x=Y#frag",
"content://NAS.PROVIDER/document/Ab/C.flac?x=Y#frag",
"content://nas.provider/document/Ab%2FC.flac?x=Y#frag",
"content://nas.provider/document/Ab/C.flac?x=Y#frag",
"content://nas.provider/document/ab%2fc.flac?x=y#frag",
"content://nas.provider/document/ab/c.flac?x=y#frag",
"saf-document:bmFzLnByb3ZpZGVy:Ab/C",
"saf-document:bmFzLnByb3ZpZGVy:Ab/C.flac"
]
},
{
"input": "content://nas.provider/document/AB%20C.flac",
"expected": [
"content://nas.provider/document/AB C",
"content://nas.provider/document/AB C.flac",
"content://nas.provider/document/AB%20C",
"content://nas.provider/document/AB%20C.flac",
"content://nas.provider/document/ab c",
"content://nas.provider/document/ab c.flac",
"content://nas.provider/document/ab%20c",
"content://nas.provider/document/ab%20c.flac",
"saf-document:bmFzLnByb3ZpZGVy:AB C",
"saf-document:bmFzLnByb3ZpZGVy:AB C.flac"
]
},
{
"input": "content://com.android.externalstorage.documents/tree/primary%3AMusic/document/primary%3AMusic%2FCaf%C3%A9.flac",
"expected": [
"/mnt/sdcard/Music/Café",
"/mnt/sdcard/Music/Café.flac",
"/mnt/sdcard/music/café",
"/mnt/sdcard/music/café.flac",
"/sdcard/Music/Café",
"/sdcard/Music/Café.flac",
"/sdcard/music/café",
"/sdcard/music/café.flac",
"/storage/emulated/0/Music/Café",
"/storage/emulated/0/Music/Café.flac",
"/storage/emulated/0/music/café",
"/storage/emulated/0/music/café.flac",
"/storage/emulated/legacy/Music/Café",
"/storage/emulated/legacy/Music/Café.flac",
"/storage/emulated/legacy/music/café",
"/storage/emulated/legacy/music/café.flac",
"/storage/self/primary/Music/Café",
"/storage/self/primary/Music/Café.flac",
"/storage/self/primary/music/café",
"/storage/self/primary/music/café.flac",
"content://com.android.externalstorage.documents/tree/primary%3AMusic/document/primary%3AMusic%2FCaf%C3%A9",
"content://com.android.externalstorage.documents/tree/primary%3AMusic/document/primary%3AMusic%2FCaf%C3%A9.flac",
"content://com.android.externalstorage.documents/tree/primary%3amusic/document/primary%3amusic%2fcaf%c3%a9",
"content://com.android.externalstorage.documents/tree/primary%3amusic/document/primary%3amusic%2fcaf%c3%a9.flac",
"content://com.android.externalstorage.documents/tree/primary:Music/document/primary:Music/Caf%C3%A9",
"content://com.android.externalstorage.documents/tree/primary:Music/document/primary:Music/Caf%C3%A9.flac",
"content://com.android.externalstorage.documents/tree/primary:Music/document/primary:Music/Café",
"content://com.android.externalstorage.documents/tree/primary:Music/document/primary:Music/Café.flac",
"content://com.android.externalstorage.documents/tree/primary:music/document/primary:music/caf%c3%a9",
"content://com.android.externalstorage.documents/tree/primary:music/document/primary:music/caf%c3%a9.flac",
"content://com.android.externalstorage.documents/tree/primary:music/document/primary:music/café",
"content://com.android.externalstorage.documents/tree/primary:music/document/primary:music/café.flac",
"file:///mnt/sdcard/Music/Caf%C3%A9",
"file:///mnt/sdcard/Music/Caf%C3%A9.flac",
"file:///mnt/sdcard/music/caf%c3%a9",
"file:///mnt/sdcard/music/caf%c3%a9.flac",
"file:///sdcard/Music/Caf%C3%A9",
"file:///sdcard/Music/Caf%C3%A9.flac",
"file:///sdcard/music/caf%c3%a9",
"file:///sdcard/music/caf%c3%a9.flac",
"file:///storage/emulated/0/Music/Caf%C3%A9",
"file:///storage/emulated/0/Music/Caf%C3%A9.flac",
"file:///storage/emulated/0/music/caf%c3%a9",
"file:///storage/emulated/0/music/caf%c3%a9.flac",
"file:///storage/emulated/legacy/Music/Caf%C3%A9",
"file:///storage/emulated/legacy/Music/Caf%C3%A9.flac",
"file:///storage/emulated/legacy/music/caf%c3%a9",
"file:///storage/emulated/legacy/music/caf%c3%a9.flac",
"file:///storage/self/primary/Music/Caf%C3%A9",
"file:///storage/self/primary/Music/Caf%C3%A9.flac",
"file:///storage/self/primary/music/caf%c3%a9",
"file:///storage/self/primary/music/caf%c3%a9.flac",
"saf-document:Y29tLmFuZHJvaWQuZXh0ZXJuYWxzdG9yYWdlLmRvY3VtZW50cw==:primary:Music/Café",
"saf-document:Y29tLmFuZHJvaWQuZXh0ZXJuYWxzdG9yYWdlLmRvY3VtZW50cw==:primary:Music/Café.flac"
]
},
{
"input": "content://COM.ANDROID.EXTERNALSTORAGE.DOCUMENTS/document/primary%3AMusic%2Fsong.opus",
"expected": [
"/mnt/sdcard/Music/song",
"/mnt/sdcard/Music/song.opus",
"/mnt/sdcard/music/song",
"/mnt/sdcard/music/song.opus",
"/sdcard/Music/song",
"/sdcard/Music/song.opus",
"/sdcard/music/song",
"/sdcard/music/song.opus",
"/storage/emulated/0/Music/song",
"/storage/emulated/0/Music/song.opus",
"/storage/emulated/0/music/song",
"/storage/emulated/0/music/song.opus",
"/storage/emulated/legacy/Music/song",
"/storage/emulated/legacy/Music/song.opus",
"/storage/emulated/legacy/music/song",
"/storage/emulated/legacy/music/song.opus",
"/storage/self/primary/Music/song",
"/storage/self/primary/Music/song.opus",
"/storage/self/primary/music/song",
"/storage/self/primary/music/song.opus",
"content://COM.ANDROID.EXTERNALSTORAGE.DOCUMENTS/document/primary%3AMusic%2Fsong",
"content://COM.ANDROID.EXTERNALSTORAGE.DOCUMENTS/document/primary%3AMusic%2Fsong.opus",
"content://COM.ANDROID.EXTERNALSTORAGE.DOCUMENTS/document/primary:Music/song",
"content://COM.ANDROID.EXTERNALSTORAGE.DOCUMENTS/document/primary:Music/song.opus",
"content://com.android.externalstorage.documents/document/primary%3AMusic%2Fsong",
"content://com.android.externalstorage.documents/document/primary%3AMusic%2Fsong.opus",
"content://com.android.externalstorage.documents/document/primary%3amusic%2fsong",
"content://com.android.externalstorage.documents/document/primary%3amusic%2fsong.opus",
"content://com.android.externalstorage.documents/document/primary:Music/song",
"content://com.android.externalstorage.documents/document/primary:Music/song.opus",
"content://com.android.externalstorage.documents/document/primary:music/song",
"content://com.android.externalstorage.documents/document/primary:music/song.opus",
"file:///mnt/sdcard/Music/song",
"file:///mnt/sdcard/Music/song.opus",
"file:///mnt/sdcard/music/song",
"file:///mnt/sdcard/music/song.opus",
"file:///sdcard/Music/song",
"file:///sdcard/Music/song.opus",
"file:///sdcard/music/song",
"file:///sdcard/music/song.opus",
"file:///storage/emulated/0/Music/song",
"file:///storage/emulated/0/Music/song.opus",
"file:///storage/emulated/0/music/song",
"file:///storage/emulated/0/music/song.opus",
"file:///storage/emulated/legacy/Music/song",
"file:///storage/emulated/legacy/Music/song.opus",
"file:///storage/emulated/legacy/music/song",
"file:///storage/emulated/legacy/music/song.opus",
"file:///storage/self/primary/Music/song",
"file:///storage/self/primary/Music/song.opus",
"file:///storage/self/primary/music/song",
"file:///storage/self/primary/music/song.opus",
"saf-document:Y29tLmFuZHJvaWQuZXh0ZXJuYWxzdG9yYWdlLmRvY3VtZW50cw==:primary:Music/song",
"saf-document:Y29tLmFuZHJvaWQuZXh0ZXJuYWxzdG9yYWdlLmRvY3VtZW50cw==:primary:Music/song.opus"
]
},
{
"input": "network://Connection/Music/Track%2520A.flac",
"expected": [
"network://Connection/Music/Track A",
"network://Connection/Music/Track A.flac",
"network://Connection/Music/Track%20A",
"network://Connection/Music/Track%20A.flac",
"network://Connection/Music/Track%2520A",
"network://Connection/Music/Track%2520A.flac",
"network://connection/Music/Track%20A",
"network://connection/Music/Track%20A.flac",
"network://connection/Music/Track%2520A",
"network://connection/Music/Track%2520A.flac",
"network://connection/music/track a",
"network://connection/music/track a.flac",
"network://connection/music/track%20a",
"network://connection/music/track%20a.flac",
"network://connection/music/track%2520a",
"network://connection/music/track%2520a.flac"
]
},
{
"input": "https://EXAMPLE.com/Music/a%7eb.flac?q=x#Y",
"expected": [
"https://EXAMPLE.com/Music/a%7eb.flac?q=x#Y",
"https://EXAMPLE.com/Music/a~b.flac?q=x#Y",
"https://example.com/Music/a~b.flac?q=x#Y",
"https://example.com/music/a%7eb.flac?q=x#y",
"https://example.com/music/a~b.flac?q=x#y"
]
},
{
"input": "content://provider/document/💫.flac",
"expected": [
"content://provider/document/%F0%9F%92%AB",
"content://provider/document/%F0%9F%92%AB.flac",
"content://provider/document/%f0%9f%92%ab",
"content://provider/document/%f0%9f%92%ab.flac",
"content://provider/document/💫",
"content://provider/document/💫.flac",
"saf-document:cHJvdmlkZXI=:💫",
"saf-document:cHJvdmlkZXI=:💫.flac"
]
},
{
"input": "content://provider/document/a%zz.flac",
"expected": [
"content://provider/document/a%25zz",
"content://provider/document/a%25zz.flac",
"content://provider/document/a%zz",
"content://provider/document/a%zz.flac",
"saf-document:cHJvdmlkZXI=:a%zz",
"saf-document:cHJvdmlkZXI=:a%zz.flac"
]
},
{
"input": "/sdcard/Music/song.flac",
"expected": [
"/sdcard/Music/song",
"/sdcard/Music/song.flac",
"/sdcard/music/song",
"/sdcard/music/song.flac",
"file:///sdcard/Music/song",
"file:///sdcard/Music/song.flac",
"file:///sdcard/music/song",
"file:///sdcard/music/song.flac"
]
},
{
"input": "/storage/emulated/0/Music/song.opus",
"expected": [
"/storage/emulated/0/Music/song",
"/storage/emulated/0/Music/song.opus",
"/storage/emulated/0/music/song",
"/storage/emulated/0/music/song.opus",
"file:///storage/emulated/0/Music/song",
"file:///storage/emulated/0/Music/song.opus",
"file:///storage/emulated/0/music/song",
"file:///storage/emulated/0/music/song.opus"
]
}
]
}