public void GetAssemblies()
{
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
Assert.NotNull(assemblies);
Assert.True(assemblies.Length > 0, "There must be assemblies already loaded in the process");
AppDomain.CurrentDomain.Load(typeof(AppDomainTests).Assembly.GetName().FullName);
Assembly[] assemblies1 = AppDomain.CurrentDomain.GetAssemblies();
// Another thread could have loaded an assembly hence not checking for equality
Assert.True(assemblies1.Length >= assemblies.Length, "Assembly.Load of an already loaded assembly should not cause another load");
Assembly.LoadFile(typeof(AppDomain).Assembly.Location);
Assembly[] assemblies2 = AppDomain.CurrentDomain.GetAssemblies();
Assert.True(assemblies2.Length > assemblies.Length, "Assembly.LoadFile should cause an increase in GetAssemblies list");
int ctr = 0;
foreach (var a in assemblies2)
{
if (a.Location == typeof(AppDomain).Assembly.Location)
ctr++;
}
foreach (var a in assemblies)
{
if (a.Location == typeof(AppDomain).Assembly.Location)
ctr--;
}
Assert.True(ctr > 0, "Assembly.LoadFile should cause file to be loaded again");
}