Axiom.RenderSystems.OpenGL.ATI.PixelShader.RunTests C# (CSharp) Method

RunTests() public method

public RunTests ( ) : bool
return bool
		public bool RunTests()
		{

			// ***TEST 1***
			// See if PositionToNextSymbol can find a valid symbol
			Console.WriteLine( "**Testing: PositionToNextSymbol\n" );

			source = testString1;
			charPos = 0;
			currentLine = 1;
			endOfSource = source.Length;
			while ( PositionToNextSymbol() )
			{
				Console.WriteLine( "  Character found: {0}   Line:{1}  : ", source[ charPos ], currentLine );
				if ( ( source[ charPos ] == test1results[ resultID ].character ) &&
					( currentLine == test1results[ resultID ].line ) )
				{
					Console.WriteLine( "Passed!" );
				}
				else
				{
					Console.WriteLine( "FAILED!" );
				}

				resultID++;
				charPos++;
			}

			Console.WriteLine( "**Finished testing: PositionToNextSymbol\n" );

			// ***TEST 2***
			// Did the type lib get initialized properly with a default name index
			Console.WriteLine( "**Testing: GetTypeDefText\n" );
			string resultStr = GetTypeDefText( Symbol.MOV );
			Console.WriteLine( " Default name of mov is {0}", resultStr );
			Console.WriteLine( "**Finished testing: GetTypeDefText\n" );

			// ***TEST 3***
			// Does IsSymbol work properly?
			Console.WriteLine( "**Testing: IsSymbol\n" );

			source = testString3;
			charPos = 0;
			Console.WriteLine( "  Before: {0}", source );
			Console.WriteLine( "  Symbol to find: {0}", testSymbols );

			if ( IsSymbol( testSymbols, out resultID ) )
			{
				Console.WriteLine( "  After: {0} : {1}", source.Substring( resultID + 1 ), ( source[ resultID + 1 ] == 'r' ) ? "Passed." : "Failed!" );
			}
			else
			{
				Console.WriteLine( "Failed!" );
			}

			Console.WriteLine( "  Symbol size: {0}", resultID );

			Console.WriteLine( "**Finished testing: IsSymbol\n" );

			// ***TEST 4***
			// Does IsFloatValue work properly?
			Console.WriteLine( "**Testing: IsFloatValue\n" );

			float val = 0;
			int charSize = 0;
			charPos = 0;

			for ( int i = 0; i < testFloatResults.Length; i++ )
			{
				source = testFloatResults[ i ].testString;
				Console.WriteLine( "     Test string {0}", source );
				IsFloatValue( out val, out charSize );
				Console.WriteLine( "     Value is: {0}, should be {1}: {2}", val, testFloatResults[ i ].val, ( val == testFloatResults[ i ].val ) ? "Passed" : "Failed" );
				Console.WriteLine( "     Char size is: {0}, should be {1}: {2}", charSize, testFloatResults[ i ].charSize, ( charSize == testFloatResults[ i ].charSize ) ? "Passed" : "Failed" );
			}

			Console.WriteLine( "**Finished testing: IsFloatValue\n" );

			// ***TEST 5***
			// Simple compile test for ps.1.4
			string CompileTest1src = "ps.1.4\n";
			Symbol[] CompileTest1result = { Symbol.PS_1_4 };
			TestCompile( "Basic PS_1_4", CompileTest1src, CompileTest1result );

			// ***TEST 6***
			// Simple compile test for ps1.1
			string CompileTest2src = "ps.1.1\n";
			Symbol[] CompileTest2result = { Symbol.PS_1_1 };
			TestCompile( "Basic PS_1_1", CompileTest2src, CompileTest2result );

			// ***TEST 7***
			// Simple compile test, ps.1.4 with defines
			string CompileTest3src = "ps.1.4\ndef c0, 1.0, 2.0, 3.0, 4.0\n";
			Symbol[] CompileTest3result = {Symbol.PS_1_4, Symbol.DEF, Symbol.C0, Symbol.COMMA, Symbol.VALUE, Symbol.COMMA,
				Symbol.VALUE, Symbol.COMMA, Symbol.VALUE, Symbol.COMMA, Symbol.VALUE};

			TestCompile( "PS_1_4 with defines", CompileTest3src, CompileTest3result );

			// ***TEST 8***
			// Simple compile test, ps.1.4 with 2 defines
			string CompileTest4src = "ps.1.4\n//test kkl \ndef c0, 1.0, 2.0, 3.0, 4.0\ndef c3, 1.0, 2.0, 3.0, 4.0\n";
			Symbol[] CompileTest4result = {Symbol.PS_1_4, Symbol.DEF, Symbol.C0, Symbol.COMMA, Symbol.VALUE, Symbol.COMMA,
				Symbol.VALUE, Symbol.COMMA, Symbol.VALUE, Symbol.COMMA, Symbol.VALUE,Symbol.DEF, Symbol.C3, Symbol.COMMA, Symbol.VALUE, Symbol.COMMA,
				Symbol.VALUE, Symbol.COMMA, Symbol.VALUE, Symbol.COMMA, Symbol.VALUE};

			TestCompile( "PS_1_4 with 2 defines", CompileTest4src, CompileTest4result );

			// ***TEST 9***
			// Simple compile test, checking machine instructions
			int[] CompileTest5MachinInstResults = { (int)MachineInstruction.SetConstants, Gl.GL_CON_0_ATI, 0 };

			TestCompile( "PS_1_4 with defines", CompileTest3src, CompileTest3result, CompileTest5MachinInstResults );

			// ***TEST 10***
			// Simple compile test, checking ALU instructions
			string CompileTest6Src = "ps.1.4\nmov r0.xzw, c1 \nmul r3, r2, c3";
			Symbol[] CompileTest6result = {Symbol.PS_1_4, Symbol.MOV, Symbol.R0, Symbol.RBA, Symbol.COMMA, Symbol.C1,
				Symbol.MUL, Symbol.R3, Symbol.COMMA, Symbol.R2, Symbol.COMMA, Symbol.C3};

			TestCompile( "PS_1_4 ALU simple", CompileTest6Src, CompileTest6result );


			// test to see if PS_1_4 compile pass 2 generates the proper machine instructions
			string CompileTest7Src = "ps.1.4\ndef c0,1.0,2.0,3.0,4.0\nmov_x8 r1,v0\nmov r0,r1.g";

			Symbol[] CompileTest7result = {
				Symbol.PS_1_4, Symbol.DEF, Symbol.C0, Symbol.COMMA, Symbol.VALUE, Symbol.COMMA,
				Symbol.VALUE, Symbol.COMMA, Symbol.VALUE, Symbol.COMMA, Symbol.VALUE, Symbol.MOV, Symbol.X8, Symbol.R1, Symbol.COMMA,
				Symbol.V0, Symbol.MOV, Symbol.R0, Symbol.COMMA, Symbol.R1, Symbol.GGGG
			};

			int[] CompileTest7MachinInstResults = {
				(int)MachineInstruction.SetConstants, Gl.GL_CON_0_ATI, 0,
				(int)MachineInstruction.ColorOp1, Gl.GL_MOV_ATI, Gl.GL_REG_1_ATI, RGB_BITS, Gl.GL_8X_BIT_ATI,	Gl.GL_PRIMARY_COLOR_ARB, Gl.GL_NONE, Gl.GL_NONE,
				(int)MachineInstruction.AlphaOp1, Gl.GL_MOV_ATI, Gl.GL_REG_1_ATI, Gl.GL_8X_BIT_ATI, Gl.GL_PRIMARY_COLOR_ARB, Gl.GL_NONE, Gl.GL_NONE,
				(int)MachineInstruction.ColorOp1, Gl.GL_MOV_ATI, Gl.GL_REG_0_ATI, RGB_BITS, Gl.GL_NONE,Gl.GL_REG_1_ATI, Gl.GL_GREEN, Gl.GL_NONE,
				(int)MachineInstruction.AlphaOp1, Gl.GL_MOV_ATI, Gl.GL_REG_0_ATI, Gl.GL_NONE, Gl.GL_REG_1_ATI, Gl.GL_GREEN, Gl.GL_NONE,
			};

			TestCompile( "PS_1_4 ALU simple modifier", CompileTest7Src, CompileTest7result, CompileTest7MachinInstResults );

			return true;
		}