1 // -----------------------------------------------------------------------
\r
2 // Copyright (c) Microsoft Corporation. All rights reserved.
\r
3 // -----------------------------------------------------------------------
\r
5 using System.Collections.Generic;
\r
6 using System.ComponentModel.Composition.Factories;
\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
14 namespace System.ComponentModel.Composition
\r
17 public class CompositionServiceExtensionsTests
\r
20 public void SatisfyImports_BooleanOverride_PartAndFalseHaveBeenPassed()
\r
22 MockCompositionService compositionService = new MockCompositionService();
\r
23 ComposablePart part = PartFactory.Create();
\r
25 bool importsSatisfiedCalled = false;
\r
26 compositionService.ImportsSatisfied += delegate(object sender, SatisfyImportsEventArgs e)
\r
28 Assert.IsFalse(importsSatisfiedCalled);
\r
29 Assert.AreEqual(part, e.Part);
\r
30 importsSatisfiedCalled = true;
\r
33 compositionService.SatisfyImportsOnce(part);
\r
34 Assert.IsTrue(importsSatisfiedCalled);
\r
39 public void SatisfyImports_AttributedOverride_NullAsCompositionService()
\r
41 ICompositionService compositionService = null;
\r
42 ExceptionAssert.ThrowsArgument<ArgumentNullException>("compositionService", () =>
\r
44 compositionService.SatisfyImportsOnce(new MockAttributedPart());
\r
49 public void SatisfyImports_AttributedOverride_NullAsAttributedPart()
\r
51 MockCompositionService compositionService = new MockCompositionService();
\r
52 ExceptionAssert.ThrowsArgument<ArgumentNullException>("attributedPart", () =>
\r
54 compositionService.SatisfyImportsOnce((object)null);
\r
59 public void SatisfyImports_AttributedOverride_PartAndFalseHaveBeenPassed()
\r
61 MockCompositionService compositionService = new MockCompositionService();
\r
62 object attributedPart = new MockAttributedPart();
\r
64 bool importsSatisfiedCalled = false;
\r
65 compositionService.ImportsSatisfied += delegate(object sender, SatisfyImportsEventArgs e)
\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
73 compositionService.SatisfyImportsOnce(attributedPart);
\r
74 Assert.IsTrue(importsSatisfiedCalled);
\r
78 public void SatisfyImports_AttributedAndBooleanOverride_NullAsCompositionService()
\r
80 ICompositionService compositionService = null;
\r
81 ExceptionAssert.ThrowsArgument<ArgumentNullException>("compositionService", () =>
\r
83 compositionService.SatisfyImportsOnce(new MockAttributedPart());
\r
88 public void SatisfyImports_AttributedAndBooleanOverride_NullAsAttributedPart()
\r
90 MockCompositionService compositionService = new MockCompositionService();
\r
91 ExceptionAssert.ThrowsArgument<ArgumentNullException>("attributedPart", () =>
\r
93 compositionService.SatisfyImportsOnce((object)null);
\r
98 public void SatisfyImports_AttributedAndBooleanOverride_PartAndFalseHaveBeenPassed()
\r
100 MockCompositionService compositionService = new MockCompositionService();
\r
101 object attributedPart = new MockAttributedPart();
\r
103 bool importsSatisfiedCalled = false;
\r
104 compositionService.ImportsSatisfied += delegate(object sender, SatisfyImportsEventArgs e)
\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
112 compositionService.SatisfyImportsOnce(attributedPart);
\r
113 Assert.IsTrue(importsSatisfiedCalled);
\r
116 internal class SatisfyImportsEventArgs : EventArgs
\r
118 public SatisfyImportsEventArgs(ComposablePart part)
\r
123 public ComposablePart Part { get; private set; }
\r
126 internal class MockCompositionService : ICompositionService
\r
128 public MockCompositionService()
\r
132 public void SatisfyImportsOnce(ComposablePart part)
\r
134 if (this.ImportsSatisfied != null)
\r
136 this.ImportsSatisfied.Invoke(this, new SatisfyImportsEventArgs(part));
\r
140 public event EventHandler<SatisfyImportsEventArgs> ImportsSatisfied;
\r
143 public class MockAttributedPart
\r
145 public MockAttributedPart()
\r