Xamarin Public Jenkins (auto-signing) 95fdb59ea6 Imported Upstream version 6.6.0.89
Former-commit-id: b39a328747c2f3414dc52e009fb6f0aa80ca2492
2019-09-24 08:53:40 +00:00

287 lines
10 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using mdoc.Mono.Documentation.Updater.Formatters;
using mdoc.Test.SampleClasses;
using Mono.Documentation.Updater;
using NUnit.Framework;
namespace mdoc.Test
{
[TestFixture]
[Category("Javascript")]
[Category("Usage")]
class JsUsageFormatterTests : BasicFormatterTests<JsUsageFormatter>
{
protected override JsUsageFormatter formatter => new JsUsageFormatter();
#region IsSupported
[Test]
public void Test_IsSupportedType_WebHostHidden()
{
Assert.IsFalse(formatter.IsSupported(GetType(typeof(WebHostHiddenTestClass))));
}
[Test]
public void Test_IsSupportedMember_WebHostHidden()
{
Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(WebHostHiddenTestClass),
i => i.Name == nameof(WebHostHiddenTestClass.SomeMethod))));
}
[Test]
public void Test_IsSupportedType_Generic()
{
Assert.IsFalse(formatter.IsSupported(GetType(typeof(SomeGenericClass<>))));
}
[Test]
public void Test_IsSupportedMember_Generic()
{
Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(SomeGenericClass<>),
i => i.Name == "SomeMethod")));
}
[Test]
public void Test_IsSupportedMember_Generic2()
{
Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(SomeGenericClass<>),
i => i.Name == "SomeMethod2")));
}
[Test]
public void Test_IsSupportedMember_Generic3()
{
// WinRT doesn't support public types with generic parameters
Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(SomeGenericClass<>),
i => i.Name == "SomeMethod3")));
}
[Test]
public void Test_IsSupported_MethodWithWebHostHiddenParameter()
{
Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(SomeClass),
i => i.Name == nameof(SomeClass.SomeMethodWebHostHiddenParameter))));
}
[Test]
public void Test_IsSupported_MethodWithWebHostHiddenReturn()
{
Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(SomeClass),
i => i.Name == nameof(SomeClass.SomeMethodWebHostHiddenReturn))));
}
[Test]
public void Test_IsSupportedMember_Operator()
{
// Operator overloads are not supported as they are not supported for Windows Runtime
// (that is to say, they are not supported at the ABI level).
// C# supports operator overloading, and C# implementations get compiled to metadata as static methods
// on the type in question, such as TypeName::op_Equality, TypeName::op_GreaterThan, etc.
// You can see a list on StackOverflow. As long as theyre public, they can be invoked by name
// just like any other static method.
Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(TestClass),
i => i.Name == "op_UnaryPlus")));
}
[Test]
public void Test_IsSupportedMember_NotOperator()
{
Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(SomeClass),
i => i.Name == nameof(SomeClass.op_NotOperator))));
}
#endregion
#region Fields
[Test]
[Category("Fields")]
public void Test_Field()
=> TestFieldSignature(typeof(SomeStruct),
null, nameof(SomeStruct.IntMember));
#endregion
#region Properties
[Test]
[Category("Properties")]
public void Test_Property_0()
=> TestPropertySignature(typeof(SomeClass),
@"var int32 = someClass.property;
someClass.property = int32;",
nameof(SomeClass.Property));
[Test]
[Category("Properties")]
public void Test_Property_1()
=> TestPropertySignature(typeof(SomeClass),
@"var testClass = someClass.property2;
someClass.property2 = testClass;",
nameof(SomeClass.Property2));
[Test]
[Category("Properties")]
public void Test_Property_2()
=> TestPropertySignature(typeof(SomeClass),
"var testClass = someClass.property3;",
nameof(SomeClass.Property3));
[Test]
[Category("Properties")]
public void Test_Property_3()
=> TestPropertySignature(typeof(SomeClass),
"someClass.property4 = testClass;",
nameof(SomeClass.Property4));
[Test]
[Category("Properties")]
public void Test_Static_Property_0()
=> TestPropertySignature(typeof(SomeClass),
@"var int32 = SomeClass.staticProperty;
SomeClass.staticProperty = int32;",
nameof(SomeClass.StaticProperty));
#endregion
#region Types
[Test]
[Category("Types")]
[Category("Enums")]
public void Test_Enum_0()
=> TestTypeSignature(typeof(SomeEnum), "var value = mdoc.Test.SampleClasses.SomeEnum.testEnumElement1");
[Test]
[Category("Types")]
[Category("Enums")]
public void Test_Enum_1()
=> TestTypeSignature(typeof(SomeEmptyEnum), null);
[Test]
[Category("Types")]
[Category("Struct")]
public void Test_Struct()
=> TestTypeSignature(typeof(SomeStruct),
@"var someStruct = {
intMember : /* Your value */,
staticMember : /* Your value */,
testClassMember : /* Your value */
}");
[Test]
[Category("Types")]
[Category("Deleagates")]
public void Test_Delegate()
=> TestTypeSignature(typeof(SomeDelegate),
@"var someDelegateHandler = function(str){
/* Your code */
}");
[Test]
[Category("Types")]
[Category("Class")]
public void Test_Class_0()
=> TestTypeSignature(typeof(SomeClass),
@"var someClass = new SomeClass(i, j);");
[Test]
[Category("Types")]
[Category("Class")]
public void Test_Class_1()
=> TestTypeSignature(typeof(SomeClassWithManyConstructors), null);
#endregion
#region Methods
[Test]
[Category("Methods")]
public void Test_AyncMethod()
=> TestMethodSignature(typeof(SomeClass),
"someClass.asyncMethod().done( /* Your success and error handlers */ )",
nameof(SomeClass.AsyncMethod));
[Test]
[Category("Methods")]
public void Test_StaticAyncMethod()
=> TestMethodSignature(typeof(SomeClass),
"mdoc.Test.SampleClasses.SomeClass.staticAsyncMethod().done( /* Your success and error handlers */ )",
nameof(SomeClass.StaticAsyncMethod));
[Test]
[Category("Methods")]
public void Test_Method()
=> TestMethodSignature(typeof(SomeClass),
"someClass.someMethod()",
nameof(SomeClass.SomeMethod));
[Test]
[Category("Methods")]
public void Test_StaticMethod()
=> TestMethodSignature(typeof(SomeClass),
"mdoc.Test.SampleClasses.SomeClass.someStaticMethod()",
nameof(SomeClass.SomeStaticMethod));
[Test]
[Category("Methods")]
public void Test_MethodWithParameters()
=> TestMethodSignature(typeof(SomeClass),
"someClass.someMethodWithParameters(someClass, i)",
nameof(SomeClass.SomeMethodWithParameters));
[Test]
[Category("Methods")]
public void Test_MethodWithReturn()
=> TestMethodSignature(typeof(SomeClass),
"var int32 = someClass.someMethod2()",
nameof(SomeClass.SomeMethod2));
[Test]
[Category("Methods")]
public void Test_MethodWithReturnBool()
=> TestMethodSignature(typeof(SomeClass),
"var boolean = someClass.someMethodWithReturnBool()",
nameof(SomeClass.SomeMethodWithReturnBool));
[Test]
[Category("Methods")]
public void Test_StaticMethodWithReturn()
=> TestMethodSignature(typeof(SomeClass),
"var int32 = mdoc.Test.SampleClasses.SomeClass.someStaticMethod2()",
nameof(SomeClass.SomeStaticMethod2));
[Test]
[Category("Methods")]
[Category("Constructors")]
public void Test_Constructor()
=> TestMethodSignature(typeof(TestClass),
"var testClass = new TestClass();",
".ctor");
#endregion
#region Events
[Test]
[Category("Events")]
public void Test_Event()
=> TestEventSignature(typeof(SomeClass),
"function onAppMemoryUsageIncreased(eventArgs) { /* Your code */ }" + MemberFormatter.GetLineEnding() +
"someClass.addEventListener(\"appmemoryusageincreased\", onAppMemoryUsageIncreased);" + MemberFormatter.GetLineEnding() +
"someClass.removeEventListener(\"appmemoryusageincreased\", onAppMemoryUsageIncreased);" + MemberFormatter.GetLineEnding() +
"- or -" + MemberFormatter.GetLineEnding() +
"someClass.onappmemoryusageincreased = onAppMemoryUsageIncreased;",
nameof(SomeClass.AppMemoryUsageIncreased));
[Test]
[Category("Events")]
public void Test_StaticEvent()
=> TestEventSignature(typeof(SomeClass),
"function onStaticEvent(eventArgs) { /* Your code */ }" + MemberFormatter.GetLineEnding() +
"mdoc.Test.SampleClasses.SomeClass.addEventListener(\"staticevent\", onStaticEvent);" + MemberFormatter.GetLineEnding() +
"mdoc.Test.SampleClasses.SomeClass.removeEventListener(\"staticevent\", onStaticEvent);" + MemberFormatter.GetLineEnding() +
"- or -" + MemberFormatter.GetLineEnding() +
"mdoc.Test.SampleClasses.SomeClass.onstaticevent = onStaticEvent;",
nameof(SomeClass.StaticEvent));
[Test]
[Category("Events")]
public void Test_EventPrivate()
=> TestEventSignature(typeof(SomeClass),
null,
"PrivateEvent");
#endregion
}
}