agrobot_base/Exemplos/SharpDX-master/Source/Tests/SharpDX.Tests/ShaderBytecodeProfileTests.cs

58 lines
2.1 KiB
C#

namespace SharpDX.Tests
{
using System;
using D3DCompiler;
using Direct3D;
using NUnit.Framework;
[TestFixture]
public class ShaderBytecodeProfileTests
{
[TestCase("ps_4_0_level_9_1")]
[TestCase("ps_4_0_level_9_3")]
[TestCase("ps_4_0")]
[TestCase("ps_4_1")]
[TestCase("ps_5_0")]
public void WillReturnCorrectProfileVersionForPixelShader(string profile)
{
const string pixelShaderSourceCode = @"float4 ps() : SV_Target { return float4(0,0,0,0); }";
var bytecode = ShaderBytecode.Compile(pixelShaderSourceCode, "ps", profile).Bytecode;
var profileStruct = bytecode.GetVersion();
Assert.AreEqual(profile, profileStruct.ToString());
}
[TestCase("vs_4_0_level_9_1")]
[TestCase("vs_4_0_level_9_3")]
[TestCase("vs_4_0")]
[TestCase("vs_4_1")]
[TestCase("vs_5_0")]
public void WillReturnCorrectProfileVersionForVertexShader(string profile)
{
const string vertexShaderSourceCode = @"float4 vs() : SV_Position { return float4(0,0,0,0); }";
var bytecode = ShaderBytecode.Compile(vertexShaderSourceCode, "vs", profile).Bytecode;
var profileStruct = bytecode.GetVersion();
Assert.AreEqual(profile, profileStruct.ToString());
}
[TestCase(5, 0, 0, 0, FeatureLevel.Level_11_0)]
[TestCase(4, 1, 0, 0, FeatureLevel.Level_10_1)]
[TestCase(4, 0, 0, 0, FeatureLevel.Level_10_0)]
[TestCase(4, 0, 9, 3, FeatureLevel.Level_9_3)]
[TestCase(4, 0, 9, 1, FeatureLevel.Level_9_1)]
[TestCase(4, 0, 9, 2, FeatureLevel.Level_9_1, ExpectedException = typeof(InvalidOperationException))]
public void WillReturnCorrectFeatureLevelFromProfile(int major, int minor, int profileMajor, int profileMinor, FeatureLevel expected)
{
var profile = new ShaderProfile(ShaderVersion.VertexShader, major, minor, profileMajor, profileMinor);
var featureLevel = profile.GetFeatureLevel();
Assert.AreEqual(expected, featureLevel);
}
}
}