Fix bugs in sizing TableLayoutPanel (Xamarin bug 18638)
[mono.git] / mcs / class / System.ComponentModel.Composition / Tests / ComponentModelUnitTest / System / ComponentModel / Composition / Hosting / DirectoryCatalogDebuggerProxyTests.cs
1 // -----------------------------------------------------------------------\r
2 // Copyright (c) Microsoft Corporation.  All rights reserved.\r
3 // -----------------------------------------------------------------------\r
4 #if !SILVERLIGHT\r
5 \r
6 using System;\r
7 using System.ComponentModel.Composition.Hosting;\r
8 using System.IO;\r
9 using System.Linq;\r
10 using System.UnitTesting;\r
11 using System.Reflection;\r
12 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
13 \r
14 namespace System.ComponentModel.Composition.Primitives\r
15 {\r
16     [TestClass]\r
17     public class DirectoryCatalogDebuggerProxyTests\r
18     {\r
19         [TestMethod]\r
20         public void Constructor_NullAsCatalogArgument_ShouldThrowArgumentNull()\r
21         {\r
22             ExceptionAssert.ThrowsArgument<ArgumentNullException>("catalog", () =>\r
23             {\r
24                 new DirectoryCatalog.DirectoryCatalogDebuggerProxy((DirectoryCatalog)null);\r
25             });\r
26         }\r
27 \r
28         [TestMethod]\r
29         public void Constructor_ValueAsCatalogArgument_ShouldSetPartsProperty()\r
30         {\r
31             var expectations = Expectations.GetAssemblies();\r
32 \r
33             foreach (var e in expectations)\r
34             {\r
35                 using (TemporaryFileCopier copier = new TemporaryFileCopier(e.Location))\r
36                 {\r
37                     var catalog = CreateDirectoryCatalog(copier.DirectoryPath);\r
38 \r
39                     var proxy = new DirectoryCatalog.DirectoryCatalogDebuggerProxy(catalog);\r
40 \r
41                     EnumerableAssert.AreSequenceEqual(catalog.Parts, proxy.Parts);\r
42                 }\r
43             }\r
44         }\r
45 \r
46         [TestMethod]\r
47         public void Constructor_ValueAsCatalogArgument_ShouldSetAssemblyProperty()\r
48         {\r
49             var expectations = Expectations.GetAssemblies();\r
50 \r
51             using (TemporaryFileCopier copier = new TemporaryFileCopier(expectations.Select(assembly => assembly.Location).ToArray()))\r
52             {\r
53                 var catalog = CreateDirectoryCatalog(copier.DirectoryPath);\r
54                 var proxy = new DirectoryCatalog.DirectoryCatalogDebuggerProxy(catalog);\r
55 \r
56                 EnumerableAssert.AreEqual(expectations, proxy.Assemblies);\r
57             }\r
58         }\r
59 \r
60         [TestMethod]\r
61         public void Constuctor_ValueAsCatalogArgument_ShouldSetPathProperty()\r
62         {\r
63             string path = FileIO.GetNewTemporaryDirectory();\r
64 \r
65             var catalog = CreateDirectoryCatalog(path);\r
66             var proxy = new DirectoryCatalog.DirectoryCatalogDebuggerProxy(catalog);\r
67 \r
68             Assert.AreEqual(path, proxy.Path);\r
69         }\r
70 \r
71         [TestMethod]\r
72         public void Constuctor_ValueAsCatalogArgument_ShouldSetSearchPatternProperty()\r
73         {\r
74             using (TemporaryDirectory directory = new TemporaryDirectory())\r
75             {\r
76                 var expectations = new ExpectationCollection<string, string>();\r
77 \r
78                 expectations.Add("*.*", "*.*");\r
79                 expectations.Add("*.doc", "*.doc");\r
80                 expectations.Add("*.exe", "*.exe");\r
81                 expectations.Add("*.dll", "*.dll");\r
82 \r
83                 foreach (var e in expectations)\r
84                 {\r
85                     var catalog = CreateDirectoryCatalog(directory.DirectoryPath, e.Input);\r
86                     var proxy = new DirectoryCatalog.DirectoryCatalogDebuggerProxy(catalog);\r
87 \r
88                     Assert.AreEqual(e.Output, proxy.SearchPattern);\r
89                 }\r
90             }\r
91         }\r
92 \r
93         [TestMethod]\r
94         public void FullPath_ValidPath_ShouldBeFine()\r
95         {\r
96             using (TemporaryDirectory directory = new TemporaryDirectory())\r
97             {\r
98                 var expectations = new ExpectationCollection<string, string>();\r
99 \r
100                 // Ensure the path is always normalized properly.\r
101                 string rootTempPath = Path.GetFullPath(FileIO.GetRootTemporaryDirectory()).ToUpperInvariant();\r
102 \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
109 \r
110                 foreach (var e in expectations)\r
111                 {\r
112                     var cat = CreateDirectoryCatalog(e.Input, DirectoryCatalogTests.NonExistentSearchPattern);\r
113                     var proxy = new DirectoryCatalog.DirectoryCatalogDebuggerProxy(cat);\r
114 \r
115                     Assert.AreEqual(e.Output, proxy.FullPath);\r
116                 }\r
117             }\r
118         }\r
119 \r
120         [TestMethod]\r
121         public void LoadedFiles_EmptyDirectory_ShouldBeFine()\r
122         {\r
123             using (var directory = new TemporaryDirectory())\r
124             {\r
125                 var cat = CreateDirectoryCatalog(directory.DirectoryPath);\r
126                 var proxy = new DirectoryCatalog.DirectoryCatalogDebuggerProxy(cat);\r
127 \r
128                 Assert.AreEqual(0, proxy.LoadedFiles.Count);\r
129             }\r
130         }\r
131 \r
132         [TestMethod]\r
133         public void LoadedFiles_ContainsMultipleDllsAndSomeNonDll_ShouldOnlyContainDlls()\r
134         {\r
135             using (var directory = new TemporaryDirectory())\r
136             {\r
137                 // Add one text file\r
138                 using (File.CreateText(Path.Combine(directory.DirectoryPath, "Test.txt"))) { }\r
139 \r
140                 // Add two dll's\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
145 \r
146                 var cat = CreateDirectoryCatalog(directory.DirectoryPath);\r
147                 var proxy = new DirectoryCatalog.DirectoryCatalogDebuggerProxy(cat);\r
148 \r
149                 CollectionAssert.AreEquivalent(new string[] { dll1.ToUpperInvariant(), dll2.ToUpperInvariant() },\r
150                     proxy.LoadedFiles);\r
151             }\r
152         }\r
153 \r
154         private DirectoryCatalog.DirectoryCatalogDebuggerProxy CreateAssemblyDebuggerProxy(DirectoryCatalog catalog)\r
155         {\r
156             return new DirectoryCatalog.DirectoryCatalogDebuggerProxy(catalog);\r
157         }\r
158 \r
159         private DirectoryCatalog CreateDirectoryCatalog(string path)\r
160         {\r
161             return new DirectoryCatalog(path);\r
162         }\r
163 \r
164         private DirectoryCatalog CreateDirectoryCatalog(string path, string filter)\r
165         {\r
166             return new DirectoryCatalog(path, filter);\r
167         }\r
168     }\r
169 }\r
170 \r
171 #endif