*исправление ошибок: двой перезаписи, исправление записи с BOM, добавлена проверка в insert_tags_into_audio
This commit is contained in:
1 parent
ffa8d80875
commit
078e68efa8
5 files changed
+181
-55
No files matched your search
+67
-10
@@ -10,8 +10,8 @@ fn test_idv3v23() {
|
||||
mut wav := metadata.Audio{}
|
||||
wav.detect_tags(mut audio)
|
||||
|
||||
assert wav.id3v1.embedded == false, 'Тег показан false, а должен быть true'
|
||||
assert wav.id3v23.embedded == true, 'Тег показан true, а должен быть false'
|
||||
assert wav.id3v1.embedded == false, 'Тег показан true, а должен быть false'
|
||||
assert wav.id3v23.embedded == true, 'Тег показан false, а должен быть true'
|
||||
assert wav.id3v24.embedded == false, 'Тег показан true, а должен быть false'
|
||||
wav.id3v23.get_full_size(mut audio)
|
||||
wav.id3v23.fill_tags(mut audio)
|
||||
@@ -45,8 +45,8 @@ fn test_writeidv3v23() {
|
||||
mut wav := metadata.Audio{}
|
||||
wav.detect_tags(mut audio)
|
||||
|
||||
assert wav.id3v1.embedded == false, 'Тег показан false, а должен быть true'
|
||||
assert wav.id3v23.embedded == true, 'Тег показан true, а должен быть false'
|
||||
assert wav.id3v1.embedded == false, 'Тег показан true, а должен быть false'
|
||||
assert wav.id3v23.embedded == true, 'Тег показан false, а должен быть true'
|
||||
assert wav.id3v24.embedded == false, 'Тег показан true, а должен быть false'
|
||||
wav.id3v23.get_full_size(mut audio)
|
||||
wav.id3v23.fill_tags(mut audio)
|
||||
@@ -63,7 +63,7 @@ fn test_writeidv3v23() {
|
||||
wav.id3v23.txxx.set_data("comment2")
|
||||
|
||||
wav.id3v23.encode_embed_tags()
|
||||
wav.id3v23.insert_tags_into_audio(mut audio)
|
||||
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) }
|
||||
|
||||
@@ -76,8 +76,8 @@ fn test_writeidv3v23() {
|
||||
mut temp_wav := metadata.Audio{}
|
||||
temp_wav.detect_tags(mut temp_audio)
|
||||
|
||||
assert temp_wav.id3v1.embedded == false, 'Тег показан false, а должен быть true'
|
||||
assert temp_wav.id3v23.embedded == true, 'Тег показан true, а должен быть false'
|
||||
assert temp_wav.id3v1.embedded == false, 'Тег показан true, а должен быть false'
|
||||
assert temp_wav.id3v23.embedded == true, 'Тег показан false, а должен быть true'
|
||||
assert temp_wav.id3v24.embedded == false, 'Тег показан true, а должен быть false'
|
||||
temp_wav.id3v23.get_full_size(mut temp_audio)
|
||||
temp_wav.id3v23.fill_tags(mut temp_audio)
|
||||
@@ -92,7 +92,8 @@ fn test_writeidv3v23() {
|
||||
assert temp_wav.id3v23.tcop.data == "Test2"
|
||||
assert temp_wav.id3v23.txxx.data == "comment2"
|
||||
|
||||
id3v1 := wav.id3v23.to_v1()
|
||||
// Проверяется прочитанный с диска тэг, а не тот, что в памяти
|
||||
id3v1 := temp_wav.id3v23.to_v1()
|
||||
|
||||
assert id3v1.genre == "Rock2"
|
||||
assert id3v1.title == "Test Title2"
|
||||
@@ -112,9 +113,9 @@ fn test_idv3v24() {
|
||||
mut wav := metadata.Audio{}
|
||||
wav.detect_tags(mut audio)
|
||||
|
||||
assert wav.id3v1.embedded == false, 'Тег показан false, а должен быть true'
|
||||
assert wav.id3v1.embedded == false, 'Тег показан true, а должен быть false'
|
||||
assert wav.id3v23.embedded == false, 'Тег показан true, а должен быть false'
|
||||
assert wav.id3v24.embedded == true, 'Тег показан true, а должен быть false'
|
||||
assert wav.id3v24.embedded == true, 'Тег показан false, а должен быть true'
|
||||
wav.id3v24.get_full_size(mut audio)
|
||||
wav.id3v24.fill_tags(mut audio)
|
||||
|
||||
@@ -139,3 +140,59 @@ fn test_idv3v24() {
|
||||
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) }
|
||||
defer {
|
||||
audio.close()
|
||||
}
|
||||
mut wav := metadata.Audio{}
|
||||
wav.detect_tags(mut audio)
|
||||
wav.id3v23.get_full_size(mut audio)
|
||||
wav.id3v23.fill_tags(mut audio)
|
||||
old_size := int(wav.id3v23.size)
|
||||
|
||||
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")
|
||||
os.write_bytes(temp_path, wav.id3v23.encoded_header) or { panic(err) }
|
||||
defer {
|
||||
os.rm(temp_path) or {}
|
||||
}
|
||||
|
||||
mut temp_audio := os.open(temp_path) or { panic(err) }
|
||||
defer {
|
||||
temp_audio.close()
|
||||
}
|
||||
mut temp_wav := metadata.Audio{}
|
||||
temp_wav.detect_tags(mut temp_audio)
|
||||
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.tpe1.data == "Test Author"
|
||||
assert temp_wav.id3v23.others.len == 1
|
||||
|
||||
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) }
|
||||
defer {
|
||||
audio.close()
|
||||
}
|
||||
mut wav := metadata.Audio{}
|
||||
wav.id3v23.encode_embed_tags()
|
||||
|
||||
wav.id3v23.insert_tags_into_audio(mut audio) or {
|
||||
assert err.msg() == "в файле нет тэга ID3v2"
|
||||
return
|
||||
}
|
||||
assert false, 'Ошибка не возвращена'
|
||||
}
|
||||
Reference in new issue
Block a user