From: Daniel C. \(kzu\) <dca...@us...> - 2004-10-19 07:18:13
|
Update of /cvsroot/mvp-xml/Common/v1/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12134/v1/test Added Files: CodeWriterTest.cs Log Message: Initial tests for a new Writer-like API for CodeDom creation. --- NEW FILE: CodeWriterTest.cs --- using System; using System.CodeDom; using System.CodeDom.Compiler; using System.IO; using System.Xml; using NUnit.Framework; namespace Mvp.Xml.Tests { /// <summary/> [TestFixture] public class CodeWriterTest { [Test] public void Write1() { // Additional overloads would be available for visibility, etc. CodeStatement statement = null; CodeWriter writer = new CodeWriter(); writer.WriteStartNamespace("CodeTest"); writer.WriteImport("System"); writer.WriteStartClass("MyClass"); writer.WriteInherits(typeof(MarshalByRefObject)); // Overload to create empty implementations? or with throw new NotImplementedException()? writer.WriteImplements(typeof(IConvertible)); // A field writer.WriteField(typeof(int), "myField"); // A property writer.WriteStartProperty(typeof(int), "MyFieldProp"); writer.WriteStartGetter(); // writer.WriteGetter(statement | params statement[]); writer.WriteStatement(statement); writer.WriteEndGetter(); writer.WriteStartSetter(); // writer.WriteSetter(statement | params statement[]); writer.WriteStatement(statement); writer.WriteEndProperty(); // A method WriteMethod(visibility, return type?) writer.WriteStartMethod(MemberAttributes.Public); writer.WriteMethodParameter(typeof(string), "myparam"); writer.WriteStatement(statement); writer.WriteEndMethod(); writer.WriteEndClass(); writer.WriteEndNamespace(); CodeNamespace codens = writer.ToCodeNamespace(); string code = writer.ToCode(new Microsoft.CSharp.CSharpCodeProvider()); } internal class CodeWriter { public void WriteStartNamespace(string ns) {} public void WriteImport(string ns) {} public void WriteStartClass(string name) {} public void WriteInherits(Type type) {} public void WriteImplements(Type type) {} public void WriteField(Type type, string name) {} public void WriteStartProperty(Type type, string name) {} public void WriteStartGetter() {} // Decompose to one method per statement type. public void WriteStatement(CodeStatement statement) {} public void WriteEndGetter() {} public void WriteStartSetter() {} public void WriteEndSetter() {} public void WriteEndProperty() {} public void WriteStartMethod(MemberAttributes attributes) {} public void WriteMethodParameter(Type type, string name) {} public void WriteEndMethod() {} public void WriteEndClass() {} public void WriteEndNamespace() {} public CodeNamespace ToCodeNamespace() { return null; } public string ToCode(CodeDomProvider provider) { return null; } } } } |