using System; using NUnit.Framework; using HLSLParser; // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. // For details see: http://anxframework.codeplex.com/license namespace HLSLParserTests { public static class TechniqueTests { #region Constants private const string TestTechnique = @"technique10 Render { pass P0 { SetVertexShader( CompileShader( vs_4_0, VS() ) ); SetGeometryShader( NULL ); SetPixelShader( CompileShader( ps_4_0, PS() ) ); } }"; private const string TestTechniqueMultipass = @"technique Render { pass P0 { SetVertexShader( CompileShader( vs_4_0, VS() ) ); SetGeometryShader( NULL ); SetPixelShader( CompileShader( ps_4_0, PS() ) ); } pass P1 { SetVertexShader( CompileShader( vs_4_0, VS() ) ); SetGeometryShader( NULL ); SetPixelShader( CompileShader( ps_4_0, PS() ) ); } }"; #endregion #region ParseIfTechnique [Test] public static void ParseIfTechnique() { var text = new ParseTextWalker(TestTechnique); var result = Technique.TryParse(text); Assert.NotNull(result); Assert.AreEqual("Render", result.Name); Assert.AreEqual(1, result.Passes.Count); } #endregion #region TestParseIfTypeDefWithoutCode [Test] public static void TestParseIfTypeDefWithoutCode() { var text = new ParseTextWalker("testtest"); var result = Technique.TryParse(text); Assert.Null(result); } #endregion #region ParseTechniqueWithMultiplePasses [Test] public static void ParseTechniqueWithMultiplePasses() { var text = new ParseTextWalker(TestTechniqueMultipass); var result = Technique.TryParse(text); Assert.NotNull(result); Assert.AreEqual("Render", result.Name); Assert.AreEqual(2, result.Passes.Count); } #endregion #region TestToString [Test] public static void TestToString() { var text = new ParseTextWalker(TestTechnique); var result = Technique.TryParse(text); string expected = @"technique10 Render { pass P0 { SetVertexShader(CompileShader(vs_4_0, VS())); SetGeometryShader(NULL); SetPixelShader(CompileShader(ps_4_0, PS())); } }"; Assert.AreEqual(expected.Replace("\r", ""), result.ToString()); } #endregion } }