def test_note_add():
    s1 = noise.SimpleWave(100, 1, 1)
    s2 = noise.SimpleWave(101, 1, 1)
    n1 = noise.Note([s1, s2])
    n2 = noise.Note([s1])
    n3 = n1 + n2
    assert n3.get_waves() == n1.get_waves() + n2.get_waves()
def test_stutter_note_add():
    sn1 = noise.StutterNote(100, 1, 1)
    n1 = noise.Note([noise.SimpleWave(400, 1, 2)])
    n2 = sn1 + n1
    waves = n2.get_waves()
    assert waves[:-1] == sn1.get_waves()
    assert waves[-1:] == n1.get_waves()
def test_note_change_amplitude():
    s1 = noise.SimpleWave(100, 1, 0.5)
    s2 = noise.SimpleWave(101, 1, 1)
    n1 = noise.Note([s1, s2])
    n1.amplitude = 0.5
    wave = n1.play()
    half_way = len(wave) // 2
    assert wave[:half_way - 10].max() <= 0.25
    assert wave[half_way + 10].max() <= 0.5
    assert wave[:half_way - 10].min() >= -0.25
    assert wave[half_way + 10].min() >= -0.5
def test_note_play():
    s1 = noise.SimpleWave(100, 1, 0.5)
    s2 = noise.SimpleWave(101, 1, 1)
    n1 = noise.Note([s1, s2])
    assert n1.play().max() <= 1
    assert n1.play().min() >= -1
def test_note_get_duration():
    s1 = noise.SimpleWave(100, 1, 1)
    s2 = noise.SimpleWave(101, 1, 1)
    n1 = noise.Note([s1, s2])
    assert abs(n1.get_duration() - 2) < 0.0001
def test_note_get_waves():
    s1 = noise.SimpleWave(100, 1, 1)
    s2 = noise.SimpleWave(101, 1, 1)
    n1 = noise.Note([s1, s2])
    assert n1.get_waves()[0] == s1
    assert n1.get_waves()[1] == s2