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
7 using System.ComponentModel.Composition.Hosting;
\r
8 using System.ComponentModel.Composition.Primitives;
\r
9 using System.UnitTesting;
\r
10 using Microsoft.VisualStudio.TestTools.UnitTesting;
\r
15 public class LazyOfTMetadataTests
\r
17 public class MetadataView
\r
22 public void Constructor1_MetadataViewSet()
\r
24 MetadataView metadataView = new MetadataView();
\r
25 var export = new Lazy<string, MetadataView>(() => "Value", metadataView, false);
\r
26 Assert.AreEqual(metadataView, export.Metadata);
\r
30 public void Constructor1_MetadataViewSetToNull()
\r
32 MetadataView metadataView = new MetadataView();
\r
33 var export = new Lazy<string, MetadataView>(() => "Value", null, false);
\r
34 Assert.IsNull(export.Metadata);
\r
39 public void Constructor1_NullAsExportedValueGetterArgument_ShouldThrowArgumentNull()
\r
41 ExceptionAssert.ThrowsArgument<ArgumentNullException>("valueFactory", () =>
\r
43 new Lazy<string, MetadataView>((Func<string>)null, new MetadataView(), false);
\r
48 public void Constructor1_FuncReturningAStringAsExportedValueGetter_ShouldBeReturnedByGetExportedValue()
\r
50 var export = new Lazy<string, MetadataView>(() => "Value", new MetadataView(), false);
\r
52 Assert.AreEqual("Value", export.Value);
\r
56 public void Constructor1_FuncReturningNullAsExportedValueGetter_ShouldBeReturnedByGetExportedValue()
\r
58 var export = new Lazy<string, MetadataView>(() => null, new MetadataView(), false);
\r
60 Assert.IsNull(export.Value);
\r
64 public void Value_ShouldCacheExportedValueGetter()
\r
68 var export = new Lazy<int, MetadataView>(() =>
\r
72 }, new MetadataView(), false);
\r
74 Assert.AreEqual(1, export.Value);
\r
75 Assert.AreEqual(1, export.Value);
\r
76 Assert.AreEqual(1, export.Value);
\r
79 public void Constructor2_MetadataSet()
\r
81 MetadataView metadataView = new MetadataView();
\r
82 var export = new Lazy<object, MetadataView>(metadataView, false);
\r
84 Assert.AreSame(metadataView, export.Metadata);
\r
85 Assert.IsNotNull(export.Value);
\r
90 public void Constructor3_MetadataSet()
\r
92 MetadataView metadataView = new MetadataView();
\r
93 var export = new Lazy<object, MetadataView>(metadataView, true);
\r
95 Assert.AreSame(metadataView, export.Metadata);
\r
96 Assert.IsNotNull(export.Value);
\r
100 public void Constructor4_MetadataSet()
\r
102 MetadataView metadataView = new MetadataView();
\r
103 var export = new Lazy<string, MetadataView>(() => "Value",
\r
104 metadataView, true);
\r
106 Assert.AreSame(metadataView, export.Metadata);
\r
107 Assert.IsNotNull(export.Value);
\r