public void AddAssembly_GivenAddedTwoEqualAssemblies_ShouldNotReAddTypes()
 {
     //---------------Set up test pack-------------------
     AssemblyExplorer explorer = new AssemblyExplorer();
     Assembly assembly = typeof(TestAssemblyExplorer).Assembly;
     explorer.AddAssembly(assembly);
     //---------------Assert Precondition----------------
     Assert.AreNotEqual(0, explorer.Types.Count);
     //---------------Execute Test ----------------------
     int expectedNumberOfTypes = explorer.Types.Count;
     explorer.AddAssembly(assembly);
     //---------------Test Result -----------------------
     Assert.AreEqual(expectedNumberOfTypes, explorer.Types.Count);
 }
 public void AddAssembly_GivenAddedTwoDifferentAssemblies_ShouldAddTypesFromBoth()
 {
     //---------------Set up test pack-------------------
     AssemblyExplorer explorer = new AssemblyExplorer();
     explorer.AddAssembly(typeof(TestAssemblyExplorer).Assembly);
     Assembly assembly = typeof(AssemblyExplorer).Assembly;
     //---------------Assert Precondition----------------
     Assert.AreNotEqual(0, explorer.Types.Count);
     //---------------Execute Test ----------------------
     int numberOfTypesBeforeAddition = explorer.Types.Count;
     explorer.AddAssembly(assembly);
     //---------------Test Result -----------------------
     Assert.AreNotEqual(numberOfTypesBeforeAddition, explorer.Types.Count);
 }
 public void AddAssembly_GivenNullAssembly_ShouldThrowException()
 {
     //---------------Set up test pack-------------------
     AssemblyExplorer explorer = new AssemblyExplorer();
     //---------------Assert Precondition----------------
     //---------------Execute Test ----------------------
     ArgumentNullException exception = Assert.Throws<ArgumentNullException>(() => explorer.AddAssembly(null));
     //---------------Test Result -----------------------
     Assert.AreEqual("assembly", exception.ParamName);
 }
 public void AddAssembly_GivenValidAssembly_ShouldDiscoverPublicTypes()
 {
     //---------------Set up test pack-------------------
     AssemblyExplorer explorer = new AssemblyExplorer();
     //---------------Assert Precondition----------------
     //---------------Execute Test ----------------------
     explorer.AddAssembly(typeof(TestAssemblyExplorer).Assembly);
     bool hasPublicType = explorer.Types.Contains(typeof(TestAssemblyExplorer));
     //---------------Test Result -----------------------
     Assert.IsTrue(hasPublicType);
 }
 public void Clone_GivenCloneIsModified_ShouldNotAffectOriginalExplorer()
 {
     //---------------Set up test pack-------------------
     AssemblyExplorer originalExplorer = new AssemblyExplorer();
     originalExplorer.AddAssembly(typeof(TestAssemblyExplorer).Assembly);
     //---------------Assert Precondition----------------
     Assert.IsNotEmpty(originalExplorer.Types);
     //---------------Execute Test ----------------------
     AssemblyExplorer clonedExplorer = originalExplorer.Clone();
     //---------------Test Result -----------------------
     CollectionAssert.AreEquivalent(originalExplorer.Types, clonedExplorer.Types);
     clonedExplorer.AddAssembly<AssemblyExplorer>();
     CollectionAssert.AreNotEquivalent(originalExplorer.Types, clonedExplorer.Types);
 }
 private static AssemblyExplorer CreateExplorer()
 {
     AssemblyExplorer result = new AssemblyExplorer();
     result.AddAssembly(typeof(TestAssemblyExplorer).Assembly);
     return result;
 }
 public void Clone_GivenExpectedTypes_ShouldCreateIdenticalExplorerWithExpectedTypes()
 {
     //---------------Set up test pack-------------------
     AssemblyExplorer originalExplorer = new AssemblyExplorer();
     originalExplorer.AddAssembly(typeof(TestAssemblyExplorer).Assembly);
     //---------------Assert Precondition----------------
     Assert.IsNotEmpty(originalExplorer.Types);
     //---------------Execute Test ----------------------
     AssemblyExplorer clonedExplorer = originalExplorer.Clone();
     //---------------Test Result -----------------------
     CollectionAssert.AreEquivalent(originalExplorer.Types, clonedExplorer.Types);
 }