⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testhelper.cs

📁 SharpDevelop2.0.0 c#开发免费工具
💻 CS
字号:
// <file>
//     <copyright see="prj:///doc/copyright.txt"/>
//     <license see="prj:///doc/license.txt"/>
//     <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
//     <version>$Revision: 1387 $</version>
// </file>

using System;
using System.IO;
using Boo.Lang.Compiler;
using Boo.Lang.Compiler.Ast;
using NUnit.Framework;

namespace NRefactoryToBooConverter.Tests
{
	public class TestHelper
	{
		protected virtual void ApplySettings(ConverterSettings settings)
		{
			settings.SimplifyTypeNames = false;
			settings.RemoveRedundantTypeReferences = false;
		}
		
		protected string Convert(string program)
		{
			ConverterSettings settings = new ConverterSettings("prog.cs");
			ApplySettings(settings);
			Module module = Parser.ParseModule(new CompileUnit(), new StringReader(program), settings);
			return GetStringFromModule(module, settings);
		}
		
		protected string ConvertVB(string program)
		{
			ConverterSettings settings = new ConverterSettings("prog.vb");
			ApplySettings(settings);
			Module module = Parser.ParseModule(new CompileUnit(), new StringReader(program), settings);
			return GetStringFromModule(module, settings);
		}
		
		string GetStringFromModule(Module module, ConverterSettings settings)
		{
			if (settings.Errors.Count > 0) {
				Assert.Fail(settings.Errors.Count.ToString() + " errors: " + settings.Errors[0]);
			}
			if (settings.Warnings.Count > 0) {
				Assert.Fail(settings.Warnings.Count.ToString() + " warnings: " + settings.Warnings[0]);
			}
			Assert.IsNotNull(module, "Module is null");
			string str = module.ToCodeString();
			str = str.Trim().Replace("\r", "");
			for (int i = 0; i < 5; i++) {
				str = str.Replace("\n\n", "\n");
				str = str.Replace("  ", " ");
			}
			return str;
		}
		
		protected void Test(string input, string output)
		{
			Assert.AreEqual(output.Replace("??", ConverterSettings.DefaultNameGenerationPrefix), Convert(input));
		}
		
		protected void TestVB(string input, string output)
		{
			Assert.AreEqual(output.Replace("??", ConverterSettings.DefaultNameGenerationPrefix), ConvertVB(input));
		}
		
		protected void TestInInterface(string input, string output)
		{
			Test("public interface ClassName {\n" + input + "\n}", "public interface ClassName:\n\t" + output.Replace("\n", "\n\t"));
		}
		
		protected void TestInClass(string input, string output)
		{
			Test("public class ClassName {\n" + input + "\n}", "public class ClassName:\n\t" + output.Replace("\n", "\n\t"));
		}
		
		protected void TestInClassVB(string input, string output)
		{
			TestVB("Public Class ClassName\n" + input + "\nEnd Class\n", "public class ClassName:\n\t" + output.Replace("\n", "\n\t"));
		}
		
		protected void TestStatement(string input, string output)
		{
			ConverterSettings dummySet = new ConverterSettings("dummy.cs");
			ApplySettings(dummySet);
			if (dummySet.RemoveRedundantTypeReferences) {
				TestInClass("public void Method() {\n" + input + "\n}", "public def Method():\n\t" + output.Replace("\n", "\n\t"));
			} else if (dummySet.SimplifyTypeNames) {
				TestInClass("public void Method() {\n" + input + "\n}", "public def Method() as void:\n\t" + output.Replace("\n", "\n\t"));
			} else {
				TestInClass("public void Method() {\n" + input + "\n}", "public def Method() as System.Void:\n\t" + output.Replace("\n", "\n\t"));
			}
		}
		
		protected void TestStatementVB(string input, string output)
		{
			TestInClassVB("Public Sub Method()\n" + input + "\nEnd Sub", "public def Method() as System.Void:\n\t" + output.Replace("\n", "\n\t"));
		}
		
		protected void TestExpr(string input, string output)
		{
			TestStatement("a = " + input + ";", "a = " + output);
		}
		
		protected void TestExprVB(string input, string output)
		{
			TestStatementVB("a = " + input, "a = " + output);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -