/Test/Mono.Cecil.Tests/AssemblyTests.cs
http://github.com/jbevain/cecil · C# · 109 lines · 88 code · 20 blank · 1 comment · 2 complexity · be512f5d7ab8a361c4651d8603d204a5 MD5 · raw file
- using System;
- using Mono.Cecil;
- using Mono.Cecil.Cil;
- using NUnit.Framework;
- namespace Mono.Cecil.Tests {
- [TestFixture]
- public class AssemblyTests : BaseTestFixture {
- [Test]
- public void Name ()
- {
- TestModule ("hello.exe", module => {
- var name = module.Assembly.Name;
- Assert.IsNotNull (name);
- Assert.AreEqual ("hello", name.Name);
- Assert.AreEqual ("", name.Culture);
- Assert.AreEqual (new Version (0, 0, 0, 0), name.Version);
- Assert.AreEqual (AssemblyHashAlgorithm.SHA1, name.HashAlgorithm);
- });
- }
- [Test]
- public void ParseLowerCaseNameParts ()
- {
- var name = AssemblyNameReference.Parse ("Foo, version=2.0.0.0, culture=fr-FR");
- Assert.AreEqual ("Foo", name.Name);
- Assert.AreEqual (2, name.Version.Major);
- Assert.AreEqual (0, name.Version.Minor);
- Assert.AreEqual ("fr-FR", name.Culture);
- }
- [Test]
- public void ZeroVersion ()
- {
- var name = new AssemblyNameReference ("Foo", null);
- Assert.AreEqual ("0.0.0.0", name.Version.ToString (fieldCount: 4));
- Assert.AreEqual ("Foo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", name.FullName);
- name = new AssemblyNameReference ("Foo", new Version (0, 0, 0, 0));
- Assert.AreEqual ("0.0.0.0", name.Version.ToString (fieldCount: 4));
- Assert.AreEqual ("Foo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", name.FullName);
- }
- [Test]
- public void NoBuildOrMajor ()
- {
- var name = new AssemblyNameReference ("Foo", new Version (0, 0));
- Assert.AreEqual ("Foo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", name.FullName);
- name = new AssemblyNameReference ("Foo", new Version (0, 0, 0));
- Assert.AreEqual ("Foo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", name.FullName);
- }
- [Test]
- public void Retargetable ()
- {
- if (Platform.OnCoreClr)
- return;
- TestModule ("RetargetableExample.dll", module => {
- var type = module.Types [1];
- var property = type.Properties [0];
- var attribute = property.CustomAttributes [0];
- var argumentType = ((CustomAttributeArgument) attribute.ConstructorArguments [0].Value).Type;
- var reference = (AssemblyNameReference) argumentType.Scope;
- Assert.AreEqual (
- "System.Data, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes",
- reference.FullName);
- }, verify: !Platform.OnMono);
- }
- [Test]
- public void SystemRuntime ()
- {
- if (Platform.OnCoreClr)
- return;
- TestModule ("System.Runtime.dll", module => {
- Assert.AreEqual ("System.Runtime", module.Assembly.Name.Name);
- Assert.AreEqual (1, module.AssemblyReferences.Count);
- Assert.AreNotEqual (module, module.TypeSystem.CoreLibrary);
- Assert.AreEqual (module.AssemblyReferences [0], module.TypeSystem.CoreLibrary);
- }, verify: !Platform.OnMono);
- }
- [Test]
- public void MismatchedLibraryAndSymbols ()
- {
- // SQLite-net.dll (from nuget) shiped with mismatched symbol files, but throwIfNoSymbol did not prevent it from throwing
- var parameters = new ReaderParameters {
- ReadSymbols = true,
- SymbolReaderProvider = new DefaultSymbolReaderProvider (throwIfNoSymbol: false),
- ThrowIfSymbolsAreNotMatching = false,
- };
- using (var module = GetResourceModule ("SQLite-net.dll", parameters)) {
- Assert.Null (module.SymbolReader);
- }
- }
- }
- }