Fix bugs in sizing TableLayoutPanel (Xamarin bug 18638)
[mono.git] / mcs / class / System.ComponentModel.Composition / Tests / ComponentModelUnitTest / System / ComponentModel / Composition / CompositionServiceExtensionsTests.cs
1 // -----------------------------------------------------------------------\r
2 // Copyright (c) Microsoft Corporation.  All rights reserved.\r
3 // -----------------------------------------------------------------------\r
4 using System;\r
5 using System.Collections.Generic;\r
6 using System.ComponentModel.Composition.Factories;\r
7 using System.Linq;\r
8 using System.UnitTesting;\r
9 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
10 using System.ComponentModel.Composition.AttributedModel;\r
11 using System.ComponentModel.Composition.ReflectionModel;\r
12 using System.ComponentModel.Composition.Primitives;\r
13 \r
14 namespace System.ComponentModel.Composition\r
15 {\r
16     [TestClass]\r
17     public class CompositionServiceExtensionsTests\r
18     {\r
19         [TestMethod]\r
20         public void SatisfyImports_BooleanOverride_PartAndFalseHaveBeenPassed()\r
21         {\r
22             MockCompositionService compositionService = new MockCompositionService();\r
23             ComposablePart part = PartFactory.Create();\r
24 \r
25             bool importsSatisfiedCalled = false;\r
26             compositionService.ImportsSatisfied += delegate(object sender, SatisfyImportsEventArgs e)\r
27             {\r
28                 Assert.IsFalse(importsSatisfiedCalled);\r
29                 Assert.AreEqual(part, e.Part);\r
30                 importsSatisfiedCalled = true;\r
31             };\r
32 \r
33             compositionService.SatisfyImportsOnce(part);\r
34             Assert.IsTrue(importsSatisfiedCalled);\r
35         }\r
36 \r
37 \r
38         [TestMethod]\r
39         public void SatisfyImports_AttributedOverride_NullAsCompositionService()\r
40         {\r
41             ICompositionService compositionService = null;\r
42             ExceptionAssert.ThrowsArgument<ArgumentNullException>("compositionService", () =>\r
43             {\r
44                 compositionService.SatisfyImportsOnce(new MockAttributedPart());\r
45             });\r
46         }\r
47 \r
48         [TestMethod]\r
49         public void SatisfyImports_AttributedOverride_NullAsAttributedPart()\r
50         {\r
51             MockCompositionService compositionService = new MockCompositionService();\r
52             ExceptionAssert.ThrowsArgument<ArgumentNullException>("attributedPart", () =>\r
53             {\r
54                 compositionService.SatisfyImportsOnce((object)null);\r
55             });\r
56         }\r
57 \r
58         [TestMethod]\r
59         public void SatisfyImports_AttributedOverride_PartAndFalseHaveBeenPassed()\r
60         {\r
61             MockCompositionService compositionService = new MockCompositionService();\r
62             object attributedPart = new MockAttributedPart();\r
63 \r
64             bool importsSatisfiedCalled = false;\r
65             compositionService.ImportsSatisfied += delegate(object sender, SatisfyImportsEventArgs e)\r
66             {\r
67                 Assert.IsFalse(importsSatisfiedCalled);\r
68                 Assert.IsTrue(e.Part is ReflectionComposablePart);\r
69                 Assert.IsTrue(((ReflectionComposablePart)e.Part).Definition.GetPartType() == typeof(MockAttributedPart));\r
70                 importsSatisfiedCalled = true;\r
71             };\r
72 \r
73             compositionService.SatisfyImportsOnce(attributedPart);\r
74             Assert.IsTrue(importsSatisfiedCalled);\r
75         }\r
76 \r
77         [TestMethod]\r
78         public void SatisfyImports_AttributedAndBooleanOverride_NullAsCompositionService()\r
79         {\r
80             ICompositionService compositionService = null;\r
81             ExceptionAssert.ThrowsArgument<ArgumentNullException>("compositionService", () =>\r
82             {\r
83                 compositionService.SatisfyImportsOnce(new MockAttributedPart());\r
84             });\r
85         }\r
86 \r
87         [TestMethod]\r
88         public void SatisfyImports_AttributedAndBooleanOverride_NullAsAttributedPart()\r
89         {\r
90             MockCompositionService compositionService = new MockCompositionService();\r
91             ExceptionAssert.ThrowsArgument<ArgumentNullException>("attributedPart", () =>\r
92             {\r
93                 compositionService.SatisfyImportsOnce((object)null);\r
94             });\r
95         }\r
96 \r
97         [TestMethod]\r
98         public void SatisfyImports_AttributedAndBooleanOverride_PartAndFalseHaveBeenPassed()\r
99         {\r
100             MockCompositionService compositionService = new MockCompositionService();\r
101             object attributedPart = new MockAttributedPart();\r
102 \r
103             bool importsSatisfiedCalled = false;\r
104             compositionService.ImportsSatisfied += delegate(object sender, SatisfyImportsEventArgs e)\r
105             {\r
106                 Assert.IsFalse(importsSatisfiedCalled);\r
107                 Assert.IsTrue(e.Part is ReflectionComposablePart);\r
108                 Assert.IsTrue(((ReflectionComposablePart)e.Part).Definition.GetPartType() == typeof(MockAttributedPart));\r
109                 importsSatisfiedCalled = true;\r
110             };\r
111 \r
112             compositionService.SatisfyImportsOnce(attributedPart);\r
113             Assert.IsTrue(importsSatisfiedCalled);\r
114         }\r
115 \r
116         internal class SatisfyImportsEventArgs : EventArgs\r
117         {\r
118             public SatisfyImportsEventArgs(ComposablePart part)\r
119             {\r
120                 this.Part = part;\r
121             }\r
122 \r
123             public ComposablePart Part { get; private set; }\r
124         }\r
125 \r
126         internal class MockCompositionService : ICompositionService\r
127         {\r
128             public MockCompositionService()\r
129             {\r
130             }\r
131 \r
132             public void SatisfyImportsOnce(ComposablePart part)\r
133             {\r
134                 if (this.ImportsSatisfied != null)\r
135                 {\r
136                     this.ImportsSatisfied.Invoke(this, new SatisfyImportsEventArgs(part));\r
137                 }\r
138             }\r
139 \r
140             public event EventHandler<SatisfyImportsEventArgs> ImportsSatisfied;\r
141         }\r
142 \r
143         public class MockAttributedPart\r
144         {\r
145             public MockAttributedPart()\r
146             {\r
147             }\r
148         }\r
149     }\r
150 }\r