using System.Runtime.InteropServices; using UnitTestSharp; namespace Susurrus.XAudio2.UnitTests { public class WaveFormatExTests : TestFixture { public class LayoutTests : TestFixture { public void IsEighteenBytes() { CheckEqual(18, Marshal.SizeOf(typeof(WaveFormatEx))); } } public class OfTests : TestFixture { public void Pcm16Mono_DescribesTwoByteFrames() { WaveFormatEx format = WaveFormatEx.Of(SampleFormat.Pcm16, channelCount: 1, sampleRate: 44100); CheckEqual(WaveFormatEx.PcmTag, format.FormatTag); CheckEqual(1, format.Channels); CheckEqual(44100u, format.SamplesPerSecond); CheckEqual(88200u, format.AverageBytesPerSecond); CheckEqual(2, format.BlockAlign); CheckEqual(16, format.BitsPerSample); CheckEqual(0, format.ExtraSize); } public void Float32Stereo_DescribesEightByteFrames() { WaveFormatEx format = WaveFormatEx.Of(SampleFormat.Float32, channelCount: 2, sampleRate: 48000); CheckEqual(WaveFormatEx.FloatTag, format.FormatTag); CheckEqual(2, format.Channels); CheckEqual(48000u, format.SamplesPerSecond); CheckEqual(384000u, format.AverageBytesPerSecond); CheckEqual(8, format.BlockAlign); CheckEqual(32, format.BitsPerSample); } } } }