You've already forked linux-packaging-mono
Imported Upstream version 4.8.0.309
Former-commit-id: 5f9c6ae75f295e057a7d2971f3a6df4656fa8850
This commit is contained in:
parent
ee1447783b
commit
94b2861243
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
using Mono.Cecil;
|
||||
using Mono.Cecil.Metadata;
|
||||
|
||||
using NUnit.Framework;
|
||||
|
||||
@@ -11,107 +7,136 @@ namespace Mono.Cecil.Tests {
|
||||
[TestFixture]
|
||||
public class ParameterTests : BaseTestFixture {
|
||||
|
||||
[TestModule ("marshal.dll")]
|
||||
public void MarshalAsI4 (ModuleDefinition module)
|
||||
[Test]
|
||||
public void MarshalAsI4 ()
|
||||
{
|
||||
var bar = module.GetType ("Bar");
|
||||
var pan = bar.GetMethod ("Pan");
|
||||
TestModule ("marshal.dll", module => {
|
||||
var bar = module.GetType ("Bar");
|
||||
var pan = bar.GetMethod ("Pan");
|
||||
|
||||
Assert.AreEqual (1, pan.Parameters.Count);
|
||||
Assert.AreEqual (1, pan.Parameters.Count);
|
||||
|
||||
var parameter = pan.Parameters [0];
|
||||
var parameter = pan.Parameters [0];
|
||||
|
||||
Assert.IsTrue (parameter.HasMarshalInfo);
|
||||
var info = parameter.MarshalInfo;
|
||||
Assert.IsTrue (parameter.HasMarshalInfo);
|
||||
var info = parameter.MarshalInfo;
|
||||
|
||||
Assert.AreEqual (typeof (MarshalInfo), info.GetType ());
|
||||
Assert.AreEqual (NativeType.I4, info.NativeType);
|
||||
Assert.AreEqual (typeof (MarshalInfo), info.GetType ());
|
||||
Assert.AreEqual (NativeType.I4, info.NativeType);
|
||||
});
|
||||
}
|
||||
|
||||
[TestModule ("marshal.dll")]
|
||||
public void CustomMarshaler (ModuleDefinition module)
|
||||
[Test]
|
||||
public void CustomMarshaler ()
|
||||
{
|
||||
var bar = module.GetType ("Bar");
|
||||
var pan = bar.GetMethod ("PanPan");
|
||||
TestModule ("marshal.dll", module => {
|
||||
var bar = module.GetType ("Bar");
|
||||
var pan = bar.GetMethod ("PanPan");
|
||||
|
||||
var parameter = pan.Parameters [0];
|
||||
var parameter = pan.Parameters [0];
|
||||
|
||||
Assert.IsTrue (parameter.HasMarshalInfo);
|
||||
Assert.IsTrue (parameter.HasMarshalInfo);
|
||||
|
||||
var info = (CustomMarshalInfo) parameter.MarshalInfo;
|
||||
var info = (CustomMarshalInfo) parameter.MarshalInfo;
|
||||
|
||||
Assert.AreEqual (Guid.Empty, info.Guid);
|
||||
Assert.AreEqual (string.Empty, info.UnmanagedType);
|
||||
Assert.AreEqual (NativeType.CustomMarshaler, info.NativeType);
|
||||
Assert.AreEqual ("nomnom", info.Cookie);
|
||||
Assert.AreEqual (Guid.Empty, info.Guid);
|
||||
Assert.AreEqual (string.Empty, info.UnmanagedType);
|
||||
Assert.AreEqual (NativeType.CustomMarshaler, info.NativeType);
|
||||
Assert.AreEqual ("nomnom", info.Cookie);
|
||||
|
||||
Assert.AreEqual ("Boc", info.ManagedType.FullName);
|
||||
Assert.AreEqual (module, info.ManagedType.Scope);
|
||||
Assert.AreEqual ("Boc", info.ManagedType.FullName);
|
||||
Assert.AreEqual (module, info.ManagedType.Scope);
|
||||
});
|
||||
}
|
||||
|
||||
[TestModule ("marshal.dll")]
|
||||
public void SafeArrayMarshaler (ModuleDefinition module)
|
||||
[Test]
|
||||
public void SafeArrayMarshaler ()
|
||||
{
|
||||
var bar = module.GetType ("Bar");
|
||||
var pan = bar.GetMethod ("PanPan");
|
||||
TestModule ("marshal.dll", module => {
|
||||
var bar = module.GetType ("Bar");
|
||||
var pan = bar.GetMethod ("PanPan");
|
||||
|
||||
Assert.IsTrue (pan.MethodReturnType.HasMarshalInfo);
|
||||
Assert.IsTrue (pan.MethodReturnType.HasMarshalInfo);
|
||||
|
||||
var info = (SafeArrayMarshalInfo) pan.MethodReturnType.MarshalInfo;
|
||||
var info = (SafeArrayMarshalInfo) pan.MethodReturnType.MarshalInfo;
|
||||
|
||||
Assert.AreEqual (VariantType.Dispatch, info.ElementType);
|
||||
Assert.AreEqual (VariantType.Dispatch, info.ElementType);
|
||||
});
|
||||
}
|
||||
|
||||
[TestModule ("marshal.dll")]
|
||||
public void ArrayMarshaler (ModuleDefinition module)
|
||||
[Test]
|
||||
public void ArrayMarshaler ()
|
||||
{
|
||||
var bar = module.GetType ("Bar");
|
||||
var pan = bar.GetMethod ("PanPan");
|
||||
TestModule ("marshal.dll", module => {
|
||||
var bar = module.GetType ("Bar");
|
||||
var pan = bar.GetMethod ("PanPan");
|
||||
|
||||
var parameter = pan.Parameters [1];
|
||||
var parameter = pan.Parameters [1];
|
||||
|
||||
Assert.IsTrue (parameter.HasMarshalInfo);
|
||||
Assert.IsTrue (parameter.HasMarshalInfo);
|
||||
|
||||
var info = (ArrayMarshalInfo) parameter.MarshalInfo;
|
||||
var info = (ArrayMarshalInfo) parameter.MarshalInfo;
|
||||
|
||||
Assert.AreEqual (NativeType.I8, info.ElementType);
|
||||
Assert.AreEqual (66, info.Size);
|
||||
Assert.AreEqual (2, info.SizeParameterIndex);
|
||||
Assert.AreEqual (NativeType.I8, info.ElementType);
|
||||
Assert.AreEqual (66, info.Size);
|
||||
Assert.AreEqual (2, info.SizeParameterIndex);
|
||||
|
||||
parameter = pan.Parameters [3];
|
||||
parameter = pan.Parameters [3];
|
||||
|
||||
Assert.IsTrue (parameter.HasMarshalInfo);
|
||||
Assert.IsTrue (parameter.HasMarshalInfo);
|
||||
|
||||
info = (ArrayMarshalInfo) parameter.MarshalInfo;
|
||||
info = (ArrayMarshalInfo) parameter.MarshalInfo;
|
||||
|
||||
Assert.AreEqual (NativeType.I2, info.ElementType);
|
||||
Assert.AreEqual (-1, info.Size);
|
||||
Assert.AreEqual (-1, info.SizeParameterIndex);
|
||||
Assert.AreEqual (NativeType.I2, info.ElementType);
|
||||
Assert.AreEqual (-1, info.Size);
|
||||
Assert.AreEqual (-1, info.SizeParameterIndex);
|
||||
});
|
||||
}
|
||||
|
||||
[TestModule ("marshal.dll")]
|
||||
public void ArrayMarshalerSized (ModuleDefinition module)
|
||||
[Test]
|
||||
public void ArrayMarshalerSized ()
|
||||
{
|
||||
var delegate_type = module.GetType ("SomeMethod");
|
||||
var parameter = delegate_type.GetMethod ("Invoke").Parameters [1];
|
||||
TestModule ("marshal.dll", module => {
|
||||
var delegate_type = module.GetType ("SomeMethod");
|
||||
var parameter = delegate_type.GetMethod ("Invoke").Parameters [1];
|
||||
|
||||
Assert.IsTrue (parameter.HasMarshalInfo);
|
||||
var array_info = (ArrayMarshalInfo) parameter.MarshalInfo;
|
||||
Assert.IsTrue (parameter.HasMarshalInfo);
|
||||
var array_info = (ArrayMarshalInfo) parameter.MarshalInfo;
|
||||
|
||||
Assert.IsNotNull (array_info);
|
||||
Assert.IsNotNull (array_info);
|
||||
|
||||
Assert.AreEqual (0, array_info.SizeParameterMultiplier);
|
||||
Assert.AreEqual (0, array_info.SizeParameterMultiplier);
|
||||
});
|
||||
}
|
||||
|
||||
[TestModule ("boxedoptarg.dll")]
|
||||
public void BoxedDefaultArgumentValue (ModuleDefinition module)
|
||||
[Test]
|
||||
public void NullableConstant ()
|
||||
{
|
||||
var foo = module.GetType ("Foo");
|
||||
var bar = foo.GetMethod ("Bar");
|
||||
var baz = bar.Parameters [0];
|
||||
TestModule ("nullable-constant.exe", module => {
|
||||
var type = module.GetType ("Program");
|
||||
var method = type.GetMethod ("Foo");
|
||||
|
||||
Assert.IsTrue (baz.HasConstant);
|
||||
Assert.AreEqual (-1, baz.Constant);
|
||||
Assert.IsTrue (method.Parameters [0].HasConstant);
|
||||
Assert.IsTrue (method.Parameters [1].HasConstant);
|
||||
Assert.IsTrue (method.Parameters [2].HasConstant);
|
||||
|
||||
Assert.AreEqual (1234, method.Parameters [0].Constant);
|
||||
Assert.AreEqual (null, method.Parameters [1].Constant);
|
||||
Assert.AreEqual (12, method.Parameters [2].Constant);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void BoxedDefaultArgumentValue ()
|
||||
{
|
||||
TestModule ("boxedoptarg.dll", module => {
|
||||
var foo = module.GetType ("Foo");
|
||||
var bar = foo.GetMethod ("Bar");
|
||||
var baz = bar.Parameters [0];
|
||||
|
||||
Assert.IsTrue (baz.HasConstant);
|
||||
Assert.AreEqual (-1, baz.Constant);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -207,18 +232,43 @@ namespace Mono.Cecil.Tests {
|
||||
Assert.AreEqual (2, z.Index);
|
||||
}
|
||||
|
||||
[TestIL ("hello.il")]
|
||||
public void GenericParameterConstant (ModuleDefinition module)
|
||||
[Test]
|
||||
public void GenericParameterConstant ()
|
||||
{
|
||||
var foo = module.GetType ("Foo");
|
||||
var method = foo.GetMethod ("GetState");
|
||||
TestIL ("hello.il", module => {
|
||||
var foo = module.GetType ("Foo");
|
||||
var method = foo.GetMethod ("GetState");
|
||||
|
||||
Assert.IsNotNull (method);
|
||||
Assert.IsNotNull (method);
|
||||
|
||||
var parameter = method.Parameters [1];
|
||||
var parameter = method.Parameters [1];
|
||||
|
||||
Assert.IsTrue (parameter.HasConstant);
|
||||
Assert.IsNull (parameter.Constant);
|
||||
Assert.IsTrue (parameter.HasConstant);
|
||||
Assert.IsNull (parameter.Constant);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void NullablePrimitiveParameterConstant ()
|
||||
{
|
||||
TestModule ("nullable-parameter.dll", module => {
|
||||
var test = module.GetType ("Test");
|
||||
var method = test.GetMethod ("Foo");
|
||||
|
||||
Assert.IsNotNull (method);
|
||||
|
||||
var param = method.Parameters [0];
|
||||
Assert.IsTrue (param.HasConstant);
|
||||
Assert.AreEqual (1234, param.Constant);
|
||||
|
||||
param = method.Parameters [1];
|
||||
Assert.IsTrue (param.HasConstant);
|
||||
Assert.AreEqual (null, param.Constant);
|
||||
|
||||
param = method.Parameters [2];
|
||||
Assert.IsTrue (param.HasConstant);
|
||||
Assert.AreEqual (12, param.Constant);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user