Remove excessive shortcut key matching in ToolStrip
[mono.git] / mcs / class / System.ComponentModel.Composition / Tests / ComponentModelUnitTest / System / ComponentModel / Composition / AttributedModelServicesTests.cs
1 // -----------------------------------------------------------------------\r
2 // Copyright (c) Microsoft Corporation.  All rights reserved.\r
3 // -----------------------------------------------------------------------\r
4 using System;\r
5 using System.ComponentModel.Composition.Diagnostics;\r
6 using System.ComponentModel.Composition.Factories;\r
7 using System.Diagnostics;\r
8 using System.Linq;\r
9 using System.UnitTesting;\r
10 \r
11 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
12 using System.Collections.Generic;\r
13 using System.ComponentModel.Composition.Extensibility;\r
14 \r
15 namespace System.ComponentModel.Composition.AttributedModel\r
16 {\r
17     [TestClass]\r
18     public class AttributedModelServicesTests\r
19     {\r
20         [TestMethod]\r
21         public void CreatePartDefinition1_NullAsType_ShouldThrowArgumentNull()\r
22         {\r
23             var origin = ElementFactory.Create();\r
24 \r
25             ExceptionAssert.ThrowsArgumentNull("type", () =>\r
26             {\r
27                 AttributedModelServices.CreatePartDefinition((Type)null, origin);\r
28             });\r
29         }\r
30 \r
31         [TestMethod]\r
32         public void CreatePartDefinition2_NullAsType_ShouldThrowArgumentNull()\r
33         {\r
34             var origin = ElementFactory.Create();\r
35 \r
36             ExceptionAssert.ThrowsArgumentNull("type", () =>\r
37             {\r
38                 AttributedModelServices.CreatePartDefinition((Type)null, origin, false);\r
39             });\r
40         }\r
41 \r
42 #if !SILVERLIGHT\r
43 \r
44         [TestMethod]\r
45         public void CreatePartDefinition2_TypeMarkedWithPartNotDiscoverableAttribute_ShouldTraceInformation()\r
46         {\r
47             var types = GetTypesMarkedWithPartNotDiscoverableAttribute();\r
48 \r
49             foreach (Type type in types)\r
50             {\r
51                 using (TraceContext context = new TraceContext(SourceLevels.Information))\r
52                 {\r
53                     AttributedModelServices.CreatePartDefinition(type, null, true);\r
54 \r
55                     Assert.IsNotNull(context.LastTraceEvent);\r
56                     Assert.AreEqual(context.LastTraceEvent.EventType, TraceEventType.Information);\r
57                     Assert.AreEqual(context.LastTraceEvent.Id, TraceId.Discovery_DefinitionMarkedWithPartNotDiscoverableAttribute);\r
58                 }\r
59             }\r
60         }\r
61 \r
62         [TestMethod]\r
63         public void CreatePartDefinition2_OpenGenericType_ShouldTraceInformation()\r
64         {\r
65             var types = GetOpenGenericTypes();\r
66 \r
67             foreach (Type type in types)\r
68             {\r
69                 using (TraceContext context = new TraceContext(SourceLevels.Information))\r
70                 {\r
71                     AttributedModelServices.CreatePartDefinition(type, null, true);\r
72 \r
73                     Assert.IsNotNull(context.LastTraceEvent);\r
74                     Assert.AreEqual(context.LastTraceEvent.EventType, TraceEventType.Information);\r
75                     Assert.AreEqual(context.LastTraceEvent.Id, TraceId.Discovery_DefinitionContainsGenericParameters);\r
76                 }\r
77             }\r
78         }\r
79 \r
80         [TestMethod]\r
81         public void CreatePartDefinition2_TypeWithNoExports_ShouldTraceInformation()\r
82         {\r
83             var types = GetTypesWithNoExports();\r
84 \r
85             foreach (Type type in types)\r
86             {\r
87                 using (TraceContext context = new TraceContext(SourceLevels.Information))\r
88                 {\r
89                     var result = AttributedModelServices.CreatePartDefinition(type, null, true);\r
90 \r
91                     Assert.IsNotNull(context.LastTraceEvent);\r
92                     Assert.AreEqual(context.LastTraceEvent.EventType, TraceEventType.Information);\r
93                     Assert.AreEqual(context.LastTraceEvent.Id, TraceId.Discovery_DefinitionContainsNoExports);\r
94                 }\r
95             }\r
96         }\r
97 \r
98         private static IEnumerable<Type> GetTypesMarkedWithPartNotDiscoverableAttribute()\r
99         {\r
100             yield return typeof(ClassMarkedWithPartNotDiscoverableAttribute);\r
101             yield return typeof(ClassMarkedWithPartNotDiscoverableAttribute<>);\r
102         }\r
103 \r
104         private static IEnumerable<Type> GetOpenGenericTypes()\r
105         {\r
106             yield return typeof(OpenGenericType<>);\r
107         }\r
108 \r
109         private static IEnumerable<Type> GetTypesWithNoExports()\r
110         {\r
111             yield return typeof(ClassWithNoExports);\r
112             yield return typeof(ClassWithOnlyFieldImport);\r
113             yield return typeof(ClassWithOnlyPropertyImport);\r
114             yield return typeof(ClassWithOnlyParameterImport);\r
115         }\r
116 \r
117         public class ClassWithNoExports\r
118         {\r
119         }\r
120 \r
121         public class ClassWithOnlyFieldImport\r
122         {\r
123             [Import]\r
124             public string Field;\r
125         }\r
126 \r
127         public class ClassWithOnlyPropertyImport\r
128         {\r
129             [Import]\r
130             public string Property\r
131             {\r
132                 get;\r
133                 set;\r
134             }\r
135         }\r
136 \r
137         public class ClassWithOnlyParameterImport\r
138         {\r
139             [ImportingConstructor]\r
140             public ClassWithOnlyParameterImport(string parameter)\r
141             {\r
142             }\r
143         }\r
144 \r
145         public class OpenGenericType<T>\r
146         {\r
147         }\r
148 \r
149         [PartNotDiscoverable]\r
150         public class ClassMarkedWithPartNotDiscoverableAttribute\r
151         {\r
152         }\r
153 \r
154         [PartNotDiscoverable]\r
155         public class ClassMarkedWithPartNotDiscoverableAttribute<T>\r
156         {\r
157         }\r
158 #endif\r
159 \r
160     }\r
161 }\r