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; }
}
}
}
|