OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 namespace UnitTests | |
6 { | |
7 using System; | |
8 using System.IO; | |
9 | |
10 using EnvDTE; | |
11 using EnvDTE80; | |
12 using Microsoft.VisualStudio.TestTools.UnitTesting; | |
13 | |
14 using NativeClientVSAddIn; | |
15 | |
16 /// <summary> | |
17 /// This is a test class for PropertyManagerTest and is intended | |
18 /// to contain all PropertyManager Unit Tests | |
19 /// </summary> | |
20 [TestClass] | |
21 public class PropertyManagerTest | |
22 { | |
23 /// <summary> | |
24 /// This holds the path to the NaCl solution used in these tests. | |
25 /// The NaCl solution is a valid nacl/pepper plug-in VS solution. | |
26 /// It is copied into the testing deployment directory and opened in some te sts. | |
27 /// Because unit-tests run in any order, the solution should not be written to | |
28 /// in any tests. | |
29 /// </summary> | |
30 private static string naclSolution; | |
31 | |
32 /// <summary> | |
33 /// The main visual studio object. | |
34 /// </summary> | |
35 private DTE2 dte_; | |
36 | |
37 /// <summary> | |
38 /// Gets or sets the test context which provides information about, | |
39 /// and functionality for the current test run. | |
40 /// </summary> | |
41 public TestContext TestContext { get; set; } | |
42 | |
43 /// <summary> | |
44 /// This is run one time before any test methods are called. Here we set-up a test-copy of a | |
45 /// new NaCl solution for use in the tests. | |
46 /// </summary> | |
47 /// <param name="testContext">Holds information about the current test run</ param> | |
48 [ClassInitialize] | |
49 public static void ClassSetup(TestContext testContext) | |
50 { | |
51 DTE2 dte = TestUtilities.StartVisualStudioInstance(); | |
52 try | |
53 { | |
54 naclSolution = TestUtilities.CreateBlankValidNaClSolution( | |
55 dte, | |
56 "PropertyManagerTest", | |
57 NativeClientVSAddIn.Strings.PepperPlatformName, | |
58 NativeClientVSAddIn.Strings.NaClPlatformName, | |
59 testContext); | |
60 } | |
61 finally | |
62 { | |
63 TestUtilities.CleanUpVisualStudioInstance(dte); | |
64 } | |
65 } | |
66 | |
67 /// <summary> | |
68 /// This is run before each test to create test resources. | |
69 /// </summary> | |
70 [TestInitialize] | |
71 public void TestSetup() | |
72 { | |
73 dte_ = TestUtilities.StartVisualStudioInstance(); | |
74 try | |
75 { | |
76 TestUtilities.AssertAddinLoaded(dte_, NativeClientVSAddIn.Strings.AddInN ame); | |
77 } | |
78 catch | |
79 { | |
80 TestUtilities.CleanUpVisualStudioInstance(dte_); | |
81 throw; | |
82 } | |
83 } | |
84 | |
85 /// <summary> | |
86 /// This is run after each test to clean up things created in TestSetup(). | |
87 /// </summary> | |
88 [TestCleanup] | |
89 public void TestCleanup() | |
90 { | |
91 TestUtilities.CleanUpVisualStudioInstance(dte_); | |
92 } | |
93 | |
94 /// <summary> | |
95 /// Tests SetTarget() and SetTargetToActive(). | |
96 /// </summary> | |
97 [TestMethod] | |
98 public void SetTargetTest() | |
99 { | |
100 string expectedSDKRootDir = | |
noelallen1
2012/08/08 18:33:00
Does the environment variable need to be set? The
tysand
2012/08/08 20:55:02
This is an assumption of the test that NACL_SDK_RO
| |
101 Environment.GetEnvironmentVariable(Strings.SDKPathEnvironmentVariable) ; | |
102 Assert.IsNotNull(expectedSDKRootDir, "SDK Path environment variable not se t!"); | |
103 | |
104 PropertyManager target = new PropertyManager(); | |
105 dte_.Solution.Open(naclSolution); | |
106 | |
107 Project naclProject = dte_.Solution.Projects.Item(TestUtilities.BlankNaClP rojectUniqueName); | |
108 Project notNacl = dte_.Solution.Projects.Item(TestUtilities.NotNaClProject UniqueName); | |
109 | |
110 // Invalid project. | |
111 target.SetTarget(notNacl, Strings.PepperPlatformName, "Debug"); | |
112 Assert.AreEqual( | |
113 PropertyManager.ProjectPlatformType.Other, | |
114 target.ProjectPlatform, | |
115 "SetTarget should not succeed with non-nacl/pepper project."); | |
116 | |
117 // Try valid project with different platforms. | |
118 target.SetTarget(naclProject, Strings.NaClPlatformName, "Debug"); | |
119 Assert.AreEqual( | |
120 PropertyManager.ProjectPlatformType.NaCl, | |
121 target.ProjectPlatform, | |
122 "SetTarget did not succeed with nacl platform on valid project."); | |
123 Assert.AreEqual(expectedSDKRootDir, target.SDKRootDirectory, "SDK Root inc orrect."); | |
124 | |
125 target.SetTarget(naclProject, "Win32", "Debug"); | |
126 Assert.AreEqual( | |
127 PropertyManager.ProjectPlatformType.Other, | |
128 target.ProjectPlatform, | |
129 "SetTarget did not set 'other' platform on when Win32 platform of vali d project."); | |
130 | |
131 target.SetTarget(naclProject, Strings.PepperPlatformName, "Debug"); | |
132 Assert.AreEqual( | |
133 PropertyManager.ProjectPlatformType.Pepper, | |
134 target.ProjectPlatform, | |
135 "SetTarget did not succeed with pepper platform on valid project."); | |
136 Assert.AreEqual(expectedSDKRootDir, target.SDKRootDirectory, "SDK Root inc orrect."); | |
137 | |
138 // Setting the start-up project to a non-cpp project should make loading f ail. | |
139 object[] badStartupProj = { TestUtilities.NotNaClProjectUniqueName }; | |
140 dte_.Solution.SolutionBuild.StartupProjects = badStartupProj; | |
141 target.SetTargetToActive(dte_); | |
142 Assert.AreEqual( | |
143 PropertyManager.ProjectPlatformType.Other, | |
144 target.ProjectPlatform, | |
145 "SetTargetToActive should not succeed with non-nacl/pepper project."); | |
146 | |
147 // Setting the start-up project to correct C++ project, but also setting t he platform | |
148 // to non-nacl/pepper should make loading fail. | |
149 object[] startupProj = { TestUtilities.BlankNaClProjectUniqueName }; | |
150 dte_.Solution.SolutionBuild.StartupProjects = startupProj; | |
151 TestUtilities.SetSolutionConfiguration( | |
152 dte_, TestUtilities.BlankNaClProjectUniqueName, "Debug", "Win32"); | |
153 target.SetTargetToActive(dte_); | |
154 Assert.AreEqual( | |
155 PropertyManager.ProjectPlatformType.Other, | |
156 target.ProjectPlatform, | |
157 "SetTargetToActive should not succeed with Win32 platform."); | |
158 | |
159 // Now setting the platform to NaCl should make this succeed. | |
160 TestUtilities.SetSolutionConfiguration( | |
161 dte_, TestUtilities.BlankNaClProjectUniqueName, "Debug", Strings.NaClP latformName); | |
162 target.SetTargetToActive(dte_); | |
163 Assert.AreEqual( | |
164 PropertyManager.ProjectPlatformType.NaCl, | |
165 target.ProjectPlatform, | |
166 "SetTargetToActive should succeed with NaCl platform and valid project ."); | |
167 Assert.AreEqual(expectedSDKRootDir, target.SDKRootDirectory, "SDK Root inc orrect."); | |
168 } | |
169 | |
170 /// <summary> | |
171 /// A test for GetProperty. Checks some non-trivial C# properties and the Ge tProperty method. | |
172 /// </summary> | |
173 [TestMethod] | |
174 public void GetPropertyTest() | |
175 { | |
176 string expectedSDKRootDir = | |
177 Environment.GetEnvironmentVariable(Strings.SDKPathEnvironmentVariable) ; | |
178 Assert.IsNotNull(expectedSDKRootDir, "SDK Path environment variable not se t!"); | |
179 | |
180 // Set up the property manager to read the NaCl platform settings from Bla nkValidSolution. | |
181 PropertyManager target = new PropertyManager(); | |
182 dte_.Solution.Open(naclSolution); | |
183 Project naclProject = dte_.Solution.Projects.Item(TestUtilities.BlankNaClP rojectUniqueName); | |
184 target.SetTarget(naclProject, Strings.NaClPlatformName, "Debug"); | |
185 Assert.AreEqual( | |
186 PropertyManager.ProjectPlatformType.NaCl, | |
187 target.ProjectPlatform, | |
188 "SetTarget did not succeed with nacl platform on valid project."); | |
189 | |
190 string projectDir = Path.Combine( | |
191 Path.GetDirectoryName(naclSolution), | |
192 Path.GetDirectoryName(TestUtilities.BlankNaClProjectUniqueName)) + @"\ "; | |
193 string outputDir = Path.Combine(projectDir, "newlib") + @"\"; | |
194 string assembly = Path.Combine(outputDir, TestUtilities.BlankNaClProjectNa me + ".nexe"); | |
195 | |
196 Assert.AreEqual(expectedSDKRootDir, target.SDKRootDirectory, "SDK Root."); | |
197 Assert.AreEqual(projectDir, target.ProjectDirectory, "ProjectDirectory."); | |
198 Assert.AreEqual(outputDir, target.OutputDirectory, "OutputDirectory."); | |
199 Assert.AreEqual(assembly, target.PluginAssembly, "PluginAssembly."); | |
200 Assert.AreEqual( | |
201 @"win_x86_newlib", | |
202 target.GetProperty("ConfigurationGeneral", "PlatformToolset"), | |
203 "GetProperty() with PlatformToolset incorrect."); | |
204 } | |
205 | |
206 /// <summary> | |
207 /// A test for SetProperty. | |
208 /// </summary> | |
209 [TestMethod] | |
210 public void SetPropertyTest() | |
211 { | |
212 string setTargetSolution = TestUtilities.CreateBlankValidNaClSolution( | |
213 dte_, | |
214 "PropertyManagerTestSetTarget", | |
215 NativeClientVSAddIn.Strings.NaClPlatformName, | |
216 NativeClientVSAddIn.Strings.NaClPlatformName, | |
217 TestContext); | |
218 | |
219 // Set up the property manager to read the NaCl platform settings from Bla nkValidSolution. | |
220 PropertyManager target = new PropertyManager(); | |
221 dte_.Solution.Open(setTargetSolution); | |
222 Project naclProject = dte_.Solution.Projects.Item(TestUtilities.BlankNaClP rojectUniqueName); | |
223 target.SetTarget(naclProject, Strings.NaClPlatformName, "Debug"); | |
224 Assert.AreEqual( | |
225 PropertyManager.ProjectPlatformType.NaCl, | |
226 target.ProjectPlatform, | |
227 "SetTarget did not succeed with nacl platform on valid project."); | |
228 | |
229 string newValue = "ThisIsNew"; | |
230 target.SetProperty("ConfigurationGeneral", "VSNaClSDKRoot", newValue); | |
231 Assert.AreEqual( | |
232 newValue, | |
233 target.GetProperty("ConfigurationGeneral", "VSNaClSDKRoot"), | |
234 "SetProperty() did not set property VSNaClSDKRoot."); | |
235 } | |
236 } | |
237 } | |
OLD | NEW |