Implement MachineKey.Protect and MachineKey.Unprotect
[mono.git] / mcs / class / System.ComponentModel.Composition / Tests / ComponentModelUnitTest / System / LazyOfTTMetadataTests.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.ComponentModel.Composition.Hosting;\r
8 using System.ComponentModel.Composition.Primitives;\r
9 using System.UnitTesting;\r
10 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
11 \r
12 namespace System\r
13 {\r
14     [TestClass]\r
15     public class LazyOfTMetadataTests\r
16     {\r
17         public class MetadataView\r
18         {\r
19         }\r
20 \r
21         [TestMethod]\r
22         public void Constructor1_MetadataViewSet()\r
23         {\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
27         }\r
28 \r
29         [TestMethod]\r
30         public void Constructor1_MetadataViewSetToNull()\r
31         {\r
32             MetadataView metadataView = new MetadataView();\r
33             var export = new Lazy<string, MetadataView>(() => "Value", null, false);\r
34             Assert.IsNull(export.Metadata);\r
35         }\r
36 \r
37 \r
38         [TestMethod]\r
39         public void Constructor1_NullAsExportedValueGetterArgument_ShouldThrowArgumentNull()\r
40         {\r
41             ExceptionAssert.ThrowsArgument<ArgumentNullException>("valueFactory", () =>\r
42             {\r
43                 new Lazy<string, MetadataView>((Func<string>)null, new MetadataView(), false);\r
44             });\r
45         }\r
46 \r
47         [TestMethod]\r
48         public void Constructor1_FuncReturningAStringAsExportedValueGetter_ShouldBeReturnedByGetExportedValue()\r
49         {\r
50             var export = new Lazy<string, MetadataView>(() => "Value", new MetadataView(), false);\r
51 \r
52             Assert.AreEqual("Value", export.Value);\r
53         }\r
54 \r
55         [TestMethod]\r
56         public void Constructor1_FuncReturningNullAsExportedValueGetter_ShouldBeReturnedByGetExportedValue()\r
57         {\r
58             var export = new Lazy<string, MetadataView>(() => null, new MetadataView(), false);\r
59 \r
60             Assert.IsNull(export.Value);\r
61         }\r
62 \r
63         [TestMethod]\r
64         public void Value_ShouldCacheExportedValueGetter()\r
65         {\r
66             int count = 0;\r
67 \r
68             var export = new Lazy<int, MetadataView>(() =>\r
69             {\r
70                 count++;\r
71                 return count;\r
72             }, new MetadataView(), false);\r
73 \r
74             Assert.AreEqual(1, export.Value);\r
75             Assert.AreEqual(1, export.Value);\r
76             Assert.AreEqual(1, export.Value);\r
77         }\r
78         [TestMethod]\r
79         public void Constructor2_MetadataSet()\r
80         {\r
81             MetadataView metadataView = new MetadataView();\r
82             var export = new Lazy<object, MetadataView>(metadataView, false);\r
83 \r
84             Assert.AreSame(metadataView, export.Metadata);\r
85             Assert.IsNotNull(export.Value);\r
86         }\r
87 \r
88 #if CLR40\r
89         [TestMethod]\r
90         public void Constructor3_MetadataSet()\r
91         {\r
92             MetadataView metadataView = new MetadataView();\r
93             var export = new Lazy<object, MetadataView>(metadataView, true);\r
94 \r
95             Assert.AreSame(metadataView, export.Metadata);\r
96             Assert.IsNotNull(export.Value);\r
97         }\r
98 \r
99         [TestMethod]\r
100         public void Constructor4_MetadataSet()\r
101         {\r
102             MetadataView metadataView = new MetadataView();\r
103             var export = new Lazy<string, MetadataView>(() => "Value",\r
104                 metadataView, true);\r
105 \r
106             Assert.AreSame(metadataView, export.Metadata);\r
107             Assert.IsNotNull(export.Value);\r
108         }\r
109 #endif\r
110     }\r
111 }\r