1 2TestBus : UnitTest { 3 4 ignore_test_free { 5 var s,busses,numBusses; 6 s = Server.default; 7 s.newAllocators; 8 9 numBusses = s.options.numAudioBusChannels - (s.options.numOutputBusChannels + s.options.numInputBusChannels); 10 11 busses = Array.fill( numBusses,{ 12 Bus.audio(s,1); 13 }); 14 this.assert(busses.every(_.notNil),"should be able to allocate all busses"); 15 this.assertEquals( busses.select(_.notNil).size, numBusses," should be numAudioBusChannels busses"); 16 17 busses.do({ |b| b.free }); 18 19 busses = Array.fill( numBusses,{ 20 Bus.audio(s,1); 21 }); 22 23 this.assert(busses.every(_.notNil),"after freeing, should be able to re-allocate all busses"); 24 this.assertEquals( busses.select(_.notNil).size, numBusses," should be numAudioBusChannels busses"); 25 26 } 27 test_controlFree { 28 var s,busses; 29 s = Server.default; 30 s.newAllocators; 31 32 busses = Array.fill( s.options.numControlBusChannels,{ 33 Bus.control(s,1); 34 }); 35 this.assertEquals( busses.select(_.notNil).size, s.options.numControlBusChannels," should be numControlBusChannels busses"); 36 37 busses.do({ |b| b.free }); 38 39 busses = Array.fill( s.options.numControlBusChannels,{ 40 Bus.control(s,1); 41 }); 42 43 this.assertEquals( busses.select(_.notNil).size, s.options.numControlBusChannels," should be numControlBusChannels busses able to allocate again after freeing all"); 44 } 45 46 // note: server reboot does not de-allocate busses 47 // and isn't supposed to 48 49 test_get { 50 var s, bus, set_value, get_value; 51 s = this.s; 52 this.bootServer; 53 54 set_value = 88.88; 55 bus = Bus.control(s); 56 s.sync; 57 58 bus.set(set_value); 59 s.sync; 60 61 get_value = 0; 62 bus.get({ |value| 63 get_value = value; 64 }); 65 66 0.2.wait; 67 68 // Some precision is lost when converting to 32-bit float, hence the use of 69 // assertFloatEquals. 70 this.assertFloatEquals(get_value, set_value, "Bus:get works", 0.001); 71 72 bus.free; 73 } 74 75 test_getn { 76 var s, bus, set_values, get_values; 77 s = this.s; 78 this.bootServer; 79 80 set_values = [88.88, 8, 888.8, 8.88]; 81 bus = Bus.control(s, set_values.size); 82 s.sync; 83 84 bus.setn(set_values); 85 s.sync; 86 87 get_values = [0, 0]; 88 bus.getn(2, { |values| 89 get_values = values; 90 }); 91 92 0.2.wait; 93 94 // See comments in test_get. 95 this.assertArrayFloatEquals(get_values, set_values[0..1], "Bus:getn works", 0.001); 96 97 bus.free; 98 } 99 100} 101