Imported Upstream version 5.20.0.180

Former-commit-id: ff953ca879339fe1e1211f7220f563e1342e66cb
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2019-02-04 20:11:37 +00:00
parent 0e2d47d1c8
commit 0510252385
3360 changed files with 83827 additions and 39243 deletions

View File

@@ -51,6 +51,11 @@ namespace Mono.Cecil.Tests {
return ModuleDefinition.ReadModule (GetAssemblyResourcePath (name, GetType ().Assembly), new ReaderParameters (mode));
}
public Stream GetResourceStream (string name)
{
return new FileStream (GetAssemblyResourcePath (name, GetType ().Assembly), FileMode.Open, FileAccess.Read);
}
internal Image GetResourceImage (string name)
{
var file = new FileStream (GetAssemblyResourcePath (name, GetType ().Assembly), FileMode.Open, FileAccess.Read);

View File

@@ -449,6 +449,21 @@ namespace Mono.Cecil.Tests {
});
}
[Test]
public void NullCharInString ()
{
TestCSharp ("CustomAttributes.cs", module => {
var type = module.GetType ("NullCharInString");
var attributes = type.CustomAttributes;
Assert.AreEqual (1, attributes.Count);
var attribute = attributes [0];
Assert.AreEqual (1, attribute.ConstructorArguments.Count);
var value = (string) attribute.ConstructorArguments [0].Value;
Assert.AreEqual (8, value.Length);
Assert.AreEqual ('\0', value [7]);
});
}
#if !READ_ONLY
[Test]
public void DefineCustomAttributeFromBlob ()

View File

@@ -364,6 +364,8 @@ namespace Mono.Cecil.Tests {
var eppdb = header.Entries [1];
Assert.AreEqual (ImageDebugType.EmbeddedPortablePdb, eppdb.Directory.Type);
Assert.AreEqual (0x0100, eppdb.Directory.MajorVersion);
Assert.AreEqual (0x0100, eppdb.Directory.MinorVersion);
}, symbolReaderProvider: typeof (EmbeddedPortablePdbReaderProvider), symbolWriterProvider: typeof (EmbeddedPortablePdbWriterProvider));
}

View File

@@ -80,6 +80,58 @@ namespace Mono.Cecil.Tests {
Assert.IsFalse (module.HasSymbols);
}
}
[Test]
public void DefaultPortablePdbStream ()
{
using (var symbolStream = GetResourceStream ("PdbTarget.pdb")) {
var parameters = new ReaderParameters {
SymbolReaderProvider = new PortablePdbReaderProvider (),
SymbolStream = symbolStream,
};
using (var module = GetResourceModule ("PdbTarget.exe", parameters)) {
Assert.IsNotNull (module.SymbolReader);
Assert.IsTrue (module.HasSymbols);
Assert.AreEqual (typeof (PortablePdbReader), module.SymbolReader.GetType ());
}
}
}
[Test]
public void DefaultPdbStream ()
{
using (var symbolStream = GetResourceStream ("libpdb.pdb")) {
var parameters = new ReaderParameters {
SymbolReaderProvider = new NativePdbReaderProvider (),
SymbolStream = symbolStream,
};
using (var module = GetResourceModule ("libpdb.dll", parameters)) {
Assert.IsNotNull (module.SymbolReader);
Assert.IsTrue (module.HasSymbols);
Assert.AreEqual (typeof (NativePdbReader), module.SymbolReader.GetType ());
}
}
}
[Test]
public void DefaultMdbStream ()
{
using (var symbolStream = GetResourceStream ("libmdb.dll.mdb")) {
var parameters = new ReaderParameters {
SymbolReaderProvider = new MdbReaderProvider (),
SymbolStream = symbolStream,
};
using (var module = GetResourceModule ("libmdb.dll", parameters)) {
Assert.IsNotNull (module.SymbolReader);
Assert.IsTrue (module.HasSymbols);
Assert.AreEqual (typeof (MdbReader), module.SymbolReader.GetType ());
}
}
}
}
}
#endif
#endif

View File

@@ -30,6 +30,19 @@ namespace Mono.Cecil.Tests {
});
}
[Test]
public void EmptyStructLayout ()
{
TestModule ("hello.exe", module =>
{
var foo = new TypeDefinition ("", "Foo",
TypeAttributes.Sealed | TypeAttributes.BeforeFieldInit | TypeAttributes.SequentialLayout,
module.ImportReference (typeof (ValueType))) ;
module.Types.Add (foo) ;
}) ;
}
[Test]
public void SimpleInterfaces ()
{