Chris@19
|
1
|
Chris@19
|
2 import vampyhost as vh
|
Chris@40
|
3 import numpy as np
|
Chris@19
|
4
|
Chris@19
|
5 testPluginKey = "vamp-test-plugin:vamp-test-plugin"
|
Chris@19
|
6
|
Chris@41
|
7 ##!!! todo: support for, and test for, correct version of test plugin (with parameter)
|
Chris@41
|
8
|
Chris@19
|
9 rate = 44100
|
Chris@19
|
10
|
Chris@19
|
11 def test_load_unload():
|
Chris@19
|
12 plug = vh.loadPlugin(testPluginKey, rate)
|
Chris@23
|
13 plug.unload()
|
Chris@19
|
14 try:
|
Chris@23
|
15 plug.unload() # should throw but not crash
|
Chris@19
|
16 assert(False)
|
Chris@19
|
17 except AttributeError:
|
Chris@19
|
18 pass
|
Chris@19
|
19
|
Chris@20
|
20 def test_get_set_parameter():
|
Chris@20
|
21 plug = vh.loadPlugin(testPluginKey, rate)
|
Chris@37
|
22 value = plug.getParameterValue("produce_output")
|
Chris@20
|
23 assert(value == 1.0)
|
Chris@37
|
24 plug.setParameterValue("produce_output", 0.0)
|
Chris@37
|
25 value = plug.getParameterValue("produce_output")
|
Chris@20
|
26 assert(value == 0.0)
|
Chris@20
|
27
|
Chris@19
|
28 def test_process_without_initialise():
|
Chris@19
|
29 plug = vh.loadPlugin(testPluginKey, rate)
|
Chris@19
|
30 try:
|
Chris@23
|
31 plug.process([[1,2,3,4]], vh.RealTime(0, 0))
|
Chris@40
|
32 assert False
|
Chris@19
|
33 except StandardError:
|
Chris@19
|
34 pass
|
Chris@19
|
35
|
Chris@40
|
36 def test_process_input_format():
|
Chris@20
|
37 plug = vh.loadPlugin(testPluginKey, rate)
|
Chris@40
|
38 plug.initialise(2, 4, 4) # channels, stepsize, blocksize
|
Chris@40
|
39 result = plug.process([[1,2,3,4],[5,6,7,8]], vh.RealTime(0, 0))
|
Chris@40
|
40 result = plug.process([np.array([1,2,3,4]),np.array([5,6,7,8])], vh.RealTime(0, 0))
|
Chris@40
|
41 result = plug.process(np.array([[1,2,3,4],[5,6,7,8]]), vh.RealTime(0, 0))
|
Chris@40
|
42 try:
|
Chris@40
|
43 # Wrong number of channels
|
Chris@40
|
44 result = plug.process(np.array([[1,2,3,4]]), vh.RealTime(0, 0))
|
Chris@40
|
45 assert False
|
Chris@40
|
46 except TypeError:
|
Chris@40
|
47 pass
|
Chris@40
|
48 try:
|
Chris@40
|
49 # Wrong number of samples per channel
|
Chris@40
|
50 result = plug.process(np.array([[1,2,3],[4,5,6]]), vh.RealTime(0, 0))
|
Chris@40
|
51 assert False
|
Chris@40
|
52 except TypeError:
|
Chris@40
|
53 pass
|
Chris@40
|
54 try:
|
Chris@40
|
55 # Differing numbers of samples per channel
|
Chris@40
|
56 result = plug.process(np.array([[1,2,3,4],[5,6,7]]), vh.RealTime(0, 0))
|
Chris@40
|
57 assert False
|
Chris@40
|
58 except TypeError:
|
Chris@40
|
59 pass
|
Chris@20
|
60
|
Chris@43
|
61 def test_process_output_1ch():
|
Chris@43
|
62 plug = vh.loadPlugin(testPluginKey, rate)
|
Chris@43
|
63 plug.initialise(1, 2, 2)
|
Chris@43
|
64 try:
|
Chris@43
|
65 # Too many channels
|
Chris@43
|
66 result = plug.process([[3,4],[5,6]], vh.RealTime(0, 0))
|
Chris@43
|
67 assert False
|
Chris@43
|
68 except TypeError:
|
Chris@43
|
69 pass
|
Chris@43
|
70 result = plug.process([[3,3]], vh.RealTime(0, 0))
|
Chris@43
|
71 assert result[8] == [ { "label" : "", "values" : np.array([3.0]) } ]
|
Chris@40
|
72
|
Chris@44
|
73 def test_process_output_2ch():
|
Chris@44
|
74 plug = vh.loadPlugin(testPluginKey, rate)
|
Chris@44
|
75 plug.initialise(2, 2, 2)
|
Chris@44
|
76 try:
|
Chris@44
|
77 # Too few channels
|
Chris@44
|
78 result = plug.process([[3,4]], vh.RealTime(0, 0))
|
Chris@44
|
79 assert False
|
Chris@44
|
80 except TypeError:
|
Chris@44
|
81 pass
|
Chris@44
|
82 try:
|
Chris@44
|
83 # Too many channels
|
Chris@44
|
84 result = plug.process([[3,4],[5,6],[7,8]], vh.RealTime(0, 0))
|
Chris@44
|
85 assert False
|
Chris@44
|
86 except TypeError:
|
Chris@44
|
87 pass
|
Chris@44
|
88 result = plug.process([[3,3],[4,4]], vh.RealTime(0, 0))
|
Chris@44
|
89 assert (result[8][0]["values"] == np.array([3.0,4.0])).all()
|
Chris@44
|
90
|
Chris@44
|
91 def test_process_output_3ch():
|
Chris@44
|
92 plug = vh.loadPlugin(testPluginKey, rate)
|
Chris@44
|
93 plug.initialise(3, 2, 2)
|
Chris@44
|
94 try:
|
Chris@44
|
95 # Too few channels
|
Chris@44
|
96 result = plug.process([[3,4],[5,6]], vh.RealTime(0, 0))
|
Chris@44
|
97 assert False
|
Chris@44
|
98 except TypeError:
|
Chris@44
|
99 pass
|
Chris@44
|
100 try:
|
Chris@44
|
101 # Too many channels
|
Chris@44
|
102 result = plug.process([[3,4],[5,6],[7,8],[9,10]], vh.RealTime(0, 0))
|
Chris@44
|
103 assert False
|
Chris@44
|
104 except TypeError:
|
Chris@44
|
105 pass
|
Chris@44
|
106 result = plug.process([[3,3],[4,4],[5,5]], vh.RealTime(0, 0))
|
Chris@44
|
107 assert (result[8][0]["values"] == np.array([3.0,4.0,5.0])).all()
|
Chris@44
|
108
|
Chris@44
|
109
|
Chris@43
|
110
|