""" Tests for the scale module """
import pytest
from ziffers import scale

@pytest.mark.parametrize(
    "name,expected",
    [
        ("C4", 60),
        ("A1", 33),
        ("Bb3", 58),
        ("C#1", 25),
        ("foo", 60),
    ],
)
def test_notenames(name: str, expected: int):
    assert scale.note_name_to_midi(name) == expected


@pytest.mark.parametrize(
    "pitch_classes,expected",
    [
        (
            list(range(-9, 10)),
            [
                45,
                47,
                48,
                50,
                52,
                53,
                55,
                57,
                59,
                60,
                62,
                64,
                65,
                67,
                69,
                71,
                72,
                74,
                76,
            ],
        ),
    ],
)
def test_note_to_midi(pitch_classes: str, expected: int):
    assert [
        scale.note_from_pc(root=60, pitch_class=val, intervals="Ionian")[0] for val in pitch_classes
    ] == expected
