Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: visual_studio/NativeClientVSAddIn/UnitTests/PropertyManagerTest.cs

Issue 10836143: Refactored the VS add-in (Closed) Base URL: https://nativeclient-sdk.googlecode.com/svn/trunk/src
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698