public void TestGetDpxAdjGraph() { var testInput = new List <Tuple <RankedMetadataTokenAsm, RankedMetadataTokenAsm[]> >(); var testControl = new[, ] { { 0, 1, 0, 0 }, { 1, 0, 1, 0 }, { 0, 1, 0, 0 }, { 1, 0, 0, 0 } }; const string ASM_NM_PREFIX = "ASM NAME "; for (var i = 0; i < testControl.GetLongLength(0); i++) { var tt = new RankedMetadataTokenAsm { AssemblyName = $"{ASM_NM_PREFIX} {i:00}" }; var ttList = new List <RankedMetadataTokenAsm>(); for (var j = 0; j < testControl.GetLongLength(1); j++) { if (testControl[i, j] == 1) { ttList.Add(new RankedMetadataTokenAsm { AssemblyName = $"{ASM_NM_PREFIX} {j:00}" }); } } testInput.Add(new Tuple <RankedMetadataTokenAsm, RankedMetadataTokenAsm[]>(tt, ttList.ToArray())); } var testResult = Dpx.GetDpxAdjGraph(testInput); Assert.IsNotNull(testResult); Assert.AreNotEqual(MetadataTokenStatus.Error, testResult.St); Assert.IsNotNull(testResult.Graph); Assert.IsNotNull(testResult.Asms); var trGraph = testResult.Graph; Assert.AreEqual(testResult.Asms.Length, trGraph.GetLongLength(0)); Assert.AreEqual(testControl.GetLongLength(0), trGraph.GetLongLength(0)); Assert.AreEqual(testControl.GetLongLength(1), trGraph.GetLongLength(1)); for (var i = 0; i < testControl.GetLongLength(0); i++) { for (var j = 0; j < testControl.GetLongLength(1); j++) { Assert.AreEqual(testControl[i, j], trGraph[i, j]); } } }
public void TestGetDpxAdjGraph() { var testInput = new List<Tuple<RankedMetadataTokenAsm, RankedMetadataTokenAsm[]>>(); var testControl = new[,] { {0, 1, 0, 0}, {1, 0, 1, 0}, {0, 1, 0, 0}, {1, 0, 0, 0} }; const string ASM_NM_PREFIX = "ASM NAME "; for (var i = 0; i < testControl.GetLongLength(0); i++) { var tt = new RankedMetadataTokenAsm { AssemblyName = $"{ASM_NM_PREFIX} {i:00}"}; var ttList = new List<RankedMetadataTokenAsm>(); for (var j = 0; j < testControl.GetLongLength(1); j++) { if (testControl[i, j] == 1) { ttList.Add(new RankedMetadataTokenAsm { AssemblyName = $"{ASM_NM_PREFIX} {j:00}" }); } } testInput.Add(new Tuple<RankedMetadataTokenAsm, RankedMetadataTokenAsm[]>(tt, ttList.ToArray())); } var testResult = NoFuture.Util.Binary.Dpx.GetDpxAdjGraph(testInput); Assert.IsNotNull(testResult); Assert.AreNotEqual(MetadataTokenStatus.Error, testResult.St); Assert.IsNotNull(testResult.Graph); Assert.IsNotNull(testResult.Asms); var trGraph = testResult.Graph; Assert.AreEqual(testResult.Asms.Length, trGraph.GetLongLength(0)); Assert.AreEqual(testControl.GetLongLength(0), trGraph.GetLongLength(0)); Assert.AreEqual(testControl.GetLongLength(1), trGraph.GetLongLength(1)); for (var i = 0; i < testControl.GetLongLength(0); i++) { for (var j = 0; j < testControl.GetLongLength(1); j++) { Assert.AreEqual(testControl[i,j], trGraph[i,j]); } } }
public static AsmAdjancyGraph GetDpxAdjGraph(string binDir) { try { if (string.IsNullOrWhiteSpace(binDir) || !Directory.Exists(binDir)) { var asmAdjGraph = new AsmAdjancyGraph { Msg = $"The bin directory {binDir} is null or does not exist.", St = MetadataTokenStatus.Error }; return(asmAdjGraph); } //get all the dll files in the dir var di = new DirectoryInfo(binDir); var dllsFullNames = di.EnumerateFileSystemInfos("*.dll", SearchOption.TopDirectoryOnly).Select(x => x.FullName).ToArray(); if (!dllsFullNames.Any()) { var asmAdjGraph = new AsmAdjancyGraph { Msg = $"The directory {binDir} does not contain any files with a .dll extension.", St = MetadataTokenStatus.Error }; return(asmAdjGraph); } //get all the assembly names of direct files and each of thier ref's var asmIndxBuffer = new List <Tuple <RankedMetadataTokenAsm, RankedMetadataTokenAsm[]> >(); foreach (var dll in dllsFullNames) { var asmName = AssemblyName.GetAssemblyName(dll); if (asmName == null) { continue; } var asm = Asm.NfLoadFrom(dll); var refs = asm.GetReferencedAssemblies().ToArray(); var mdta = new RankedMetadataTokenAsm { AssemblyName = asm.GetName().FullName, IndexId = -1, DllFullName = dll, HasPdb = File.Exists(Path.ChangeExtension(dll, "pdb")) }; asmIndxBuffer.Add(new Tuple <RankedMetadataTokenAsm, RankedMetadataTokenAsm[]>(mdta, refs.Select(x => new RankedMetadataTokenAsm { AssemblyName = x.FullName, IndexId = -2 }).ToArray())); } return(GetDpxAdjGraph(asmIndxBuffer)); } catch (Exception ex) { return(new AsmAdjancyGraph { Msg = ex.Message, St = MetadataTokenStatus.Error }); } }
public static AsmAdjancyGraph GetDpxAdjGraph(string binDir) { try { if (string.IsNullOrWhiteSpace(binDir) || !Directory.Exists(binDir)) { var asmAdjGraph = new AsmAdjancyGraph { Msg = $"The bin directory {binDir} is null or does not exist.", St = MetadataTokenStatus.Error }; return asmAdjGraph; } //get all the dll files in the dir var di = new DirectoryInfo(binDir); var dllsFullNames = di.EnumerateFileSystemInfos("*.dll", SearchOption.TopDirectoryOnly).Select(x => x.FullName).ToArray(); if (!dllsFullNames.Any()) { var asmAdjGraph = new AsmAdjancyGraph { Msg = $"The directory {binDir} does not contain any files with a .dll extension.", St = MetadataTokenStatus.Error }; return asmAdjGraph; } //get all the assembly names of direct files and each of thier ref's var asmIndxBuffer = new List<Tuple<RankedMetadataTokenAsm, RankedMetadataTokenAsm[]>>(); foreach (var dll in dllsFullNames) { var asmName = AssemblyName.GetAssemblyName(dll); if (asmName == null) continue; var asm = Asm.NfLoadFrom(dll); var refs = asm.GetReferencedAssemblies().ToArray(); var mdta = new RankedMetadataTokenAsm { AssemblyName = asm.GetName().FullName, IndexId = -1, DllFullName = dll, HasPdb = File.Exists(Path.ChangeExtension(dll, "pdb")) }; asmIndxBuffer.Add(new Tuple<RankedMetadataTokenAsm, RankedMetadataTokenAsm[]>(mdta, refs.Select(x => new RankedMetadataTokenAsm { AssemblyName = x.FullName, IndexId = -2}).ToArray())); } return GetDpxAdjGraph(asmIndxBuffer); } catch (Exception ex) { return new AsmAdjancyGraph {Msg = ex.Message, St = MetadataTokenStatus.Error}; } }