public void GetReverseReferences()
        {
            _assemblyDefinition1.MainModule.AssemblyReferences.Add (_assemblyDefinition2.Name);
              AssemblyTracker tracker = new AssemblyTracker (new[] { _assemblyDefinition1, _assemblyDefinition2 }, new TypeDefinitionCache ());

              var reverseReferences = tracker.GetReverseReferences (_assemblyDefinition2);

              Assert.That (reverseReferences, Is.EquivalentTo (new [] {_assemblyDefinition1}));
        }
        public void GetReverseReferences_MultiModuleAssembly()
        {
            ModuleDefinition module = ModuleDefinition.CreateModule ("Module1", ModuleKind.NetModule);
              module.AssemblyReferences.Add (_assemblyDefinition2.Name);
              _assemblyDefinition1.Modules.Add (module);

              AssemblyTracker tracker = new AssemblyTracker (new[] { _assemblyDefinition1, _assemblyDefinition2 }, new TypeDefinitionCache ());

              var reverseReferences = tracker.GetReverseReferences (_assemblyDefinition2);

              Assert.That (reverseReferences, Is.EquivalentTo (new[] { _assemblyDefinition1 }));
        }
        public void GetReverseReferences_NotTracked()
        {
            AssemblyTracker tracker = new AssemblyTracker (new AssemblyDefinition[0], new TypeDefinitionCache ());

              Assert.Throws<ArgumentException> (() => tracker.GetReverseReferences (_assemblyDefinition1));
        }