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