| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924 |
- //
- // System.Xml.Serialization.XmlCodeExporterTests
- //
- // Author:
- // Gert Driesen ([email protected])
- //
- // (C) 2006 Novell
- //
- using System;
- using System.CodeDom;
- using System.CodeDom.Compiler;
- using System.Collections;
- using System.Globalization;
- using System.IO;
- using System.Xml;
- using System.Xml.Schema;
- using System.Xml.Serialization;
- using Microsoft.CSharp;
- using NUnit.Framework;
- using MonoTests.System.Xml.TestClasses;
- namespace MonoTests.System.XmlSerialization
- {
- [TestFixture]
- public class XmlCodeExporterTests
- {
- [Test]
- public void ExportTypeMapping_ArrayClass ()
- {
- CodeNamespace codeNamespace = ExportCode (typeof (ArrayClass));
- Assert.IsNotNull (codeNamespace, "#1");
- StringWriter sw = new StringWriter ();
- CodeDomProvider provider = new CSharpCodeProvider ();
- ICodeGenerator generator = provider.CreateGenerator ();
- generator.GenerateCodeFromNamespace (codeNamespace, sw, new CodeGeneratorOptions ());
- Assert.AreEqual (string.Format(CultureInfo.InvariantCulture,
- "{0}{0}" +
- "/// <remarks/>{0}" +
- #if NET_2_0
- "[System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Xml\", \"2.0.50727.42\")]{0}" +
- "[System.SerializableAttribute()]{0}" +
- "[System.Diagnostics.DebuggerStepThroughAttribute()]{0}" +
- "[System.ComponentModel.DesignerCategoryAttribute(\"code\")]{0}" +
- "[System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=true)]{0}" +
- "public partial class ArrayClass {{{0}" +
- " {0}" +
- " private object namesField;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public object names {{{0}" +
- " get {{{0}" +
- " return this.namesField;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.namesField = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- #else
- "[System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=true)]{0}" +
- "public class ArrayClass {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public object names;{0}" +
- #endif
- "}}{0}", Environment.NewLine), sw.ToString (), "#2");
- codeNamespace = ExportCode (typeof (ArrayClass[]));
- Assert.IsNotNull (codeNamespace, "#3");
- sw.GetStringBuilder ().Length = 0;
- generator.GenerateCodeFromNamespace (codeNamespace, sw, new CodeGeneratorOptions ());
- Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "{0}{0}" +
- "/// <remarks/>{0}" +
- #if NET_2_0
- "[System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Xml\", \"2.0.50727.42\")]{0}" +
- "[System.SerializableAttribute()]{0}" +
- "[System.Diagnostics.DebuggerStepThroughAttribute()]{0}" +
- "[System.ComponentModel.DesignerCategoryAttribute(\"code\")]{0}" +
- "public partial class ArrayClass {{{0}" +
- " {0}" +
- " private object namesField;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public object names {{{0}" +
- " get {{{0}" +
- " return this.namesField;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.namesField = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- #else
- "public class ArrayClass {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public object names;{0}" +
- #endif
- "}}{0}", Environment.NewLine), sw.ToString (), "#4");
- }
- [Test]
- public void ExportTypeMapping_ArrayContainer ()
- {
- CodeNamespace codeNamespace = ExportCode (typeof (ArrayContainer));
- Assert.IsNotNull (codeNamespace, "#1");
- StringWriter sw = new StringWriter ();
- CodeDomProvider provider = new CSharpCodeProvider ();
- ICodeGenerator generator = provider.CreateGenerator ();
- generator.GenerateCodeFromNamespace (codeNamespace, sw, new CodeGeneratorOptions ());
- Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "{0}{0}" +
- "/// <remarks/>{0}" +
- #if NET_2_0
- "[System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Xml\", \"2.0.50727.42\")]{0}" +
- "[System.SerializableAttribute()]{0}" +
- "[System.Diagnostics.DebuggerStepThroughAttribute()]{0}" +
- "[System.ComponentModel.DesignerCategoryAttribute(\"code\")]{0}" +
- "[System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=true)]{0}" +
- "public partial class ArrayContainer {{{0}" +
- " {0}" +
- " private object[] itemsField;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public object[] items {{{0}" +
- " get {{{0}" +
- " return this.itemsField;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.itemsField = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- #else
- "[System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=true)]{0}" +
- "public class ArrayContainer {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public object[] items;{0}" +
- #endif
- "}}{0}", Environment.NewLine), sw.ToString (), "#2");
- }
- [Test]
- public void ExportTypeMapping_CDataContainer ()
- {
- CodeNamespace codeNamespace = ExportCode (typeof (CDataContainer));
- Assert.IsNotNull (codeNamespace, "#1");
- StringWriter sw = new StringWriter ();
- CodeDomProvider provider = new CSharpCodeProvider ();
- ICodeGenerator generator = provider.CreateGenerator ();
- generator.GenerateCodeFromNamespace (codeNamespace, sw, new CodeGeneratorOptions ());
- Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "{0}{0}" +
- "/// <remarks/>{0}" +
- #if NET_2_0
- "[System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Xml\", \"2.0.50727.42\")]{0}" +
- "[System.SerializableAttribute()]{0}" +
- "[System.Diagnostics.DebuggerStepThroughAttribute()]{0}" +
- "[System.ComponentModel.DesignerCategoryAttribute(\"code\")]{0}" +
- "[System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=true)]{0}" +
- "public partial class CDataContainer {{{0}" +
- " {0}" +
- " private System.Xml.XmlCDataSection cdataField;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public System.Xml.XmlCDataSection cdata {{{0}" +
- " get {{{0}" +
- " return this.cdataField;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.cdataField = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- #else
- "[System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=true)]{0}" +
- "public class CDataContainer {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public System.Xml.XmlCDataSection cdata;{0}" +
- #endif
- "}}{0}", Environment.NewLine), sw.ToString (), "#2");
- }
- [Test]
- [Category ("NotWorking")] // order of XmlElementAttribute's does not match that of MSFT
- [Category ("NotDotNet")] // Mono bug ##77117 and MS.NET randomly modifies the order of the elements!
- public void ExportTypeMapping_Choices ()
- {
- CodeNamespace codeNamespace = ExportCode (typeof (Choices));
- Assert.IsNotNull (codeNamespace, "#1");
- StringWriter sw = new StringWriter ();
- CodeDomProvider provider = new CSharpCodeProvider ();
- ICodeGenerator generator = provider.CreateGenerator ();
- generator.GenerateCodeFromNamespace (codeNamespace, sw, new CodeGeneratorOptions ());
- Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "{0}{0}" +
- "/// <remarks/>{0}" +
- #if NET_2_0
- "[System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Xml\", \"2.0.50727.42\")]{0}" +
- "[System.SerializableAttribute()]{0}" +
- "[System.Diagnostics.DebuggerStepThroughAttribute()]{0}" +
- "[System.ComponentModel.DesignerCategoryAttribute(\"code\")]{0}" +
- "[System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=true)]{0}" +
- "public partial class Choices {{{0}" +
- " {0}" +
- " private string myChoiceField;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlElementAttribute(\"ChoiceZero\", typeof(string))]{0}" +
- " [System.Xml.Serialization.XmlElementAttribute(\"ChoiceOne\", typeof(string))]{0}" +
- " [System.Xml.Serialization.XmlElementAttribute(\"ChoiceTwo\", typeof(string))]{0}" +
- " [System.Xml.Serialization.XmlChoiceIdentifierAttribute(\"ItemType\")]{0}" +
- " public string MyChoice {{{0}" +
- " get {{{0}" +
- " return this.myChoiceField;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.myChoiceField = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- #else
- "[System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=true)]{0}" +
- "public class Choices {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlElementAttribute(\"ChoiceZero\", typeof(string))]{0}" +
- " [System.Xml.Serialization.XmlElementAttribute(\"ChoiceTwo\", typeof(string))]{0}" +
- " [System.Xml.Serialization.XmlElementAttribute(\"ChoiceOne\", typeof(string))]{0}" +
- " [System.Xml.Serialization.XmlChoiceIdentifierAttribute(\"ItemType\")]{0}" +
- " public string MyChoice;{0}" +
- #endif
- "}}{0}", Environment.NewLine), sw.ToString (), "#2");
- }
- [Test]
- #if NET_2_0
- [Category ("NotDotNet")] // regression in MS.NET 2.0
- #endif
- [Category ("NotWorking")] // TODO: order of DefaultValueAttribute, ...
- public void ExportTypeMapping_Field ()
- {
- CodeNamespace codeNamespace = ExportCode (typeof (Field));
- Assert.IsNotNull (codeNamespace, "#1");
- StringWriter sw = new StringWriter ();
- CodeDomProvider provider = new CSharpCodeProvider ();
- ICodeGenerator generator = provider.CreateGenerator ();
- generator.GenerateCodeFromNamespace (codeNamespace, sw, new CodeGeneratorOptions ());
- Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "{0}{0}" +
- "/// <remarks/>{0}" +
- #if NET_2_0
- "[System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Xml\", \"2.0.50727.42\")]{0}" +
- "[System.SerializableAttribute()]{0}" +
- "[System.Diagnostics.DebuggerStepThroughAttribute()]{0}" +
- "[System.ComponentModel.DesignerCategoryAttribute(\"code\")]{0}" +
- "[System.Xml.Serialization.XmlRootAttribute(\"field\", Namespace=\"\", IsNullable=true)]{0}" +
- "public partial class Field {{{0}" +
- " {0}" +
- " private MonoTests.System.Xml.TestClasses.FlagEnum flags1Field = MonoTests.System.Xml.TestClasses.FlagEnum.e1;{0}" +
- " {0}" +
- " private MonoTests.System.Xml.TestClasses.FlagEnum flags2Field = MonoTests.System.Xml.TestClasses.FlagEnum.e1;{0}" +
- " {0}" +
- " private MonoTests.System.Xml.TestClasses.FlagEnum flags3Field = (MonoTests.System.Xml.TestClasses.FlagEnum.e1 | MonoTests.System.Xml.TestClasses.FlagEnum.e2);{0}" +
- " {0}" +
- " private MonoTests.System.Xml.TestClasses.FlagEnum flags4Field;{0}" +
- " {0}" +
- " private MonoTests.System.Xml.TestClasses.MapModifiers modifiersField;{0}" +
- " {0}" +
- " private MonoTests.System.Xml.TestClasses.MapModifiers modifiers2Field;{0}" +
- " {0}" +
- " private MonoTests.System.Xml.TestClasses.MapModifiers modifiers3Field = MonoTests.System.Xml.TestClasses.MapModifiers.Public;{0}" +
- " {0}" +
- " private MonoTests.System.Xml.TestClasses.MapModifiers modifiers4Field = MonoTests.System.Xml.TestClasses.MapModifiers.Protected;{0}" +
- " {0}" +
- " private MonoTests.System.Xml.TestClasses.MapModifiers modifiers5Field = MonoTests.System.Xml.TestClasses.MapModifiers.Public;{0}" +
- " {0}" +
- " private string[] namesField;{0}" +
- " {0}" +
- " private string streetField;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"flag1\")]{0}" +
- " [System.ComponentModel.DefaultValueAttribute(MonoTests.System.Xml.TestClasses.FlagEnum.e1)]{0}" +
- " public MonoTests.System.Xml.TestClasses.FlagEnum Flags1 {{{0}" +
- " get {{{0}" +
- " return this.flags1Field;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.flags1Field = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"flag2\")]{0}" +
- " [System.ComponentModel.DefaultValueAttribute(MonoTests.System.Xml.TestClasses.FlagEnum.e1)]{0}" +
- " public MonoTests.System.Xml.TestClasses.FlagEnum Flags2 {{{0}" +
- " get {{{0}" +
- " return this.flags2Field;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.flags2Field = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"flag3\", Form=System.Xml.Schema.XmlSchemaForm.Qualified)]{0}" +
- " [System.ComponentModel.DefaultValueAttribute((MonoTests.System.Xml.TestClasses.FlagEnum.e1 | MonoTests.System.Xml.TestClasses.FlagEnum.e2))]{0}" +
- " public MonoTests.System.Xml.TestClasses.FlagEnum Flags3 {{{0}" +
- " get {{{0}" +
- " return this.flags3Field;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.flags3Field = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"flag4\")]{0}" +
- " public MonoTests.System.Xml.TestClasses.FlagEnum Flags4 {{{0}" +
- " get {{{0}" +
- " return this.flags4Field;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.flags4Field = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"modifiers\")]{0}" +
- " public MonoTests.System.Xml.TestClasses.MapModifiers Modifiers {{{0}" +
- " get {{{0}" +
- " return this.modifiersField;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.modifiersField = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"modifiers2\")]{0}" +
- " public MonoTests.System.Xml.TestClasses.MapModifiers Modifiers2 {{{0}" +
- " get {{{0}" +
- " return this.modifiers2Field;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.modifiers2Field = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"modifiers3\")]{0}" +
- " [System.ComponentModel.DefaultValueAttribute(MonoTests.System.Xml.TestClasses.MapModifiers.Public)]{0}" +
- " public MonoTests.System.Xml.TestClasses.MapModifiers Modifiers3 {{{0}" +
- " get {{{0}" +
- " return this.modifiers3Field;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.modifiers3Field = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"modifiers4\")]{0}" +
- " [System.ComponentModel.DefaultValueAttribute(MonoTests.System.Xml.TestClasses.MapModifiers.Protected)]{0}" +
- " public MonoTests.System.Xml.TestClasses.MapModifiers Modifiers4 {{{0}" +
- " get {{{0}" +
- " return this.modifiers4Field;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.modifiers4Field = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"modifiers5\", Form=System.Xml.Schema.XmlSchemaForm.Qualified)]{0}" +
- " [System.ComponentModel.DefaultValueAttribute(MonoTests.System.Xml.TestClasses.MapModifiers.Public)]{0}" +
- " public MonoTests.System.Xml.TestClasses.MapModifiers Modifiers5 {{{0}" +
- " get {{{0}" +
- " return this.modifiers5Field;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.modifiers5Field = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"names\")]{0}" +
- " public string[] Names {{{0}" +
- " get {{{0}" +
- " return this.namesField;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.namesField = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"street\")]{0}" +
- " public string Street {{{0}" +
- " get {{{0}" +
- " return this.streetField;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.streetField = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- #else
- "[System.Xml.Serialization.XmlRootAttribute(\"field\", Namespace=\"\", IsNullable=true)]{0}" +
- "public class Field {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"flag1\")]{0}" +
- " [System.ComponentModel.DefaultValueAttribute(MonoTests.System.Xml.TestClasses.FlagEnum.e1)]{0}" +
- " public MonoTests.System.Xml.TestClasses.FlagEnum Flags1 = MonoTests.System.Xml.TestClasses.FlagEnum.e1;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"flag2\")]{0}" +
- " [System.ComponentModel.DefaultValueAttribute(MonoTests.System.Xml.TestClasses.FlagEnum.e1)]{0}" +
- " public MonoTests.System.Xml.TestClasses.FlagEnum Flags2 = MonoTests.System.Xml.TestClasses.FlagEnum.e1;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"flag3\", Form=System.Xml.Schema.XmlSchemaForm.Qualified)]{0}" +
- " [System.ComponentModel.DefaultValueAttribute((MonoTests.System.Xml.TestClasses.FlagEnum.e1 | MonoTests.System.Xml.TestClasses.FlagEnum.e2))]{0}" +
- " public MonoTests.System.Xml.TestClasses.FlagEnum Flags3 = (MonoTests.System.Xml.TestClasses.FlagEnum.e1 | MonoTests.System.Xml.TestClasses.FlagEnum.e2);{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"flag4\")]{0}" +
- " public MonoTests.System.Xml.TestClasses.FlagEnum Flags4;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"modifiers\")]{0}" +
- " public MonoTests.System.Xml.TestClasses.MapModifiers Modifiers;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"modifiers2\")]{0}" +
- " public MonoTests.System.Xml.TestClasses.MapModifiers Modifiers2;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"modifiers3\")]{0}" +
- " [System.ComponentModel.DefaultValueAttribute(MonoTests.System.Xml.TestClasses.MapModifiers.Public)]{0}" +
- " public MonoTests.System.Xml.TestClasses.MapModifiers Modifiers3 = MonoTests.System.Xml.TestClasses.MapModifiers.Public;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"modifiers4\")]{0}" +
- " [System.ComponentModel.DefaultValueAttribute(MonoTests.System.Xml.TestClasses.MapModifiers.Protected)]{0}" +
- " public MonoTests.System.Xml.TestClasses.MapModifiers Modifiers4 = MonoTests.System.Xml.TestClasses.MapModifiers.Protected;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"modifiers5\", Form=System.Xml.Schema.XmlSchemaForm.Qualified)]{0}" +
- " [System.ComponentModel.DefaultValueAttribute(MonoTests.System.Xml.TestClasses.MapModifiers.Public)]{0}" +
- " public MonoTests.System.Xml.TestClasses.MapModifiers Modifiers5 = MonoTests.System.Xml.TestClasses.MapModifiers.Public;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"names\")]{0}" +
- " public string[] Names;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"street\")]{0}" +
- " public string Street;{0}" +
- #endif
- "}}{0}" +
- "{0}" +
- "/// <remarks/>{0}" +
- "[System.FlagsAttribute()]{0}" +
- #if NET_2_0
- "[System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Xml\", \"2.0.50727.42\")]{0}" +
- "[System.SerializableAttribute()]{0}" +
- #endif
- "public enum FlagEnum {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"one\")]{0}" +
- " e1 = 1,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"two\")]{0}" +
- " e2 = 2,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"four\")]{0}" +
- " e4 = 4,{0}" +
- "}}{0}" +
- "{0}" +
- "/// <remarks/>{0}" +
- "[System.FlagsAttribute()]{0}" +
- #if NET_2_0
- "[System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Xml\", \"2.0.50727.42\")]{0}" +
- "[System.SerializableAttribute()]{0}" +
- #endif
- "public enum MapModifiers {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"public\")]{0}" +
- " Public = 1,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"protected\")]{0}" +
- " Protected = 2,{0}" +
- "}}{0}", Environment.NewLine), sw.ToString (), "#2");
- }
- [Test]
- public void ExportTypeMapping_ItemChoiceType ()
- {
- CodeNamespace codeNamespace = ExportCode (typeof (ItemChoiceType));
- Assert.IsNotNull (codeNamespace, "#1");
- StringWriter sw = new StringWriter ();
- CodeDomProvider provider = new CSharpCodeProvider ();
- ICodeGenerator generator = provider.CreateGenerator ();
- generator.GenerateCodeFromNamespace (codeNamespace, sw, new CodeGeneratorOptions ());
- Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "{0}{0}" +
- "/// <remarks/>{0}" +
- #if NET_2_0
- "[System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Xml\", \"2.0.50727.42\")]{0}" +
- "[System.SerializableAttribute()]{0}" +
- #endif
- "[System.Xml.Serialization.XmlTypeAttribute(IncludeInSchema=false)]{0}" +
- "[System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=false)]{0}" +
- "public enum ItemChoiceType {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " ChoiceZero,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"ChoiceOne\")]{0}" +
- " StrangeOne,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " ChoiceTwo,{0}" +
- "}}{0}", Environment.NewLine), sw.ToString (), "#2");
- codeNamespace = ExportCode (typeof (ItemChoiceType[]));
- Assert.IsNotNull (codeNamespace, "#3");
- sw.GetStringBuilder ().Length = 0;
- generator.GenerateCodeFromNamespace (codeNamespace, sw, new CodeGeneratorOptions ());
- Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "{0}{0}" +
- "/// <remarks/>{0}" +
- #if NET_2_0
- "[System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Xml\", \"2.0.50727.42\")]{0}" +
- "[System.SerializableAttribute()]{0}" +
- #endif
- "[System.Xml.Serialization.XmlTypeAttribute(IncludeInSchema=false)]{0}" +
- "public enum ItemChoiceType {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " ChoiceZero,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"ChoiceOne\")]{0}" +
- " StrangeOne,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " ChoiceTwo,{0}" +
- "}}{0}", Environment.NewLine), sw.ToString (), "#4");
- }
- [Test]
- public void ExportTypeMapping_ClassArrayContainer ()
- {
- CodeNamespace codeNamespace = ExportCode (typeof (ClassArrayContainer));
- Assert.IsNotNull (codeNamespace, "#1");
- StringWriter sw = new StringWriter ();
- CodeDomProvider provider = new CSharpCodeProvider ();
- ICodeGenerator generator = provider.CreateGenerator ();
- generator.GenerateCodeFromNamespace (codeNamespace, sw, new CodeGeneratorOptions ());
- Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "{0}{0}" +
- "/// <remarks/>{0}" +
- #if NET_2_0
- "[System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Xml\", \"2.0.50727.42\")]{0}" +
- "[System.SerializableAttribute()]{0}" +
- "[System.Diagnostics.DebuggerStepThroughAttribute()]{0}" +
- "[System.ComponentModel.DesignerCategoryAttribute(\"code\")]{0}" +
- "[System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=true)]{0}" +
- "public partial class ClassArrayContainer {{{0}" +
- " {0}" +
- " private MonoTests.System.Xml.TestClasses.SimpleClass[] itemsField;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public MonoTests.System.Xml.TestClasses.SimpleClass[] items {{{0}" +
- " get {{{0}" +
- " return this.itemsField;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.itemsField = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- "}}{0}" +
- "{0}" +
- "/// <remarks/>{0}" +
- "[System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Xml\", \"2.0.50727.42\")]{0}" +
- "[System.SerializableAttribute()]{0}" +
- "[System.Diagnostics.DebuggerStepThroughAttribute()]{0}" +
- "[System.ComponentModel.DesignerCategoryAttribute(\"code\")]{0}" +
- "public partial class SimpleClass {{{0}" +
- " {0}" +
- " private string somethingField;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public string something {{{0}" +
- " get {{{0}" +
- " return this.somethingField;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.somethingField = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- #else
- "[System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=true)]{0}" +
- "public class ClassArrayContainer {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public MonoTests.System.Xml.TestClasses.SimpleClass[] items;{0}" +
- "}}{0}" +
- "{0}" +
- "/// <remarks/>{0}" +
- "public class SimpleClass {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public string something;{0}" +
- #endif
- "}}{0}", Environment.NewLine), sw.ToString (), "#2");
- }
- [Test]
- #if NET_2_0
- [Category ("NotDotNet")] // regression in MS.NET 2.0
- #endif
- [Category ("NotWorking")] // bug #78214
- public void ExportTypeMapping_Root ()
- {
- CodeNamespace codeNamespace = ExportCode (typeof (Root));
- Assert.IsNotNull (codeNamespace, "#1");
- StringWriter sw = new StringWriter ();
- CodeDomProvider provider = new CSharpCodeProvider ();
- ICodeGenerator generator = provider.CreateGenerator ();
- generator.GenerateCodeFromNamespace (codeNamespace, sw, new CodeGeneratorOptions ());
- Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "{0}{0}" +
- "/// <remarks/>{0}" +
- "[System.Xml.Serialization.XmlTypeAttribute(Namespace=\"urn:aNS\")]{0}" +
- "[System.Xml.Serialization.XmlRootAttribute(\"root\", Namespace=\"urn:aNS\", IsNullable=false)]{0}" +
- "public class Root {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public MonoTests.System.Xml.TestClasses.OptionalValueTypeContainer OptionalValue;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public MonoTests.System.Xml.TestClasses.TestDefault Default;{0}" +
- "}}{0}" +
- "{0}" +
- "/// <remarks/>{0}" +
- "[System.Xml.Serialization.XmlTypeAttribute(TypeName=\"optionalValueType\", Namespace=\"some:urn\")]{0}" +
- "public class OptionalValueTypeContainer {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.ComponentModel.DefaultValueAttribute((MonoTests.System.Xml.TestClasses.FlagEnum.e1 | MonoTests.System.Xml.TestClasses.FlagEnum.e4))]{0}" +
- " public MonoTests.System.Xml.TestClasses.FlagEnum Attributes = (MonoTests.System.Xml.TestClasses.FlagEnum.e1 | MonoTests.System.Xml.TestClasses.FlagEnum.e4);{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.ComponentModel.DefaultValueAttribute(MonoTests.System.Xml.TestClasses.FlagEnum.e1)]{0}" +
- " public MonoTests.System.Xml.TestClasses.FlagEnum Flags = MonoTests.System.Xml.TestClasses.FlagEnum.e1;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlIgnoreAttribute()]{0}" +
- " public bool FlagsSpecified;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.ComponentModel.DefaultValueAttribute(false)]{0}" +
- " public bool IsEmpty = false;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlIgnoreAttribute()]{0}" +
- " public bool IsEmptySpecified;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.ComponentModel.DefaultValueAttribute(false)]{0}" +
- " public bool IsNull = false;{0}" +
- "}}{0}" +
- "{0}" +
- "/// <remarks/>{0}" +
- "[System.Xml.Serialization.XmlTypeAttribute(Namespace=\"some:urn\")]{0}" +
- "[System.FlagsAttribute()]{0}" +
- "public enum FlagEnum {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"one\")]{0}" +
- " e1 = 1,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"two\")]{0}" +
- " e2 = 2,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"four\")]{0}" +
- " e4 = 4,{0}" +
- "}}{0}" +
- "{0}" +
- "/// <remarks/>{0}" +
- "[System.Xml.Serialization.XmlTypeAttribute(Namespace=\"urn:myNS\")]{0}" +
- "public class TestDefault {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " public string str;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.ComponentModel.DefaultValueAttribute(\"Default Value\")]{0}" +
- " public string strDefault = \"Default Value\";{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.ComponentModel.DefaultValueAttribute(true)]{0}" +
- " public bool boolT = true;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.ComponentModel.DefaultValueAttribute(false)]{0}" +
- " public bool boolF = false;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.ComponentModel.DefaultValueAttribute(typeof(System.Decimal), \"10\")]{0}" +
- " public System.Decimal decimalval = ((System.Decimal)(10m));{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.ComponentModel.DefaultValueAttribute((MonoTests.System.Xml.TestClasses.FlagEnum.e1 | MonoTests.System.Xml.TestClasses.FlagEnum.e4))]{0}" +
- " public MonoTests.System.Xml.TestClasses.FlagEnum flag = (MonoTests.System.Xml.TestClasses.FlagEnum.e1 | MonoTests.System.Xml.TestClasses.FlagEnum.e4);{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.ComponentModel.DefaultValueAttribute((MonoTests.System.Xml.TestClasses.FlagEnum_Encoded.e1 | MonoTests.System.Xml.TestClasses.FlagEnum_Encoded.e4))]{0}" +
- " public MonoTests.System.Xml.TestClasses.FlagEnum_Encoded flagencoded = (MonoTests.System.Xml.TestClasses.FlagEnum_Encoded.e1 | MonoTests.System.Xml.TestClasses.FlagEnum_Encoded.e4);{0}" +
- "}}{0}" +
- "{0}" +
- "/// <remarks/>{0}" +
- "[System.Xml.Serialization.XmlTypeAttribute(Namespace=\"urn:myNS\")]{0}" +
- "[System.FlagsAttribute()]{0}" +
- "public enum FlagEnum {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"one\")]{0}" +
- " e1 = 1,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"two\")]{0}" +
- " e2 = 2,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"four\")]{0}" +
- " e4 = 4,{0}" +
- "}}{0}" +
- "{0}" +
- "/// <remarks/>{0}" +
- "[System.Xml.Serialization.XmlTypeAttribute(Namespace=\"urn:myNS\")]{0}" +
- "[System.FlagsAttribute()]{0}" +
- "public enum FlagEnum_Encoded {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " e1 = 1,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " e2 = 2,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " e4 = 4,{0}" +
- "}}{0}", Environment.NewLine), sw.ToString (), "#2");
- }
- [Test]
- public void ExportTypeMapping_SimpleClassWithXmlAttributes ()
- {
- CodeNamespace codeNamespace = ExportCode (typeof (SimpleClassWithXmlAttributes));
- Assert.IsNotNull (codeNamespace, "#1");
- StringWriter sw = new StringWriter ();
- CodeDomProvider provider = new CSharpCodeProvider ();
- ICodeGenerator generator = provider.CreateGenerator ();
- generator.GenerateCodeFromNamespace (codeNamespace, sw, new CodeGeneratorOptions ());
- Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "{0}{0}" +
- "/// <remarks/>{0}" +
- #if NET_2_0
- "[System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Xml\", \"2.0.50727.42\")]{0}" +
- "[System.SerializableAttribute()]{0}" +
- "[System.Diagnostics.DebuggerStepThroughAttribute()]{0}" +
- "[System.ComponentModel.DesignerCategoryAttribute(\"code\")]{0}" +
- "[System.Xml.Serialization.XmlRootAttribute(\"simple\", Namespace=\"\", IsNullable=true)]{0}" +
- "public partial class SimpleClassWithXmlAttributes {{{0}" +
- " {0}" +
- " private string somethingField;{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"member\")]{0}" +
- " public string something {{{0}" +
- " get {{{0}" +
- " return this.somethingField;{0}" +
- " }}{0}" +
- " set {{{0}" +
- " this.somethingField = value;{0}" +
- " }}{0}" +
- " }}{0}" +
- #else
- "[System.Xml.Serialization.XmlRootAttribute(\"simple\", Namespace=\"\", IsNullable=true)]{0}" +
- "public class SimpleClassWithXmlAttributes {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlAttributeAttribute(\"member\")]{0}" +
- " public string something;{0}" +
- #endif
- "}}{0}", Environment.NewLine), sw.ToString (), "#2");
- }
- [Test]
- public void ExportTypeMapping_XsdPrimitive_Arrays ()
- {
- ArrayList types = new ArrayList ();
- types.Add (typeof (sbyte[]));
- types.Add (typeof (bool[]));
- types.Add (typeof (short[]));
- types.Add (typeof (int[]));
- types.Add (typeof (long[]));
- types.Add (typeof (float[]));
- types.Add (typeof (double[]));
- types.Add (typeof (decimal[]));
- types.Add (typeof (ushort[]));
- types.Add (typeof (uint[]));
- types.Add (typeof (ulong[]));
- types.Add (typeof (DateTime[]));
- types.Add (typeof (XmlQualifiedName[]));
- types.Add (typeof (string[]));
- StringWriter sw = new StringWriter ();
- CodeDomProvider provider = new CSharpCodeProvider ();
- ICodeGenerator generator = provider.CreateGenerator ();
- foreach (Type type in types) {
- CodeNamespace codeNamespace = ExportCode (type);
- Assert.IsNotNull (codeNamespace, type.FullName + "#1");
- generator.GenerateCodeFromNamespace (codeNamespace, sw, new CodeGeneratorOptions ());
- Assert.AreEqual (Environment.NewLine, sw.ToString (),
- type.FullName + "#2");
- sw.GetStringBuilder ().Length = 0;
- }
- }
- [Test]
- public void ExportTypeMapping_ZeroFlagEnum ()
- {
- CodeNamespace codeNamespace = ExportCode (typeof (ZeroFlagEnum));
- Assert.IsNotNull (codeNamespace, "#1");
- StringWriter sw = new StringWriter ();
- CodeDomProvider provider = new CSharpCodeProvider ();
- ICodeGenerator generator = provider.CreateGenerator ();
- generator.GenerateCodeFromNamespace (codeNamespace, sw, new CodeGeneratorOptions ());
- Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
- "{0}{0}" +
- "/// <remarks/>{0}" +
- "[System.FlagsAttribute()]{0}" +
- #if NET_2_0
- "[System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Xml\", \"2.0.50727.42\")]{0}" +
- "[System.SerializableAttribute()]{0}" +
- #endif
- "[System.Xml.Serialization.XmlRootAttribute(Namespace=\"\", IsNullable=false)]{0}" +
- "public enum ZeroFlagEnum {{{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"zero\")]{0}" +
- " e0 = 1,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"o<n>e\")]{0}" +
- " e1 = 2,{0}" +
- " {0}" +
- " /// <remarks/>{0}" +
- " [System.Xml.Serialization.XmlEnumAttribute(\"tns:t<w>o\")]{0}" +
- " e2 = 4,{0}" +
- "}}{0}", Environment.NewLine), sw.ToString (), "#2");
- }
- CodeNamespace ExportCode (Type type)
- {
- XmlReflectionImporter imp = new XmlReflectionImporter ();
- XmlTypeMapping map = imp.ImportTypeMapping (type);
- CodeNamespace codeNamespace = new CodeNamespace ();
- XmlCodeExporter exp = new XmlCodeExporter (codeNamespace);
- exp.ExportTypeMapping (map);
- return codeNamespace;
- }
- [XmlRootAttribute ("root", Namespace="urn:aNS", IsNullable=false)]
- public class Root
- {
- public OptionalValueTypeContainer OptionalValue;
- public TestDefault Default;
- }
- }
- }
|