public void TestService2Procedures() { var service = services.ServicesList.First(x => x.Name == "TestService2"); int foundProcedures = 0; foreach (var proc in service.Procedures) { if (proc.Name == "ClassTypeFromOtherServiceAsParameter") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(TestService.TestClass), "obj"); MessageAssert.HasReturnType(proc, typeof(int)); MessageAssert.HasDocumentation(proc, "<doc>\n<summary>\nTestService2 procedure documentation.\n</summary>\n</doc>"); } else if (proc.Name == "ClassTypeFromOtherServiceAsReturn") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(string), "value"); MessageAssert.HasReturnType(proc, typeof(TestService.TestClass)); MessageAssert.HasNoDocumentation(proc); } else { Assert.Fail(); } foundProcedures++; } Assert.AreEqual(2, foundProcedures); Assert.AreEqual(2, service.Procedures.Count); }
public void TestServiceEnumerations() { var service = services.ServicesList.First(x => x.Name == "TestService"); int foundEnumerations = 0; foreach (var enumeration in service.Enumerations) { if (enumeration.Name == "TestEnum") { MessageAssert.HasDocumentation(enumeration, "<doc>\n<summary>\nDocumentation string for TestEnum.\n</summary>\n</doc>"); MessageAssert.HasValues(enumeration, 3); MessageAssert.HasValue(enumeration, 0, "X", 0, "<doc>\n<summary>\nDocumented enum field\n</summary>\n</doc>"); MessageAssert.HasValue(enumeration, 1, "Y", 1); MessageAssert.HasValue(enumeration, 2, "Z", 2); } else { Assert.Fail(); } foundEnumerations++; } Assert.AreEqual(1, foundEnumerations); Assert.AreEqual(1, service.Enumerations.Count); }
public void TestServiceClasses() { var service = services.ServicesList.First(x => x.Name == "TestService"); int foundClasses = 0; foreach (var cls in service.Classes) { if (cls.Name == "TestClass") { MessageAssert.HasNoDocumentation(cls); } else if (cls.Name == "TestTopLevelClass") { MessageAssert.HasDocumentation(cls, "<doc>\n<summary>\nA class defined at the top level, but included in a service\n</summary>\n</doc>"); } else { Assert.Fail(); } foundClasses++; } Assert.AreEqual(2, foundClasses); Assert.AreEqual(2, service.Classes.Count); }
public void GetServices() { var services = KRPC.Service.KRPC.GetServices(); Assert.IsNotNull(services); Assert.AreEqual(4, services.ServicesList.Count); var service = services.ServicesList.First(x => x.Name == "KRPC"); Assert.AreEqual(6, service.Procedures.Count); Assert.AreEqual(0, service.Classes.Count); Assert.AreEqual(1, service.Enumerations.Count); int foundProcedures = 0; foreach (var method in service.Procedures) { if (method.Name == "GetStatus") { MessageAssert.HasReturnType(method, "KRPC.Status"); MessageAssert.HasNoParameters(method); MessageAssert.HasNoAttributes(method); MessageAssert.HasDocumentation(method); } else if (method.Name == "GetServices") { MessageAssert.HasReturnType(method, "KRPC.Services"); MessageAssert.HasNoParameters(method); MessageAssert.HasNoAttributes(method); MessageAssert.HasDocumentation(method); } else if (method.Name == "AddStream") { MessageAssert.HasReturnType(method, "uint32"); MessageAssert.HasParameters(method, 1); MessageAssert.HasParameter(method, 0, "KRPC.Request", "request"); MessageAssert.HasNoAttributes(method); MessageAssert.HasDocumentation(method); } else if (method.Name == "RemoveStream") { MessageAssert.HasNoReturnType(method); MessageAssert.HasParameters(method, 1); MessageAssert.HasParameter(method, 0, "uint32", "id"); MessageAssert.HasNoAttributes(method); MessageAssert.HasDocumentation(method); } else if (method.Name == "get_Clients") { MessageAssert.HasReturnType(method, "KRPC.List"); MessageAssert.HasNoParameters(method); MessageAssert.HasAttributes(method, 2); MessageAssert.HasAttribute(method, 0, "Property.Get(Clients)"); MessageAssert.HasAttribute(method, 1, "ReturnType.List(Tuple(bytes,string,string))"); MessageAssert.HasDocumentation(method); } else if (method.Name == "get_CurrentGameScene") { MessageAssert.HasReturnType(method, "int32"); MessageAssert.HasNoParameters(method); MessageAssert.HasAttributes(method, 2); MessageAssert.HasAttribute(method, 0, "Property.Get(CurrentGameScene)"); MessageAssert.HasAttribute(method, 1, "ReturnType.Enum(KRPC.GameScene)"); MessageAssert.HasDocumentation(method); } else { Assert.Fail(); } foundProcedures++; } Assert.AreEqual(6, foundProcedures); bool foundEnumeration = false; foreach (var enumeration in service.Enumerations) { if (enumeration.Name == "GameScene") { foundEnumeration = true; MessageAssert.HasDocumentation(enumeration, "<doc>\n<summary>\nThe game scene. See <see cref=\"M:KRPC.CurrentGameScene\" />.\n</summary>\n</doc>"); MessageAssert.HasValues(enumeration, 5); MessageAssert.HasValue(enumeration, 0, "SpaceCenter", 0, "<doc>\n<summary>\nThe game scene showing the Kerbal Space Center buildings.\n</summary>\n</doc>"); MessageAssert.HasValue(enumeration, 1, "Flight", 1, "<doc>\n<summary>\nThe game scene showing a vessel in flight (or on the launchpad/runway).\n</summary>\n</doc>"); MessageAssert.HasValue(enumeration, 2, "TrackingStation", 2, "<doc>\n<summary>\nThe tracking station.\n</summary>\n</doc>"); MessageAssert.HasValue(enumeration, 3, "EditorVAB", 3, "<doc>\n<summary>\nThe Vehicle Assembly Building.\n</summary>\n</doc>"); MessageAssert.HasValue(enumeration, 4, "EditorSPH", 4, "<doc>\n<summary>\nThe Space Plane Hangar.\n</summary>\n</doc>"); } } Assert.IsTrue(foundEnumeration); }
public void GetServices() { var services = KRPC.Service.KRPC.KRPC.GetServices(); Assert.IsNotNull(services); Assert.AreEqual(4, services.ServicesList.Count); var service = services.ServicesList.First(x => x.Name == "KRPC"); Assert.AreEqual(39, service.Procedures.Count); Assert.AreEqual(1, service.Classes.Count); Assert.AreEqual(1, service.Enumerations.Count); int foundProcedures = 0; foreach (var proc in service.Procedures) { if (proc.Name == "GetClientID") { MessageAssert.HasReturnType(proc, typeof(byte[])); MessageAssert.HasNoParameters(proc); MessageAssert.HasDocumentation(proc); } else if (proc.Name == "GetClientName") { MessageAssert.HasReturnType(proc, typeof(string)); MessageAssert.HasNoParameters(proc); MessageAssert.HasDocumentation(proc); } else if (proc.Name == "GetStatus") { MessageAssert.HasReturnType(proc, typeof(KRPC.Service.Messages.Status)); MessageAssert.HasNoParameters(proc); MessageAssert.HasDocumentation(proc); } else if (proc.Name == "GetServices") { MessageAssert.HasReturnType(proc, typeof(KRPC.Service.Messages.Services)); MessageAssert.HasNoParameters(proc); MessageAssert.HasDocumentation(proc); } else if (proc.Name == "AddStream") { MessageAssert.HasReturnType(proc, typeof(KRPC.Service.Messages.Stream)); MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, typeof(KRPC.Service.Messages.ProcedureCall), "call"); MessageAssert.HasParameterWithDefaultValue(proc, 1, typeof(bool), "start", true); MessageAssert.HasDocumentation(proc); } else if (proc.Name == "StartStream") { MessageAssert.HasNoReturnType(proc); MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(ulong), "id"); MessageAssert.HasDocumentation(proc); } else if (proc.Name == "SetStreamRate") { MessageAssert.HasNoReturnType(proc); MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, typeof(ulong), "id"); MessageAssert.HasParameter(proc, 1, typeof(float), "rate"); MessageAssert.HasDocumentation(proc); } else if (proc.Name == "RemoveStream") { MessageAssert.HasNoReturnType(proc); MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(ulong), "id"); MessageAssert.HasDocumentation(proc); } else if (proc.Name == "get_Clients") { MessageAssert.HasReturnType(proc, typeof(IList <KRPC.Utils.Tuple <byte[], string, string> >)); MessageAssert.HasNoParameters(proc); MessageAssert.HasDocumentation(proc); } else if (proc.Name == "get_CurrentGameScene") { MessageAssert.HasReturnType(proc, typeof(KRPC.Service.KRPC.KRPC.GameScene)); MessageAssert.HasNoParameters(proc); MessageAssert.HasDocumentation(proc); } else { foundProcedures--; } foundProcedures++; } Assert.AreEqual(10, foundProcedures); bool foundEnumeration = false; foreach (var enumeration in service.Enumerations) { if (enumeration.Name == "GameScene") { foundEnumeration = true; MessageAssert.HasDocumentation(enumeration, "<doc>\n<summary>\nThe game scene. See <see cref=\"M:KRPC.CurrentGameScene\" />.\n</summary>\n</doc>"); MessageAssert.HasValues(enumeration, 5); MessageAssert.HasValue(enumeration, 0, "SpaceCenter", 0, "<doc>\n<summary>\nThe game scene showing the Kerbal Space Center buildings.\n</summary>\n</doc>"); MessageAssert.HasValue(enumeration, 1, "Flight", 1, "<doc>\n<summary>\nThe game scene showing a vessel in flight (or on the launchpad/runway).\n</summary>\n</doc>"); MessageAssert.HasValue(enumeration, 2, "TrackingStation", 2, "<doc>\n<summary>\nThe tracking station.\n</summary>\n</doc>"); MessageAssert.HasValue(enumeration, 3, "EditorVAB", 3, "<doc>\n<summary>\nThe Vehicle Assembly Building.\n</summary>\n</doc>"); MessageAssert.HasValue(enumeration, 4, "EditorSPH", 4, "<doc>\n<summary>\nThe Space Plane Hangar.\n</summary>\n</doc>"); } } Assert.IsTrue(foundEnumeration); int foundExceptions = 0; foreach (var exception in service.Exceptions) { if (exception.Name == "InvalidOperationException") { MessageAssert.HasDocumentation(exception, "<doc>\n<summary>\nA method call was made to a method that is invalid\ngiven the current state of the object.\n</summary>\n</doc>"); } else if (exception.Name == "ArgumentException") { MessageAssert.HasDocumentation(exception, "<doc>\n<summary>\nA method was invoked where at least one of the passed arguments does not\nmeet the parameter specification of the method.\n</summary>\n</doc>"); } else if (exception.Name == "ArgumentNullException") { MessageAssert.HasDocumentation(exception, "<doc>\n<summary>\nA null reference was passed to a method that does not accept it as a valid argument.\n</summary>\n</doc>"); } else if (exception.Name == "ArgumentOutOfRangeException") { MessageAssert.HasDocumentation(exception, "<doc>\n<summary>\nThe value of an argument is outside the allowable range of values as defined by the invoked method.\n</summary>\n</doc>"); } foundExceptions++; } Assert.AreEqual(4, foundExceptions); }
public void TestServiceProcedures() { var service = services.ServicesList.First(x => x.Name == "TestService"); int foundProcedures = 0; foreach (var proc in service.Procedures) { if (proc.Name == "ProcedureNoArgsNoReturn") { MessageAssert.HasNoParameters(proc); MessageAssert.HasNoReturnType(proc); MessageAssert.HasDocumentation(proc, "<doc>\n<summary>\nProcedure with no return arguments.\n</summary>\n</doc>"); } else if (proc.Name == "ProcedureSingleArgNoReturn") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(string), "x"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasDocumentation(proc, "<doc>\n<summary>\nProcedure with a single return argument.\n</summary>\n</doc>"); } else if (proc.Name == "ProcedureThreeArgsNoReturn") { MessageAssert.HasParameters(proc, 3); MessageAssert.HasParameter(proc, 0, typeof(string), "x"); MessageAssert.HasParameter(proc, 1, typeof(int), "y"); MessageAssert.HasParameter(proc, 2, typeof(string), "z"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureNoArgsReturns") { MessageAssert.HasNoParameters(proc); MessageAssert.HasReturnType(proc, typeof(string)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureSingleArgReturns") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(string), "x"); MessageAssert.HasReturnType(proc, typeof(string)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "get_PropertyWithGetAndSet") { MessageAssert.HasNoParameters(proc); MessageAssert.HasReturnType(proc, typeof(string)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "set_PropertyWithGetAndSet") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(string), "value"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "get_PropertyWithGet") { MessageAssert.HasNoParameters(proc); MessageAssert.HasReturnType(proc, typeof(string)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "set_PropertyWithSet") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(string), "value"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "CreateTestObject") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(string), "value"); MessageAssert.HasReturnType(proc, typeof(TestService.TestClass)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "DeleteTestObject") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(TestService.TestClass), "obj"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "EchoTestObject") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(TestService.TestClass), "obj"); MessageAssert.HasReturnType(proc, typeof(TestService.TestClass), true); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ReturnNullWhenNotAllowed") { MessageAssert.HasNoParameters(proc); MessageAssert.HasReturnType(proc, typeof(TestService.TestClass), false); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_FloatToString") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, typeof(TestService.TestClass), "this"); MessageAssert.HasParameter(proc, 1, typeof(float), "x"); MessageAssert.HasReturnType(proc, typeof(string)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_ObjectToString") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, typeof(TestService.TestClass), "this"); MessageAssert.HasParameter(proc, 1, typeof(TestService.TestClass), "other"); MessageAssert.HasReturnType(proc, typeof(string)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_IntToString") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, typeof(TestService.TestClass), "this"); MessageAssert.HasParameterWithDefaultValue(proc, 1, typeof(int), "x", 42); MessageAssert.HasReturnType(proc, typeof(string)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_get_IntProperty") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(TestService.TestClass), "this"); MessageAssert.HasReturnType(proc, typeof(int)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_set_IntProperty") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, typeof(TestService.TestClass), "this"); MessageAssert.HasParameter(proc, 1, typeof(int), "value"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_get_ObjectProperty") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(TestService.TestClass), "this"); MessageAssert.HasReturnType(proc, typeof(TestService.TestClass), true); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_set_ObjectProperty") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, typeof(TestService.TestClass), "this"); MessageAssert.HasParameter(proc, 1, typeof(TestService.TestClass), "value"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_static_StaticMethod") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameterWithDefaultValue(proc, 0, typeof(string), "a", string.Empty); MessageAssert.HasReturnType(proc, typeof(string)); } else if (proc.Name == "TestTopLevelClass_AMethod") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, typeof(TestTopLevelClass), "this"); MessageAssert.HasParameter(proc, 1, typeof(int), "x"); MessageAssert.HasReturnType(proc, typeof(string)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestTopLevelClass_get_AProperty") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(TestTopLevelClass), "this"); MessageAssert.HasReturnType(proc, typeof(string)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestTopLevelClass_set_AProperty") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, typeof(TestTopLevelClass), "this"); MessageAssert.HasParameter(proc, 1, typeof(string), "value"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureSingleOptionalArgNoReturn") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameterWithDefaultValue(proc, 0, typeof(string), "x", "foo"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureThreeOptionalArgsNoReturn") { MessageAssert.HasParameters(proc, 3); MessageAssert.HasParameter(proc, 0, typeof(float), "x"); MessageAssert.HasParameterWithDefaultValue(proc, 1, typeof(string), "y", "jeb"); MessageAssert.HasParameterWithDefaultValue(proc, 2, typeof(int), "z", 42); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureOptionalNullArg") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameterWithDefaultValue(proc, 0, typeof(TestService.TestClass), "x", null); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureEnumArg") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(TestService.TestEnum), "x"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureEnumReturn") { MessageAssert.HasNoParameters(proc); MessageAssert.HasReturnType(proc, typeof(TestService.TestEnum)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "BlockingProcedureNoReturn") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(int), "n"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "BlockingProcedureReturns") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, typeof(int), "n"); MessageAssert.HasParameterWithDefaultValue(proc, 1, typeof(int), "sum", 0); MessageAssert.HasReturnType(proc, typeof(int)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "EchoList") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(IList <string>), "l"); MessageAssert.HasReturnType(proc, typeof(IList <string>)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "EchoDictionary") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(IDictionary <int, string>), "d"); MessageAssert.HasReturnType(proc, typeof(IDictionary <int, string>)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "EchoSet") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(HashSet <int>), "h"); MessageAssert.HasReturnType(proc, typeof(HashSet <int>)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "EchoTuple") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(KRPC.Utils.Tuple <int, bool>), "t"); MessageAssert.HasReturnType(proc, typeof(KRPC.Utils.Tuple <int, bool>)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "EchoNestedCollection") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(IDictionary <int, IList <string> >), "c"); MessageAssert.HasReturnType(proc, typeof(IDictionary <int, IList <string> >)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "EchoListOfObjects") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, typeof(IList <TestService.TestClass>), "l"); MessageAssert.HasReturnType(proc, typeof(IList <TestService.TestClass>)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TupleDefault") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameterWithDefaultValue(proc, 0, typeof(KRPC.Utils.Tuple <int, bool>), "x", new KRPC.Utils.Tuple <int, bool> (1, false)); MessageAssert.HasReturnType(proc, typeof(KRPC.Utils.Tuple <int, bool>)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ListDefault") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameterWithDefaultValue(proc, 0, typeof(IList <int>), "x", new List <int> { 1, 2, 3 }); MessageAssert.HasReturnType(proc, typeof(IList <int>)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "SetDefault") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameterWithDefaultValue(proc, 0, typeof(HashSet <int>), "x", new HashSet <int> { 1, 2, 3 }); MessageAssert.HasReturnType(proc, typeof(HashSet <int>)); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "DictionaryDefault") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameterWithDefaultValue(proc, 0, typeof(IDictionary <int, bool>), "x", new Dictionary <int, bool> { { 1, false }, { 2, true } }); MessageAssert.HasReturnType(proc, typeof(IDictionary <int, bool>)); MessageAssert.HasNoDocumentation(proc); } else { Assert.Fail("Procedure not found"); } foundProcedures++; } Assert.AreEqual(41, foundProcedures); Assert.AreEqual(41, service.Procedures.Count); }
public void TestServiceProcedures() { var service = services.ServicesList.First(x => x.Name == "TestService"); int foundProcedures = 0; foreach (var proc in service.Procedures) { if (proc.Name == "ProcedureNoArgsNoReturn") { MessageAssert.HasNoParameters(proc); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoAttributes(proc); MessageAssert.HasDocumentation(proc, "<doc>\n <summary>\nProcedure with no return arguments.\n</summary>\n</doc>"); } else if (proc.Name == "ProcedureSingleArgNoReturn") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "KRPC.Response", "data"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoAttributes(proc); MessageAssert.HasDocumentation(proc, "<doc>\n <summary>\nProcedure with a single return argument.\n</summary>\n</doc>"); } else if (proc.Name == "ProcedureThreeArgsNoReturn") { MessageAssert.HasParameters(proc, 3); MessageAssert.HasParameter(proc, 0, "KRPC.Response", "x"); MessageAssert.HasParameter(proc, 1, "KRPC.Request", "y"); MessageAssert.HasParameter(proc, 2, "KRPC.Response", "z"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoAttributes(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureNoArgsReturns") { MessageAssert.HasNoParameters(proc); MessageAssert.HasReturnType(proc, "KRPC.Response"); MessageAssert.HasNoAttributes(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureSingleArgReturns") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "KRPC.Response", "data"); MessageAssert.HasReturnType(proc, "KRPC.Response"); MessageAssert.HasNoAttributes(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureWithValueTypes") { MessageAssert.HasParameters(proc, 3); MessageAssert.HasParameter(proc, 0, "float", "x"); MessageAssert.HasParameter(proc, 1, "string", "y"); MessageAssert.HasParameter(proc, 2, "bytes", "z"); MessageAssert.HasReturnType(proc, "int32"); MessageAssert.HasNoAttributes(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "get_PropertyWithGetAndSet") { MessageAssert.HasNoParameters(proc); MessageAssert.HasReturnType(proc, "string"); MessageAssert.HasAttributes(proc, 1); MessageAssert.HasAttribute(proc, 0, "Property.Get(PropertyWithGetAndSet)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "set_PropertyWithGetAndSet") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "string", "value"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasAttributes(proc, 1); MessageAssert.HasAttribute(proc, 0, "Property.Set(PropertyWithGetAndSet)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "get_PropertyWithGet") { MessageAssert.HasNoParameters(proc); MessageAssert.HasReturnType(proc, "string"); MessageAssert.HasAttributes(proc, 1); MessageAssert.HasAttribute(proc, 0, "Property.Get(PropertyWithGet)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "set_PropertyWithSet") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "string", "value"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasAttributes(proc, 1); MessageAssert.HasAttribute(proc, 0, "Property.Set(PropertyWithSet)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "CreateTestObject") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "string", "value"); MessageAssert.HasReturnType(proc, "uint64"); MessageAssert.HasAttributes(proc, 1); MessageAssert.HasAttribute(proc, 0, "ReturnType.Class(TestService.TestClass)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "DeleteTestObject") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "uint64", "obj"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasAttributes(proc, 1); MessageAssert.HasAttribute(proc, 0, "ParameterType(0).Class(TestService.TestClass)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "EchoTestObject") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "uint64", "obj"); MessageAssert.HasReturnType(proc, "uint64"); MessageAssert.HasAttributes(proc, 2); MessageAssert.HasAttribute(proc, 0, "ParameterType(0).Class(TestService.TestClass)"); MessageAssert.HasAttribute(proc, 1, "ReturnType.Class(TestService.TestClass)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_FloatToString") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, "uint64", "this"); MessageAssert.HasParameter(proc, 1, "float", "x"); MessageAssert.HasReturnType(proc, "string"); MessageAssert.HasAttributes(proc, 2); MessageAssert.HasAttribute(proc, 0, "Class.Method(TestService.TestClass,FloatToString)"); MessageAssert.HasAttribute(proc, 1, "ParameterType(0).Class(TestService.TestClass)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_ObjectToString") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, "uint64", "this"); MessageAssert.HasParameter(proc, 1, "uint64", "other"); MessageAssert.HasReturnType(proc, "string"); MessageAssert.HasAttributes(proc, 3); MessageAssert.HasAttribute(proc, 0, "Class.Method(TestService.TestClass,ObjectToString)"); MessageAssert.HasAttribute(proc, 1, "ParameterType(0).Class(TestService.TestClass)"); MessageAssert.HasAttribute(proc, 2, "ParameterType(1).Class(TestService.TestClass)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_IntToString") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, "uint64", "this"); MessageAssert.HasParameterWithDefaultValue(proc, 1, "int32", "x", 42); MessageAssert.HasReturnType(proc, "string"); MessageAssert.HasAttributes(proc, 2); MessageAssert.HasAttribute(proc, 0, "Class.Method(TestService.TestClass,IntToString)"); MessageAssert.HasAttribute(proc, 1, "ParameterType(0).Class(TestService.TestClass)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_get_IntProperty") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "uint64", "this"); MessageAssert.HasReturnType(proc, "int32"); MessageAssert.HasAttributes(proc, 2); MessageAssert.HasAttribute(proc, 0, "Class.Property.Get(TestService.TestClass,IntProperty)"); MessageAssert.HasAttribute(proc, 1, "ParameterType(0).Class(TestService.TestClass)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_set_IntProperty") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, "uint64", "this"); MessageAssert.HasParameter(proc, 1, "int32", "value"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasAttributes(proc, 2); MessageAssert.HasAttribute(proc, 0, "Class.Property.Set(TestService.TestClass,IntProperty)"); MessageAssert.HasAttribute(proc, 1, "ParameterType(0).Class(TestService.TestClass)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_get_ObjectProperty") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "uint64", "this"); MessageAssert.HasReturnType(proc, "uint64"); MessageAssert.HasAttributes(proc, 3); MessageAssert.HasAttribute(proc, 0, "Class.Property.Get(TestService.TestClass,ObjectProperty)"); MessageAssert.HasAttribute(proc, 1, "ParameterType(0).Class(TestService.TestClass)"); MessageAssert.HasAttribute(proc, 2, "ReturnType.Class(TestService.TestClass)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_set_ObjectProperty") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, "uint64", "this"); MessageAssert.HasParameter(proc, 1, "uint64", "value"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasAttributes(proc, 3); MessageAssert.HasAttribute(proc, 0, "Class.Property.Set(TestService.TestClass,ObjectProperty)"); MessageAssert.HasAttribute(proc, 1, "ParameterType(0).Class(TestService.TestClass)"); MessageAssert.HasAttribute(proc, 2, "ParameterType(1).Class(TestService.TestClass)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestClass_StaticMethod") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameterWithDefaultValue(proc, 0, "string", "a", String.Empty); MessageAssert.HasReturnType(proc, "string"); MessageAssert.HasAttributes(proc, 1); MessageAssert.HasAttribute(proc, 0, "Class.StaticMethod(TestService.TestClass,StaticMethod)"); } else if (proc.Name == "TestTopLevelClass_AMethod") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, "uint64", "this"); MessageAssert.HasParameter(proc, 1, "int32", "x"); MessageAssert.HasReturnType(proc, "string"); MessageAssert.HasAttributes(proc, 2); MessageAssert.HasAttribute(proc, 0, "Class.Method(TestService.TestTopLevelClass,AMethod)"); MessageAssert.HasAttribute(proc, 1, "ParameterType(0).Class(TestService.TestTopLevelClass)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestTopLevelClass_get_AProperty") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "uint64", "this"); MessageAssert.HasReturnType(proc, "string"); MessageAssert.HasAttributes(proc, 2); MessageAssert.HasAttribute(proc, 0, "Class.Property.Get(TestService.TestTopLevelClass,AProperty)"); MessageAssert.HasAttribute(proc, 1, "ParameterType(0).Class(TestService.TestTopLevelClass)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "TestTopLevelClass_set_AProperty") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, "uint64", "this"); MessageAssert.HasParameter(proc, 1, "string", "value"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasAttributes(proc, 2); MessageAssert.HasAttribute(proc, 0, "Class.Property.Set(TestService.TestTopLevelClass,AProperty)"); MessageAssert.HasAttribute(proc, 1, "ParameterType(0).Class(TestService.TestTopLevelClass)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureSingleOptionalArgNoReturn") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameterWithDefaultValue(proc, 0, "string", "x", "foo"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoAttributes(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureThreeOptionalArgsNoReturn") { MessageAssert.HasParameters(proc, 3); MessageAssert.HasParameter(proc, 0, "float", "x"); MessageAssert.HasParameterWithDefaultValue(proc, 1, "string", "y", "jeb"); MessageAssert.HasParameterWithDefaultValue(proc, 2, "int32", "z", 42); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoAttributes(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureOptionalNullArg") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameterWithDefaultValue(proc, 0, "uint64", "x", null); MessageAssert.HasNoReturnType(proc); MessageAssert.HasAttributes(proc, 1); MessageAssert.HasAttribute(proc, 0, "ParameterType(0).Class(TestService.TestClass)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureEnumArg") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "int32", "x"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasAttributes(proc, 1); MessageAssert.HasAttribute(proc, 0, "ParameterType(0).Enum(TestService.TestEnum)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "ProcedureEnumReturn") { MessageAssert.HasNoParameters(proc); MessageAssert.HasReturnType(proc, "int32"); MessageAssert.HasAttributes(proc, 1); MessageAssert.HasAttribute(proc, 0, "ReturnType.Enum(TestService.TestEnum)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "BlockingProcedureNoReturn") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "int32", "n"); MessageAssert.HasNoReturnType(proc); MessageAssert.HasNoAttributes(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "BlockingProcedureReturns") { MessageAssert.HasParameters(proc, 2); MessageAssert.HasParameter(proc, 0, "int32", "n"); MessageAssert.HasParameterWithDefaultValue(proc, 1, "int32", "sum", 0); MessageAssert.HasReturnType(proc, "int32"); MessageAssert.HasNoAttributes(proc); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "EchoList") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "KRPC.List", "l"); MessageAssert.HasReturnType(proc, "KRPC.List"); MessageAssert.HasAttributes(proc, 2); MessageAssert.HasAttribute(proc, 0, "ParameterType(0).List(string)"); MessageAssert.HasAttribute(proc, 1, "ReturnType.List(string)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "EchoDictionary") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "KRPC.Dictionary", "d"); MessageAssert.HasReturnType(proc, "KRPC.Dictionary"); MessageAssert.HasAttributes(proc, 2); MessageAssert.HasAttribute(proc, 0, "ParameterType(0).Dictionary(int32,string)"); MessageAssert.HasAttribute(proc, 1, "ReturnType.Dictionary(int32,string)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "EchoSet") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "KRPC.Set", "h"); MessageAssert.HasReturnType(proc, "KRPC.Set"); MessageAssert.HasAttributes(proc, 2); MessageAssert.HasAttribute(proc, 0, "ParameterType(0).Set(int32)"); MessageAssert.HasAttribute(proc, 1, "ReturnType.Set(int32)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "EchoTuple") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "KRPC.Tuple", "t"); MessageAssert.HasReturnType(proc, "KRPC.Tuple"); MessageAssert.HasAttributes(proc, 2); MessageAssert.HasAttribute(proc, 0, "ParameterType(0).Tuple(int32,bool)"); MessageAssert.HasAttribute(proc, 1, "ReturnType.Tuple(int32,bool)"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "EchoNestedCollection") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "KRPC.Dictionary", "c"); MessageAssert.HasReturnType(proc, "KRPC.Dictionary"); MessageAssert.HasAttributes(proc, 2); MessageAssert.HasAttribute(proc, 0, "ParameterType(0).Dictionary(int32,List(string))"); MessageAssert.HasAttribute(proc, 1, "ReturnType.Dictionary(int32,List(string))"); MessageAssert.HasNoDocumentation(proc); } else if (proc.Name == "EchoListOfObjects") { MessageAssert.HasParameters(proc, 1); MessageAssert.HasParameter(proc, 0, "KRPC.List", "l"); MessageAssert.HasReturnType(proc, "KRPC.List"); MessageAssert.HasAttributes(proc, 2); MessageAssert.HasAttribute(proc, 0, "ParameterType(0).List(Class(TestService.TestClass))"); MessageAssert.HasAttribute(proc, 1, "ReturnType.List(Class(TestService.TestClass))"); MessageAssert.HasNoDocumentation(proc); } else { Assert.Fail(); } foundProcedures++; } Assert.AreEqual(37, foundProcedures); Assert.AreEqual(37, service.Procedures.Count); }