Chromium Code Reviews| 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 |