Chris@19: Chris@19: import vampyhost as vh Chris@40: import numpy as np Chris@19: Chris@82: plugin_key = "vamp-test-plugin:vamp-test-plugin" Chris@19: Chris@19: rate = 44100 Chris@19: Chris@19: def test_load_unload(): Chris@82: plug = vh.load_plugin(plugin_key, rate, vh.ADAPT_NONE) Chris@23: plug.unload() Chris@19: try: Chris@23: plug.unload() # should throw but not crash Chris@19: assert(False) Chris@19: except AttributeError: Chris@19: pass Chris@19: Chris@20: def test_get_set_parameter(): Chris@82: plug = vh.load_plugin(plugin_key, rate, vh.ADAPT_NONE) Chris@80: value = plug.get_parameter_value("produce_output") Chris@20: assert(value == 1.0) Chris@80: plug.set_parameter_value("produce_output", 0.0) Chris@80: value = plug.get_parameter_value("produce_output") Chris@20: assert(value == 0.0) Chris@20: Chris@19: def test_process_without_initialise(): Chris@82: plug = vh.load_plugin(plugin_key, rate, vh.ADAPT_NONE) Chris@19: try: Chris@80: plug.process_block([[1,2,3,4]], vh.RealTime(0, 0)) Chris@40: assert False Chris@102: except Exception: Chris@19: pass Chris@19: Chris@40: def test_process_input_format(): Chris@82: plug = vh.load_plugin(plugin_key, rate, vh.ADAPT_NONE) Chris@40: plug.initialise(2, 4, 4) # channels, stepsize, blocksize Chris@80: result = plug.process_block([[1,2,3,4],[5,6,7,8]], vh.RealTime(0, 0)) Chris@80: result = plug.process_block([np.array([1,2,3,4]),np.array([5,6,7,8])], vh.RealTime(0, 0)) Chris@80: result = plug.process_block(np.array([[1,2,3,4],[5,6,7,8]]), vh.RealTime(0, 0)) Chris@40: try: Chris@40: # Wrong number of channels Chris@80: result = plug.process_block(np.array([[1,2,3,4]]), vh.RealTime(0, 0)) Chris@40: assert False Chris@40: except TypeError: Chris@40: pass Chris@40: try: Chris@40: # Wrong number of samples per channel Chris@80: result = plug.process_block(np.array([[1,2,3],[4,5,6]]), vh.RealTime(0, 0)) Chris@40: assert False Chris@40: except TypeError: Chris@40: pass Chris@40: try: Chris@40: # Differing numbers of samples per channel Chris@80: result = plug.process_block(np.array([[1,2,3,4],[5,6,7]]), vh.RealTime(0, 0)) Chris@40: assert False Chris@40: except TypeError: Chris@40: pass Chris@20: Chris@43: def test_process_output_1ch(): Chris@82: plug = vh.load_plugin(plugin_key, rate, vh.ADAPT_NONE) Chris@43: plug.initialise(1, 2, 2) Chris@43: try: Chris@43: # Too many channels Chris@80: result = plug.process_block([[3,4],[5,6]], vh.RealTime(0, 0)) Chris@43: assert False Chris@43: except TypeError: Chris@43: pass Chris@80: result = plug.process_block([[3,3]], vh.RealTime(0, 0)) Chris@148: assert result[9] == [ { "label" : "", "values" : np.array([5.0]) } ] Chris@80: result = plug.process_block([[3,0]], vh.RealTime(0, 0)) Chris@148: assert result[9] == [ { "label" : "", "values" : np.array([4.0]) } ] Chris@40: Chris@44: def test_process_output_2ch(): Chris@82: plug = vh.load_plugin(plugin_key, rate, vh.ADAPT_NONE) Chris@44: plug.initialise(2, 2, 2) Chris@44: try: Chris@44: # Too few channels Chris@80: result = plug.process_block([[3,4]], vh.RealTime(0, 0)) Chris@44: assert False Chris@44: except TypeError: Chris@44: pass Chris@44: try: Chris@44: # Too many channels Chris@80: result = plug.process_block([[3,4],[5,6],[7,8]], vh.RealTime(0, 0)) Chris@44: assert False Chris@44: except TypeError: Chris@44: pass Chris@80: result = plug.process_block([[3,3],[4,4]], vh.RealTime(0, 0)) Chris@148: assert (result[9][0]["values"] == np.array([5.0,6.0])).all() Chris@80: result = plug.process_block([[3,0],[4,0]], vh.RealTime(0, 0)) Chris@148: assert (result[9][0]["values"] == np.array([4.0,5.0])).all() Chris@44: Chris@44: def test_process_output_3ch(): Chris@82: plug = vh.load_plugin(plugin_key, rate, vh.ADAPT_NONE) Chris@44: plug.initialise(3, 2, 2) Chris@44: try: Chris@44: # Too few channels Chris@80: result = plug.process_block([[3,4],[5,6]], vh.RealTime(0, 0)) Chris@44: assert False Chris@44: except TypeError: Chris@44: pass Chris@44: try: Chris@44: # Too many channels Chris@80: result = plug.process_block([[3,4],[5,6],[7,8],[9,10]], vh.RealTime(0, 0)) Chris@44: assert False Chris@44: except TypeError: Chris@44: pass Chris@80: result = plug.process_block([[3,3],[4,4],[5,5]], vh.RealTime(0, 0)) Chris@148: assert (result[9][0]["values"] == np.array([5.0,6.0,7.0])).all() Chris@80: result = plug.process_block([[3,0],[4,0],[5,0]], vh.RealTime(0, 0)) Chris@148: assert (result[9][0]["values"] == np.array([4.0,5.0,6.0])).all() Chris@44: Chris@44: Chris@43: