123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- import os
- import mutagen
- import pytest
- from symuid._tag_interface import Ogg
- # pylint: disable=protected-access
- @pytest.mark.parametrize("track_name", ["ogg-opus-empty.opus"])
- def test_get_track_path(tracks_dir_path, track_name):
- track_path = os.path.join(tracks_dir_path, track_name)
- iface = Ogg(mutagen.File(track_path))
- assert track_path == iface.track_path
- @pytest.mark.parametrize(
- ("track_name", "tag_label", "expected_text"),
- [
- ("ogg-opus-empty.opus", "artist", None),
- ("ogg-opus-typical.opus", "artist", "some artist"),
- ("ogg-opus-typical.opus", "comment", "some comment"),
- ("ogg-opus-typical.opus", "com", None),
- (
- "ogg-opus-typical.opus",
- "symuid:uuid",
- "613ea4ac-a4cf-4026-8e99-1904b2bb5cd0",
- ),
- ],
- )
- def test__get_single_text(tracks_dir_path, track_name, tag_label, expected_text):
- iface = Ogg(mutagen.File(os.path.join(tracks_dir_path, track_name)))
- assert expected_text == iface._get_single_text(tag_label)
- @pytest.mark.parametrize(
- ("track_filename", "expected_comment"),
- [("ogg-opus-empty.opus", None), ("ogg-opus-typical.opus", "some comment")],
- )
- def test_get_comment(tracks_dir_path, track_filename, expected_comment):
- iface = Ogg(mutagen.File(os.path.join(tracks_dir_path, track_filename)))
- assert expected_comment == iface.get_comment()
- def test_set_comment(empty_ogg_opus_path):
- iface = Ogg(mutagen.File(empty_ogg_opus_path))
- assert iface.get_comment() is None
- iface.set_comment("latin")
- assert iface.get_comment() == "latin"
- iface.set_comment("你好")
- assert iface.get_comment() == "你好"
- iface.save()
- iface_reread = Ogg(mutagen.File(empty_ogg_opus_path))
- assert iface_reread.get_comment() == "你好"
- tags = mutagen.File(iface.track_path).tags
- assert len(tags) == 1
- assert tags.items()[0] == ("comment", ["你好"])
- @pytest.mark.parametrize(
- ("track_name", "expected_uuid"),
- [
- ("ogg-opus-empty.opus", None),
- (
- "ogg-opus-typical.opus",
- b"a>\xa4\xac\xa4\xcf@&\x8e\x99\x19\x04\xb2\xbb\\\xd0",
- ),
- ],
- )
- def test_get_track_uuid(tracks_dir_path, track_name, expected_uuid):
- iface = Ogg(mutagen.File(os.path.join(tracks_dir_path, track_name)))
- assert expected_uuid == iface.get_track_uuid()
- def test_set_track_uuid(empty_ogg_opus_path):
- iface = Ogg(mutagen.File(empty_ogg_opus_path))
- assert iface.get_track_uuid() is None
- uuid_a = b"\x9e\xa7\xc4\xf0\xda\xecE\xb7\xab\x9a\xba\x9f\xc6\xaa\xc0S"
- iface.set_track_uuid(uuid_a)
- assert iface.get_track_uuid() == uuid_a
- uuid_b = b"_\xa0\xd7\xc0\xf3\x15F\x14\xbe\xe4idM=\x80\xb3"
- iface.set_track_uuid(uuid_b)
- assert iface.get_track_uuid() == uuid_b
- iface.save()
- iface_reread = Ogg(mutagen.File(empty_ogg_opus_path))
- assert iface_reread.get_track_uuid() == uuid_b
- tags = mutagen.File(iface.track_path).tags
- assert len(tags) == 1
- assert tags.items()[0] == ("symuid:uuid", ["5fa0d7c0-f315-4614-bee4-69644d3d80b3"])
- @pytest.mark.parametrize(
- ("track_name", "tag_label", "expected_int"),
- [
- ("ogg-opus-empty.opus", "tracknumber", None),
- ("ogg-opus-typical.opus", "tracknumber", 21),
- ("ogg-opus-typical.opus", "tracknumberr", None),
- ("ogg-opus-typical.opus", "symuid:pcnt:player:library:1572098177", 43),
- ],
- )
- def test_get_free_int(tracks_dir_path, track_name, tag_label, expected_int):
- iface = Ogg(mutagen.File(os.path.join(tracks_dir_path, track_name)))
- assert expected_int == iface.get_free_int(tag_label)
- def test_get_free_ints(tracks_dir_path):
- iface = Ogg(mutagen.File(os.path.join(tracks_dir_path, "ogg-opus-typical.opus")))
- assert not list(iface.get_free_ints("symuid:none"))
- assert list(iface.get_free_ints("tracknumber")) == [("tracknumber", 21)]
- assert not list(iface.get_free_ints("tracknum"))
- pcnt_tags = {
- ("symuid:pcnt:player:library:1572098158", 42),
- ("symuid:pcnt:player:library:1572098177", 43),
- }
- assert set(iface.get_free_ints("symuid:pcnt:player:library")) == pcnt_tags
- assert set(iface.get_free_ints("symuid:pcnt:player")) == pcnt_tags
- assert set(iface.get_free_ints("symuid:pcnt")) == pcnt_tags
- assert set(iface.get_free_ints("symuid:pcnt:player:library:1572098158")) == {
- ("symuid:pcnt:player:library:1572098158", 42)
- }
- def test_set_free_int(empty_ogg_opus_path):
- iface = Ogg(mutagen.File(empty_ogg_opus_path))
- assert iface.get_free_int("tracknumber") is None
- iface.set_free_int("tracknumber", 7)
- assert iface.get_free_int("tracknumber") == 7
- iface.set_free_int("tracknumber", 14)
- assert iface.get_free_int("tracknumber") == 14
- iface.save()
- iface_reread = Ogg(mutagen.File(empty_ogg_opus_path))
- assert iface_reread.get_free_int("tracknumber") == 14
- tags = mutagen.File(iface.track_path).tags
- assert len(tags) == 1
- assert tags.items()[0] == ("tracknumber", ["14"])
|