update MEF to preview 9
[mcs.git] / class / System.ComponentModel.Composition / Tests / ComponentModelUnitTest / System / ComponentModel / Composition / AggregateExportProviderTest.cs
blob464e82ac8dc3fcdb5e73638536b2a81c463ba037
1 // -----------------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation. All rights reserved.
3 // -----------------------------------------------------------------------
4 using System;
5 using System.Collections.Generic;
6 using System.ComponentModel.Composition.Factories;
7 using System.ComponentModel.Composition.Primitives;
8 using System.IO;
9 using System.Linq;
10 using System.Linq.Expressions;
11 using System.Threading;
12 using System.UnitTesting;
13 using Microsoft.VisualStudio.TestTools.UnitTesting;
14 using System.ComponentModel.Composition.Hosting;
16 namespace System.ComponentModel.Composition
18 [TestClass]
19 public class AggregateExportProviderTests
21 [TestMethod]
22 public void Constructor1_NullAsProvidersArgument_ShouldSetProvidersPropertyToEmpty()
24 var provider = new AggregateExportProvider((ExportProvider[])null);
26 EnumerableAssert.IsEmpty(provider.Providers);
29 [TestMethod]
30 public void Constructor2_NullAsProvidersArgument_ShouldSetProvidersPropertyToEmpty()
32 var provider = new AggregateExportProvider((IEnumerable<ExportProvider>)null);
34 EnumerableAssert.IsEmpty(provider.Providers);
37 [TestMethod]
38 public void Constructor1_EmptyArrayAsProvidersArgument_ShouldSetProvidersPropertyToEmpty()
40 var provider = new AggregateExportProvider(new ExportProvider[0]);
42 EnumerableAssert.IsEmpty(provider.Providers);
45 [TestMethod]
46 public void Constructor2_EmptyArrayAsProvidersArgument_ShouldSetProvidersPropertyToEmpty()
48 var provider = new AggregateExportProvider((IEnumerable<ExportProvider>)new ExportProvider[0]);
50 EnumerableAssert.IsEmpty(provider.Providers);
53 [TestMethod]
54 public void Constructor2_EmptyEnumerableAsProvidersArgument_ShouldSetProvidersPropertyToEmpty()
56 var provider = new AggregateExportProvider(Enumerable.Empty<ExportProvider>());
58 EnumerableAssert.IsEmpty(provider.Providers);
61 [TestMethod]
62 public void Constructor1_ArrayAsProvidersArgument_ShouldNotAllowModificationAfterConstruction()
64 var providers = new ExportProvider[] { ExportProviderFactory.Create() };
65 var provider = new AggregateExportProvider(providers);
67 providers[0] = null;
69 Assert.IsNotNull(provider.Providers[0]);
72 [TestMethod]
73 public void Constructor2_ArrayAsProvidersArgument_ShouldNotAllowModificationAfterConstruction()
75 var providers = new ExportProvider[] { ExportProviderFactory.Create() };
76 var provider = new AggregateExportProvider((IEnumerable<ExportProvider>)providers);
78 providers[0] = null;
80 Assert.IsNotNull(provider.Providers[0]);
83 [TestMethod]
84 public void Providers_WhenDisposed_ShouldThrowObjectDisposed()
86 var provider = CreateAggregateExportProvider();
87 provider.Dispose();
89 ExceptionAssert.ThrowsDisposed(provider, () =>
91 var providers = provider.Providers;
92 });
95 private AggregateExportProvider CreateAggregateExportProvider()
97 return new AggregateExportProvider(Enumerable.Empty<ExportProvider>());