vfmt: весь код в формате V master (без изменений логики)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
K1ndWha1eandClaude Opus 5.5 committed 2026-10-11 17:31:02 +03:00
1 parent 4c9184aeb2
commit 6161a7faaa
12 files changed
+405 -287

No files matched your search

+6 -4
View File
@@ -98,10 +98,12 @@ fn test_read_skips_cover() {
author: 'Сафон'
series: 'Кладбище забытых книг'
}
metadata.write_book_tags(path, tags, cover: metadata.Cover{
mime: 'image/jpeg'
data: data
}) or { panic(err) }
metadata.write_book_tags(path, tags,
cover: metadata.Cover{
mime: 'image/jpeg'
data: data
}
) or { panic(err) }
before := u64(gc_heap_usage().total_bytes)
t := metadata.read_book_tags(path) or { panic(err) }
allocated := u64(gc_heap_usage().total_bytes) - before
+8 -9
View File
@@ -3,7 +3,7 @@ import metadata
// Проверка чтения id3v1
fn test_idv3v1() {
mut audio := os.open("./data/test_id3v1.mp3") or { panic(err) }
mut audio := os.open('./data/test_id3v1.mp3') or { panic(err) }
defer {
audio.close()
}
@@ -17,13 +17,12 @@ fn test_idv3v1() {
last_bytes := metadata.get_bytes(mut audio, -128, 128)
wav.id3v1.get_metadata(last_bytes)
assert wav.id3v1.genre == "Rock"
assert wav.id3v1.title == "Test Title"
assert wav.id3v1.artist == "Test Artist"
assert wav.id3v1.album == "Test Album"
assert wav.id3v1.track == "6"
assert wav.id3v1.year == "2026"
assert wav.id3v1.comment == "Test comment"
assert wav.id3v1.genre == 'Rock'
assert wav.id3v1.title == 'Test Title'
assert wav.id3v1.artist == 'Test Artist'
assert wav.id3v1.album == 'Test Album'
assert wav.id3v1.track == '6'
assert wav.id3v1.year == '2026'
assert wav.id3v1.comment == 'Test comment'
assert wav.id3v1.embedded == true
}
+70 -70
View File
@@ -3,7 +3,7 @@ import metadata
// Проверка чтения id3v23
fn test_idv3v23() {
mut audio := os.open("./data/test_id3v23.mp3") or { panic(err) }
mut audio := os.open('./data/test_id3v23.mp3') or { panic(err) }
defer {
audio.close()
}
@@ -16,29 +16,29 @@ fn test_idv3v23() {
wav.id3v23.get_full_size(mut audio)
wav.id3v23.fill_tags(mut audio)
assert wav.id3v23.tit2.data == "Test Title"
assert wav.id3v23.tpe1.data == "Test Author"
assert wav.id3v23.tpe2.data == "Test Narator"
assert wav.id3v23.talb.data == "Test Album"
assert wav.id3v23.tyer.data == "2026"
assert wav.id3v23.trck.data == "6/7"
assert wav.id3v23.tcon.data == "Rock"
assert wav.id3v23.tcop.data == "Test"
assert wav.id3v23.txxx.data == "comment"
assert wav.id3v23.tit2.data == 'Test Title'
assert wav.id3v23.tpe1.data == 'Test Author'
assert wav.id3v23.tpe2.data == 'Test Narator'
assert wav.id3v23.talb.data == 'Test Album'
assert wav.id3v23.tyer.data == '2026'
assert wav.id3v23.trck.data == '6/7'
assert wav.id3v23.tcon.data == 'Rock'
assert wav.id3v23.tcop.data == 'Test'
assert wav.id3v23.txxx.data == 'comment'
id3v1 := wav.id3v23.to_v1()
assert id3v1.genre == "Rock"
assert id3v1.title == "Test Title"
assert id3v1.artist == "Test Narator"
assert id3v1.album == "Test Album"
assert id3v1.track == "6"
assert id3v1.year == "2026"
assert id3v1.comment == "comment"
assert id3v1.genre == 'Rock'
assert id3v1.title == 'Test Title'
assert id3v1.artist == 'Test Narator'
assert id3v1.album == 'Test Album'
assert id3v1.track == '6'
assert id3v1.year == '2026'
assert id3v1.comment == 'comment'
}
fn test_writeidv3v23() {
mut audio := os.open("./data/test_id3v23.mp3") or { panic(err) }
mut audio := os.open('./data/test_id3v23.mp3') or { panic(err) }
defer {
audio.close()
}
@@ -52,23 +52,23 @@ fn test_writeidv3v23() {
wav.id3v23.fill_tags(mut audio)
// Изменение значений тэга
wav.id3v23.tit2.set_data("Test Title2")
wav.id3v23.tpe1.set_data("Test Author2")
wav.id3v23.tpe2.set_data("Test Narator2")
wav.id3v23.talb.set_data("Test Album2")
wav.id3v23.tyer.set_data("2027")
wav.id3v23.trck.set_data("7/7")
wav.id3v23.tcon.set_data("Rock2")
wav.id3v23.tcop.set_data("Test2")
wav.id3v23.txxx.set_data("comment2")
wav.id3v23.tit2.set_data('Test Title2')
wav.id3v23.tpe1.set_data('Test Author2')
wav.id3v23.tpe2.set_data('Test Narator2')
wav.id3v23.talb.set_data('Test Album2')
wav.id3v23.tyer.set_data('2027')
wav.id3v23.trck.set_data('7/7')
wav.id3v23.tcon.set_data('Rock2')
wav.id3v23.tcop.set_data('Test2')
wav.id3v23.txxx.set_data('comment2')
wav.id3v23.encode_embed_tags()
wav.id3v23.insert_tags_into_audio(mut audio) or { panic(err) }
os.write_bytes("./data/temp_v23.mp3", wav.id3v23.encoded_header) or { panic(err) }
os.write_bytes('./data/temp_v23.mp3', wav.id3v23.encoded_header) or { panic(err) }
// Чтение файла и проверка записи
mut temp_audio := os.open("./data/temp_v23.mp3") or { panic(err) }
mut temp_audio := os.open('./data/temp_v23.mp3') or { panic(err) }
defer {
temp_audio.close()
}
@@ -82,31 +82,31 @@ fn test_writeidv3v23() {
temp_wav.id3v23.get_full_size(mut temp_audio)
temp_wav.id3v23.fill_tags(mut temp_audio)
assert temp_wav.id3v23.tit2.data == "Test Title2"
assert temp_wav.id3v23.tpe1.data == "Test Author2"
assert temp_wav.id3v23.tpe2.data == "Test Narator2"
assert temp_wav.id3v23.talb.data == "Test Album2"
assert temp_wav.id3v23.tyer.data == "2027"
assert temp_wav.id3v23.trck.data == "7/7"
assert temp_wav.id3v23.tcon.data == "Rock2"
assert temp_wav.id3v23.tcop.data == "Test2"
assert temp_wav.id3v23.txxx.data == "comment2"
assert temp_wav.id3v23.tit2.data == 'Test Title2'
assert temp_wav.id3v23.tpe1.data == 'Test Author2'
assert temp_wav.id3v23.tpe2.data == 'Test Narator2'
assert temp_wav.id3v23.talb.data == 'Test Album2'
assert temp_wav.id3v23.tyer.data == '2027'
assert temp_wav.id3v23.trck.data == '7/7'
assert temp_wav.id3v23.tcon.data == 'Rock2'
assert temp_wav.id3v23.tcop.data == 'Test2'
assert temp_wav.id3v23.txxx.data == 'comment2'
// Проверяется прочитанный с диска тэг, а не тот, что в памяти
id3v1 := temp_wav.id3v23.to_v1()
assert id3v1.genre == "Rock2"
assert id3v1.title == "Test Title2"
assert id3v1.artist == "Test Narator2"
assert id3v1.album == "Test Album2"
assert id3v1.track == "7"
assert id3v1.year == "2027"
assert id3v1.comment == "comment2"
assert id3v1.genre == 'Rock2'
assert id3v1.title == 'Test Title2'
assert id3v1.artist == 'Test Narator2'
assert id3v1.album == 'Test Album2'
assert id3v1.track == '7'
assert id3v1.year == '2027'
assert id3v1.comment == 'comment2'
}
// Проверка чтения id3v24
fn test_idv3v24() {
mut audio := os.open("./data/test_id3v24.mp3") or { panic(err) }
mut audio := os.open('./data/test_id3v24.mp3') or { panic(err) }
defer {
audio.close()
}
@@ -119,30 +119,30 @@ fn test_idv3v24() {
wav.id3v24.get_full_size(mut audio)
wav.id3v24.fill_tags(mut audio)
assert wav.id3v24.tit2.data == "Test Title"
assert wav.id3v24.tpe1.data == "Test Author"
assert wav.id3v24.tpe2.data == "Test Narator"
assert wav.id3v24.talb.data == "Test Album"
assert wav.id3v24.tdrc.data == "2026"
assert wav.id3v24.trck.data == "6/7"
assert wav.id3v24.tcon.data == "Rock"
assert wav.id3v24.tcop.data == "Test"
assert wav.id3v24.txxx.data == "comment"
assert wav.id3v24.tit2.data == 'Test Title'
assert wav.id3v24.tpe1.data == 'Test Author'
assert wav.id3v24.tpe2.data == 'Test Narator'
assert wav.id3v24.talb.data == 'Test Album'
assert wav.id3v24.tdrc.data == '2026'
assert wav.id3v24.trck.data == '6/7'
assert wav.id3v24.tcon.data == 'Rock'
assert wav.id3v24.tcop.data == 'Test'
assert wav.id3v24.txxx.data == 'comment'
id3v1 := wav.id3v24.to_v1()
assert id3v1.genre == "Rock"
assert id3v1.title == "Test Title"
assert id3v1.artist == "Test Narator"
assert id3v1.album == "Test Album"
assert id3v1.track == "6"
assert id3v1.year == "2026"
assert id3v1.comment == "comment"
assert id3v1.genre == 'Rock'
assert id3v1.title == 'Test Title'
assert id3v1.artist == 'Test Narator'
assert id3v1.album == 'Test Album'
assert id3v1.track == '6'
assert id3v1.year == '2026'
assert id3v1.comment == 'comment'
}
// Кириллица во фрейме с кодировкой ISO-8859-1 не должна превращаться в '?'
fn test_write_unicode_into_latin1_frame() {
mut audio := os.open("./data/test_id3v23.mp3") or { panic(err) }
mut audio := os.open('./data/test_id3v23.mp3') or { panic(err) }
defer {
audio.close()
}
@@ -152,11 +152,11 @@ fn test_write_unicode_into_latin1_frame() {
wav.id3v23.fill_tags(mut audio)
old_size := int(wav.id3v23.size)
wav.id3v23.tit2.set_data("Глава 2")
wav.id3v23.tit2.set_data('Глава 2')
wav.id3v23.encode_embed_tags()
wav.id3v23.insert_tags_into_audio(mut audio) or { panic(err) }
temp_path := os.join_path(os.temp_dir(), "id3_editor_unicode_test.mp3")
temp_path := os.join_path(os.temp_dir(), 'id3_editor_unicode_test.mp3')
os.write_bytes(temp_path, wav.id3v23.encoded_header) or { panic(err) }
defer {
os.rm(temp_path) or {}
@@ -171,19 +171,19 @@ fn test_write_unicode_into_latin1_frame() {
temp_wav.id3v23.get_full_size(mut temp_audio)
temp_wav.id3v23.fill_tags(mut temp_audio)
assert temp_wav.id3v23.tit2.data == "Глава 2"
assert temp_wav.id3v23.tit2.data == 'Глава 2'
// Нетронутые фреймы и аудио сохраняются без изменений
assert temp_wav.id3v23.tpe1.data == "Test Author"
assert temp_wav.id3v23.tpe1.data == 'Test Author'
assert temp_wav.id3v23.others.len == 1
original := os.read_bytes("./data/test_id3v23.mp3") or { panic(err) }
original := os.read_bytes('./data/test_id3v23.mp3') or { panic(err) }
written := os.read_bytes(temp_path) or { panic(err) }
assert written[int(temp_wav.id3v23.size) + 10..] == original[old_size + 10..]
}
// Вставка в файл без тэга ID3v2 возвращает ошибку, а не падает
fn test_insert_without_id3v2() {
mut audio := os.open("./data/test_id3v1.mp3") or { panic(err) }
mut audio := os.open('./data/test_id3v1.mp3') or { panic(err) }
defer {
audio.close()
}
@@ -191,7 +191,7 @@ fn test_insert_without_id3v2() {
wav.id3v23.encode_embed_tags()
wav.id3v23.insert_tags_into_audio(mut audio) or {
assert err.msg() == "в файле нет тэга ID3v2"
assert err.msg() == 'в файле нет тэга ID3v2'
return
}
assert false, 'Ошибка не возвращена'