public void AssemblyRef_WhenConstructed_ValuesAreCorrect() { byte[] content = { 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x03, 0xD9, 0x03, 0x00, 0x00, 0x00, 0x00 }; IIndexDetails indexDetails = IndexHelper.CreateIndexDetails(2); AssemblyRefMetadataTableRow row = new AssemblyRefMetadataTableRow(content, 0, indexDetails); Assert.AreEqual("4.1.0.0", row.GetVersion().ToString()); Assert.AreEqual(AssemblyFlags.SideBySideCompatible, row.Flags); Assert.AreEqual(867, row.PublicKeyOrToken); Assert.AreEqual(985, row.Name.Value); Assert.AreEqual(0, row.Culture.Value); Assert.AreEqual(0, row.HashValue); }
public AssemblyRefEntry(MetadataDirectory directory, AssemblyRefMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Name = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Name.Value); this.Version = row.GetVersion().ToString(); this.Culture = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Culture.Value); this.HashValue = row.HashValue.ToString(); this.Flags = row.Flags.ToString(); this.PublicKeyOrToken = row.PublicKeyOrToken.ToString(); }
public void AssemblyRef_WhenConstructedWithIndexSizes_OffsetIsMovedOn(byte blobIndex, byte stringIndex, int expected) { IIndexDetails indexDetails = IndexHelper.CreateIndexDetails(2, stringIndex, blobIndex, 2); Offset offset = 0; byte[] content = new byte[30]; AssemblyRefMetadataTableRow row = new AssemblyRefMetadataTableRow(content, offset, indexDetails); Assert.AreEqual(expected, offset.Current); }
/// <summary> /// Initialises a new instance of the AssemblyRef class from the provided details. /// </summary> /// <param name="references">Container of all the references required to build this type.</param> /// <param name="row">The row that provides the assembly reference details.</param> /// <returns>A populated AssemblyRef instance.</returns> internal static AssemblyRef CreateFromMetadata(BuildReferences references, AssemblyRefMetadataTableRow row) { AssemblyRef assemblyRef = new AssemblyRef(); assemblyRef.Version = new Version( row.MajorVersion, row.MinorVersion, row.BuildNumber, row.RevisionNumber); assemblyRef.Culture = references.Assembly.StringStream.GetString(row.Culture.Value); assemblyRef.UniqueId = references.Assembly.CreateUniqueId(); assemblyRef.Name = references.Assembly.StringStream.GetString(row.Name.Value); assemblyRef.Assembly = references.Assembly; return(assemblyRef); }
private AssemblyRefMetadataTableRow BuildTestMetadataRow() { AssemblyRefMetadataTableRow row = new AssemblyRefMetadataTableRow(); row.MajorVersion = 1; row.MinorVersion = 4; row.BuildNumber = 10; row.RevisionNumber = 1204; row.Culture = new StringIndex { Value = CultureIndex }; row.Name = new StringIndex { Value = NameIndex }; return(row); }
private void LoadAssemblyRefMetadata() { if (!_stream.Tables.ContainsKey(MetadataTables.AssemblyRef)) { return; } MetadataRow[] items = _stream.Tables[MetadataTables.AssemblyRef]; for (int i = 0; i < items.Length; i++) { AssemblyRefMetadataTableRow assemblyRefRow = items[i] as AssemblyRefMetadataTableRow; AssemblyRef assemblyRef = AssemblyRef.CreateFromMetadata(_references, assemblyRefRow); _map.Add(MetadataTables.AssemblyRef, assemblyRefRow, assemblyRef); _assembly.ReferencedAssemblies.Add(assemblyRef); } }
public void AssemblyRef_Create_IsInitialisedCorrectlyFromSource() { Mock <IStringStream> stringStream = new Mock <IStringStream>(); AssemblyDef assemblyDef = new AssemblyDef(); BuildReferences references = new BuildReferences(); AssemblyRefMetadataTableRow row = BuildTestMetadataRow(); references.Assembly = assemblyDef; assemblyDef.StringStream = stringStream.Object; // setup string methods to return strings in createfrom... method stringStream.Setup(p => p.GetString(CultureIndex)).Returns("culture"); stringStream.Setup(p => p.GetString(NameIndex)).Returns("name"); AssemblyRef reference = AssemblyRef.CreateFromMetadata(references, row); Assert.AreEqual("1.4.10.1204", reference.Version.ToString()); Assert.AreEqual("culture", reference.Culture); Assert.AreEqual("name", reference.Name); Assert.AreSame(assemblyDef, reference.Assembly); }