using Mono.Documentation; using NUnit.Framework; using System; using System.Collections.Generic; using System.Linq; using System.IO; using System.Text; using System.Xml; namespace mdoc.Test { [TestFixture ()] public class ValidationTests { [Test ()] public void ValidationFailure () { var context = InitializeTestContext (); context.Validator.ValidateFile (new StringReader ("")); Assert.AreEqual (1, context.Errors.Count); Assert.IsTrue (context.Errors.Any (e => e.Message.Contains ("random"))); } [Test ()] public void ValidationSuccess () { var context = InitializeTestContext (); context.Validator.ValidateFile (new StringReader ("")); Assert.AreEqual (0, context.Errors.Count); } [Test] public void FrameworkAlternate_Attributes_Type () { string xmlString = @" ObjCRuntime.Introduced(ObjCRuntime.PlatformName.iOS, 9, 0, ObjCRuntime.PlatformArchitecture.None, null) ObjCRuntime.Native "; var context = InitializeTestContext (); context.Validator.ValidateFile (new StringReader (xmlString)); Assert.AreEqual (0, context.Errors.Count, context.ErrorText); } [Test] public void FrameworkAlternate_MemberSignature () { string xmlString = @" b "; var context = InitializeTestContext (); context.Validator.ValidateFile (new StringReader (xmlString)); Assert.AreEqual (0, context.Errors.Count, context.ErrorText); } [Test] public void FrameworkAlternate_TypeSignature () { string xmlString = @" "; var context = InitializeTestContext (); context.Validator.ValidateFile (new StringReader (xmlString)); Assert.AreEqual (0, context.Errors.Count, context.ErrorText); } [Test] public void FrameworkAlternate_Parameter () { string xmlString = @" Method "; var context = InitializeTestContext (); context.Validator.ValidateFile (new StringReader (xmlString)); Assert.AreEqual (0, context.Errors.Count, context.ErrorText); } #region Test Context Stuff struct ValidationContext { public MDocValidator Validator; public List Errors; public string ErrorText{ get => Errors.Aggregate ( new StringBuilder (), (sb, e) => { sb.Append (e.Message + ";"); return sb; } ).ToString (); } } private static ValidationContext InitializeTestContext () { List errors = new List (); MDocValidator validator = new MDocValidator (); validator.InitializeSchema ( "ecma", (a, b) => errors.Add (b.Exception) ); ValidationContext context = new ValidationContext { Validator = validator, Errors = errors }; return context; } #endregion } }