void VerifyResult(string[] inputText, string expectedResult, CsdlTarget target, Action <IEdmModel> visitModel) { IEdmModel model; IEnumerable <EdmError> errors; List <XmlReader> readers = new List <XmlReader>(); foreach (string s in inputText) { readers.Add(XmlReader.Create(new StringReader(s))); } bool parsed = SchemaReader.TryParse(readers, out model, out errors); Assert.IsTrue(parsed, "Model Parsed"); Assert.IsTrue(errors.Count() == 0, "No Errors"); if (visitModel != null) { visitModel(model); } StringWriter sw = new StringWriter(); XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.Encoding = System.Text.Encoding.UTF8; XmlWriter xw = XmlWriter.Create(sw, settings); CsdlWriter.TryWriteCsdl(model, xw, target, out errors); xw.Flush(); xw.Close(); string outputText = sw.ToString(); Assert.AreEqual(expectedResult, outputText, "Expected Result = Output"); }
private void EdmxRoundTripCheck(string expectedEdmx, CsdlTarget target, IEdmModel model) { var errors = new EdmLibTestErrors(); this.VerifySemanticValidation(model, Microsoft.Test.OData.Utils.Metadata.EdmVersion.V40, errors); string actualEdmx = GetEdmx(model, target); var valid = XElement.DeepEquals(XElement.Parse(expectedEdmx), XElement.Parse(actualEdmx)); Assert.IsTrue(valid, "Invalid actual edmx."); }
/// <summary> /// Initializes a new instance of <see cref="CsdlXmlWriter"/> class. /// </summary> /// <param name="model">The Edm model.</param> /// <param name="writer">The XML writer.</param> /// <param name="edmxVersion">The Edmx version.</param> /// <param name="target">The CSDL target.</param> public CsdlXmlWriter(IEdmModel model, XmlWriter writer, Version edmxVersion, CsdlTarget target) : base(model, edmxVersion) { EdmUtil.CheckArgumentNull(writer, "writer"); this.writer = writer; this.target = target; Debug.Assert(CsdlConstants.SupportedEdmxVersions.ContainsKey(edmxVersion), "CsdlConstants.SupportedEdmxVersions.ContainsKey(edmxVersion)"); this.edmxNamespace = CsdlConstants.SupportedEdmxVersions[edmxVersion]; }
private CsdlWriter(IEdmModel model, IEnumerable <EdmSchema> schemas, XmlWriter writer, Version edmxVersion, CsdlTarget target) { this.model = model; this.schemas = schemas; this.writer = writer; this.edmxVersion = edmxVersion; this.target = target; Debug.Assert(CsdlConstants.SupportedEdmxVersions.ContainsKey(edmxVersion), "CsdlConstants.SupportedEdmxVersions.ContainsKey(edmxVersion)"); this.edmxNamespace = CsdlConstants.SupportedEdmxVersions[edmxVersion]; }
/// <summary> /// Outputs a CSDL XML artifact to the provided <see cref="XmlWriter"/>. /// </summary> /// <param name="model">Model to be written.</param> /// <param name="writer">XmlWriter the generated CSDL will be written to.</param> /// <param name="target">Target implementation of the CSDL being generated.</param> /// <param name="errors">Errors that prevented successful serialization, or no errors if serialization was successful. </param> /// <returns>A value indicating whether serialization was successful.</returns> public static bool TryWriteCsdl(IEdmModel model, XmlWriter writer, CsdlTarget target, out IEnumerable <EdmError> errors) { EdmUtil.CheckArgumentNull(model, "model"); EdmUtil.CheckArgumentNull(writer, "writer"); Version edmxVersion; if (!VerifyAndGetVersion(model, out edmxVersion, out errors)) { return(false); } CsdlWriter csdlWriter = new CsdlXmlWriter(model, writer, edmxVersion, target); csdlWriter.WriteCsdl(); errors = Enumerable.Empty <EdmError>(); return(true); }
private string GetCsdl(IEdmModel model, CsdlTarget target) { string edmx = string.Empty; using (StringWriter sw = new StringWriter()) { XmlWriterSettings settings = new XmlWriterSettings(); settings.Encoding = System.Text.Encoding.UTF8; using (XmlWriter xw = XmlWriter.Create(sw, settings)) { IEnumerable <EdmError> errors; CsdlWriter.TryWriteCsdl(model, xw, target, out errors); xw.Flush(); } edmx = sw.ToString(); } return(edmx); }
void VerifyResult(string inputText, string expectedResult, CsdlTarget target) { IEdmModel model; IEnumerable <EdmError> errors; bool parsed = SchemaReader.TryParse(new XmlReader[] { XmlReader.Create(new StringReader(inputText)) }, out model, out errors); Assert.IsTrue(parsed, "Model Parsed"); Assert.IsTrue(errors.Count() == 0, "No Errors"); StringWriter sw = new StringWriter(); XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.Encoding = System.Text.Encoding.UTF8; XmlWriter xw = XmlWriter.Create(sw, settings); CsdlWriter.TryWriteCsdl(model, xw, target, out errors); xw.Flush(); xw.Close(); string outputText = sw.ToString(); Assert.AreEqual(expectedResult, outputText, "Expected Result = Output"); }
/// <summary> /// Outputs a CSDL artifact to the provided XmlWriter. /// </summary> /// <param name="model">Model to be written.</param> /// <param name="writer">XmlWriter the generated CSDL will be written to.</param> /// <param name="target">Target implementation of the CSDL being generated.</param> /// <param name="errors">Errors that prevented successful serialization, or no errors if serialization was successful. </param> /// <returns>A value indicating whether serialization was successful.</returns> public static bool TryWriteCsdl(IEdmModel model, XmlWriter writer, CsdlTarget target, out IEnumerable <EdmError> errors) { EdmUtil.CheckArgumentNull(model, "model"); EdmUtil.CheckArgumentNull(writer, "writer"); errors = model.GetSerializationErrors(); if (errors.FirstOrDefault() != null) { return(false); } Version edmxVersion = model.GetEdmxVersion(); if (edmxVersion != null) { if (!CsdlConstants.SupportedEdmxVersions.ContainsKey(edmxVersion)) { errors = new EdmError[] { new EdmError(new CsdlLocation(0, 0), EdmErrorCode.UnknownEdmxVersion, Edm.Strings.Serializer_UnknownEdmxVersion) }; return(false); } } else if (!CsdlConstants.EdmToEdmxVersions.TryGetValue(model.GetEdmVersion() ?? EdmConstants.EdmVersionDefault, out edmxVersion)) { errors = new EdmError[] { new EdmError(new CsdlLocation(0, 0), EdmErrorCode.UnknownEdmVersion, Edm.Strings.Serializer_UnknownEdmVersion) }; return(false); } IEnumerable <EdmSchema> schemas = new EdmModelSchemaSeparationSerializationVisitor(model).GetSchemas(); CsdlWriter edmxWriter = new CsdlWriter(model, schemas, writer, edmxVersion, target); edmxWriter.WriteCsdl(); errors = Enumerable.Empty <EdmError>(); return(true); }
private void EdmxRoundTripCheck(string edmx, CsdlTarget target) { IEdmModel model = this.GetEdmxParserResult(edmx); this.EdmxRoundTripCheck(edmx, target, model); }
void VerifyResult(string[] inputText, string expectedResult, CsdlTarget target) { VerifyResult(inputText, expectedResult, target, null); }