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_complex_wave_complexity():
    s1 = noise.SimpleWave(100, 1, 1)
    s2 = noise.SimpleWave(101, 1, 1)
    s3 = noise.SimpleWave(100, 0.5, 1)
    s4 = noise.SimpleWave(100, 1, 0.5)
    c1 = noise.ComplexWave([s1, s2, s3, s4])
    assert c1.complexity() == 4
def test_simple_wave_add():
    s1 = noise.SimpleWave(100, 1, 1)
    s2 = noise.SimpleWave(150, 1, 1)
    s3 = s1 + s2
    waves = s3.get_waves()
    assert len(waves) == 2
    assert any(s1 == s for s in waves)
    assert any(s2 == s for s in waves)
def test_complex_wave_simplify():
    s1 = noise.SimpleWave(100, 1, 1)
    s2 = noise.SimpleWave(101, 1, 1)
    s3 = noise.SimpleWave(100, 0.5, 1)
    s4 = noise.SimpleWave(100, 1, 0.5)
    simple_waves = [s1, s2, s3, s4]
    c1 = noise.ComplexWave(simple_waves)
    c1.simplify()
    assert c1.complexity() == 2
def test_complex_wave_add():
    c1 = noise.ComplexWave([])
    s1 = noise.SimpleWave(100, 1, 1)
    s2 = noise.SimpleWave(150, 1, 1)
    c2 = noise.ComplexWave([s2])
    c3 = c1 + s1 + c2
    waves = c3.get_waves()
    assert len(waves) == 2
    assert any(s1 == s for s in waves)
    assert any(s2 == s for s in waves)
def test_complex_wave_get_waves():
    s1 = noise.SimpleWave(100, 1, 1)
    s2 = noise.SimpleWave(101, 1, 1)
    s3 = noise.SimpleWave(100, 0.5, 1)
    s4 = noise.SimpleWave(100, 1, 0.5)
    simple_waves = [s1, s2, s3, s4]
    c1 = noise.ComplexWave(simple_waves)
    waves = c1.get_waves()
    assert len(waves) == 4
    for wave in simple_waves:
        assert any(wave == w for w in 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_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_complex_wave_get_duration():
    s1 = noise.SimpleWave(100, 0.8, 0.7)
    s2 = noise.SimpleWave(190, 0.8, 1)
    c1 = noise.ComplexWave([s1, s2])
    assert abs(c1.get_duration() - 0.8) < 0.0001
def test_complex_wave_play():
    s1 = noise.SimpleWave(100, 1, 0.7)
    s2 = noise.SimpleWave(100, 1, 1)
    c1 = noise.ComplexWave([s1, s2])
    assert c1.play().max() <= 1
    assert c1.play().min() >= -1
def test_simple_wave_equal():
    s1 = noise.SimpleWave(100, 1, 1)
    s2 = noise.SimpleWave(100, 1, 1)
    assert s1 == s2
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
def test_simple_wave_get_duration():
    s1 = noise.SimpleWave(100, 0.9, 0.5)
    assert abs(s1.get_duration() - 0.9) < 0.0001
def test_rest_add():
    r1 = noise.Rest(10)
    s1 = noise.SimpleWave(100, 10, 1)
    w1 = r1 + s1
    np.testing.assert_allclose(s1.play(), w1.play(), atol=0.0001)
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_simple_wave_play():
    s1 = noise.SimpleWave(100, 1, 0.8)
    assert s1.play().max() <= 1
    assert s1.play().min() >= -1
def test_simple_wave_not_equal():
    s1 = noise.SimpleWave(100, 1, 1)
    s2 = noise.SimpleWave(101, 1, 1)
    s3 = noise.SimpleWave(100, 0.5, 1)
    s4 = noise.SimpleWave(100, 1, 0.5)
    assert s1 != s2 and s1 != s3 and s1 != s4