1 // -----------------------------------------------------------------------
\r
2 // Copyright (c) Microsoft Corporation. All rights reserved.
\r
3 // -----------------------------------------------------------------------
\r
7 using System.ComponentModel.Composition.Hosting;
\r
10 using System.UnitTesting;
\r
11 using System.Reflection;
\r
12 using Microsoft.VisualStudio.TestTools.UnitTesting;
\r
14 namespace System.ComponentModel.Composition.Primitives
\r
17 public class DirectoryCatalogDebuggerProxyTests
\r
20 public void Constructor_NullAsCatalogArgument_ShouldThrowArgumentNull()
\r
22 ExceptionAssert.ThrowsArgument<ArgumentNullException>("catalog", () =>
\r
24 new DirectoryCatalog.DirectoryCatalogDebuggerProxy((DirectoryCatalog)null);
\r
29 public void Constructor_ValueAsCatalogArgument_ShouldSetPartsProperty()
\r
31 var expectations = Expectations.GetAssemblies();
\r
33 foreach (var e in expectations)
\r
35 using (TemporaryFileCopier copier = new TemporaryFileCopier(e.Location))
\r
37 var catalog = CreateDirectoryCatalog(copier.DirectoryPath);
\r
39 var proxy = new DirectoryCatalog.DirectoryCatalogDebuggerProxy(catalog);
\r
41 EnumerableAssert.AreSequenceEqual(catalog.Parts, proxy.Parts);
\r
47 public void Constructor_ValueAsCatalogArgument_ShouldSetAssemblyProperty()
\r
49 var expectations = Expectations.GetAssemblies();
\r
51 using (TemporaryFileCopier copier = new TemporaryFileCopier(expectations.Select(assembly => assembly.Location).ToArray()))
\r
53 var catalog = CreateDirectoryCatalog(copier.DirectoryPath);
\r
54 var proxy = new DirectoryCatalog.DirectoryCatalogDebuggerProxy(catalog);
\r
56 EnumerableAssert.AreEqual(expectations, proxy.Assemblies);
\r
61 public void Constuctor_ValueAsCatalogArgument_ShouldSetPathProperty()
\r
63 string path = FileIO.GetNewTemporaryDirectory();
\r
65 var catalog = CreateDirectoryCatalog(path);
\r
66 var proxy = new DirectoryCatalog.DirectoryCatalogDebuggerProxy(catalog);
\r
68 Assert.AreEqual(path, proxy.Path);
\r
72 public void Constuctor_ValueAsCatalogArgument_ShouldSetSearchPatternProperty()
\r
74 using (TemporaryDirectory directory = new TemporaryDirectory())
\r
76 var expectations = new ExpectationCollection<string, string>();
\r
78 expectations.Add("*.*", "*.*");
\r
79 expectations.Add("*.doc", "*.doc");
\r
80 expectations.Add("*.exe", "*.exe");
\r
81 expectations.Add("*.dll", "*.dll");
\r
83 foreach (var e in expectations)
\r
85 var catalog = CreateDirectoryCatalog(directory.DirectoryPath, e.Input);
\r
86 var proxy = new DirectoryCatalog.DirectoryCatalogDebuggerProxy(catalog);
\r
88 Assert.AreEqual(e.Output, proxy.SearchPattern);
\r
94 public void FullPath_ValidPath_ShouldBeFine()
\r
96 using (TemporaryDirectory directory = new TemporaryDirectory())
\r
98 var expectations = new ExpectationCollection<string, string>();
\r
100 // Ensure the path is always normalized properly.
\r
101 string rootTempPath = Path.GetFullPath(FileIO.GetRootTemporaryDirectory()).ToUpperInvariant();
\r
103 // Note: These relative paths work properly because the unit test temporary directories are always
\r
104 // created as a subfolder off the AppDomain.CurrentDomain.BaseDirectory.
\r
105 expectations.Add(".", Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ".")).ToUpperInvariant());
\r
106 expectations.Add(FileIO.RootTemporaryDirectoryName, rootTempPath);
\r
107 expectations.Add(FileIO.GetRootTemporaryDirectory(), rootTempPath);
\r
108 expectations.Add(directory.DirectoryPath, Path.GetFullPath(directory.DirectoryPath).ToUpperInvariant());
\r
110 foreach (var e in expectations)
\r
112 var cat = CreateDirectoryCatalog(e.Input, DirectoryCatalogTests.NonExistentSearchPattern);
\r
113 var proxy = new DirectoryCatalog.DirectoryCatalogDebuggerProxy(cat);
\r
115 Assert.AreEqual(e.Output, proxy.FullPath);
\r
121 public void LoadedFiles_EmptyDirectory_ShouldBeFine()
\r
123 using (var directory = new TemporaryDirectory())
\r
125 var cat = CreateDirectoryCatalog(directory.DirectoryPath);
\r
126 var proxy = new DirectoryCatalog.DirectoryCatalogDebuggerProxy(cat);
\r
128 Assert.AreEqual(0, proxy.LoadedFiles.Count);
\r
133 public void LoadedFiles_ContainsMultipleDllsAndSomeNonDll_ShouldOnlyContainDlls()
\r
135 using (var directory = new TemporaryDirectory())
\r
137 // Add one text file
\r
138 using (File.CreateText(Path.Combine(directory.DirectoryPath, "Test.txt"))) { }
\r
141 string dll1 = Path.Combine(directory.DirectoryPath, "Test1.dll");
\r
142 string dll2 = Path.Combine(directory.DirectoryPath, "Test2.dll");
\r
143 File.Copy(Assembly.GetExecutingAssembly().Location, dll1);
\r
144 File.Copy(Assembly.GetExecutingAssembly().Location, dll2);
\r
146 var cat = CreateDirectoryCatalog(directory.DirectoryPath);
\r
147 var proxy = new DirectoryCatalog.DirectoryCatalogDebuggerProxy(cat);
\r
149 CollectionAssert.AreEquivalent(new string[] { dll1.ToUpperInvariant(), dll2.ToUpperInvariant() },
\r
150 proxy.LoadedFiles);
\r
154 private DirectoryCatalog.DirectoryCatalogDebuggerProxy CreateAssemblyDebuggerProxy(DirectoryCatalog catalog)
\r
156 return new DirectoryCatalog.DirectoryCatalogDebuggerProxy(catalog);
\r
159 private DirectoryCatalog CreateDirectoryCatalog(string path)
\r
161 return new DirectoryCatalog(path);
\r
164 private DirectoryCatalog CreateDirectoryCatalog(string path, string filter)
\r
166 return new DirectoryCatalog(path, filter);
\r