xamarin-macios/tests/monotouch-test/AudioToolbox/AudioQueueTest.cs

86 строки
2.3 KiB
C#

//
// Unit tests for AudioQueue
//
// Authors:
// Marek Safar (marek.safar@gmail.com)
//
// Copyright 2012 Xamarin Inc. All rights reserved.
//
#if !__WATCHOS__
using System;
#if XAMCORE_2_0
using Foundation;
using UIKit;
using MediaPlayer;
using AudioToolbox;
#else
using MonoTouch.Foundation;
using MonoTouch.MediaPlayer;
using MonoTouch.AudioToolbox;
using MonoTouch.UIKit;
#endif
using NUnit.Framework;
namespace MonoTouchFixtures.AudioToolbox {
[TestFixture]
[Preserve (AllMembers = true)]
public class AudioQueueTest
{
[Test]
public void Properties ()
{
var b = new InputAudioQueue (AudioStreamBasicDescription.CreateLinearPCM ());
b.HardwareCodecPolicy = AudioQueueHardwareCodecPolicy.PreferHardware;
Assert.That (b.HardwareCodecPolicy, Is.EqualTo (AudioQueueHardwareCodecPolicy.PreferHardware), "#1");
}
[Test]
public void ChannelAssignments ()
{
if (!TestRuntime.CheckSystemAndSDKVersion (6,0))
Assert.Inconclusive ("Requires iOS 6");
var aq = new OutputAudioQueue (AudioStreamBasicDescription.CreateLinearPCM ());
Assert.AreEqual (AudioQueueStatus.Ok, aq.SetChannelAssignments (
new AudioQueueChannelAssignment ("11", 0),
new AudioQueueChannelAssignment ("22", 1)
));
}
[Test][Ignore ("Fails on some machines with undefined error code 5")]
public void ProcessingTap ()
{
if (!TestRuntime.CheckSystemAndSDKVersion (6,0))
Assert.Inconclusive ("AudioQueueProcessingTapNew requires iOS 6");
var aq = new InputAudioQueue (AudioStreamBasicDescription.CreateLinearPCM ());
AudioQueueStatus ret;
bool called = false;
using (var tap = aq.CreateProcessingTap (
delegate(AudioQueueProcessingTap audioQueueTap, uint numberOfFrames, ref AudioTimeStamp timeStamp, ref AudioQueueProcessingTapFlags flags, AudioBuffers data) {
called = true;
return 33;
}, AudioQueueProcessingTapFlags.PreEffects, out ret)) {
Assert.AreEqual (AudioQueueStatus.Ok, ret, "#1");
unsafe {
AudioQueueBuffer* buffer;
Assert.AreEqual (AudioQueueStatus.Ok, aq.AllocateBuffer (5000, out buffer), "#2");
Assert.AreEqual (AudioQueueStatus.Ok, aq.EnqueueBuffer (buffer), "#3");
//Assert.AreEqual (AudioQueueStatus.Ok, aq.Start (), "#4");
}
}
//Assert.That (called, Is.True, "#10");
}
}
}
#endif // !__WATCHOS__