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 StructureTests
	{
		#region Constants
		private const string TestStructure =
			@"struct PixelShaderInput
{
	float4 pos : SV_POSITION;
	float4 col : COLOR;
	float2 tex : TEXCOORD0;
};";
		#endregion

		#region TestParseIfStructure
		[Test]
		public static void TestParseIfStructure()
		{
			var text = new ParseTextWalker(TestStructure);
			var result = Structure.TryParse(text);

			Assert.NotNull(result);
			Assert.AreEqual("PixelShaderInput", result.Name);
			Assert.AreEqual(3, result.Variables.Count);
			Assert.AreEqual("", text.Text);
		}
		#endregion

		#region TestParseIfStructureWithoutCode
		[Test]
		public static void TestParseIfStructureWithoutCode()
		{
			var text = new ParseTextWalker("testtest");
			var result = Structure.TryParse(text);
			
			Assert.Null(result);
		}
		#endregion

		#region TestToString
		[Test]
		public static void TestToString()
		{
			var text = new ParseTextWalker(TestStructure);
			var result = Structure.TryParse(text);

			Assert.AreEqual(TestStructure.Replace("\r", ""), result.ToString());
		}
		#endregion
	}
}