diff options
author | Rob Mensching <rob@firegiant.com> | 2022-03-31 11:56:14 -0700 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2022-03-31 18:01:06 -0700 |
commit | 47582b162368e8edf7a3b11c13b8e9dabc5f0a26 (patch) | |
tree | 2c4063eff325684bed39de0edacd7866a257ae02 /src/dtf/WixToolsetTests.Dtf.WindowsInstaller.Linq/LinqTest.cs | |
parent | 167296c42497c4e95f0d5d71168542d747655981 (diff) | |
download | wix-47582b162368e8edf7a3b11c13b8e9dabc5f0a26.tar.gz wix-47582b162368e8edf7a3b11c13b8e9dabc5f0a26.tar.bz2 wix-47582b162368e8edf7a3b11c13b8e9dabc5f0a26.zip |
Provide managed CA and Embedded UI DTF libraries via NuGet
Lots of refactoring to bring the SFX tooling back into the 'dtf'
layer since they are (in the end) tightly coupled to some DTF
assemblies. Also refactored the DTF tests into their own folder
and added a couple integration tests to build using the new CA/UI
NuGet package.
Closes wixtoolset/issues#6080
Diffstat (limited to 'src/dtf/WixToolsetTests.Dtf.WindowsInstaller.Linq/LinqTest.cs')
-rw-r--r-- | src/dtf/WixToolsetTests.Dtf.WindowsInstaller.Linq/LinqTest.cs | 509 |
1 files changed, 0 insertions, 509 deletions
diff --git a/src/dtf/WixToolsetTests.Dtf.WindowsInstaller.Linq/LinqTest.cs b/src/dtf/WixToolsetTests.Dtf.WindowsInstaller.Linq/LinqTest.cs deleted file mode 100644 index 7776a1c3..00000000 --- a/src/dtf/WixToolsetTests.Dtf.WindowsInstaller.Linq/LinqTest.cs +++ /dev/null | |||
@@ -1,509 +0,0 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | using System; | ||
4 | using System.Text; | ||
5 | using System.Collections; | ||
6 | using System.Collections.Generic; | ||
7 | using System.Linq; | ||
8 | using System.Linq.Expressions; | ||
9 | using Microsoft.VisualStudio.TestTools.UnitTesting; | ||
10 | using WixToolset.Dtf.WindowsInstaller; | ||
11 | using WixToolset.Dtf.WindowsInstaller.Linq; | ||
12 | |||
13 | namespace WixToolset.Dtf.Test | ||
14 | { | ||
15 | [TestClass] | ||
16 | public class LinqTest | ||
17 | { | ||
18 | private void InitLinqTestDatabase(QDatabase db) | ||
19 | { | ||
20 | WindowsInstallerUtils.InitializeProductDatabase(db); | ||
21 | WindowsInstallerUtils.CreateTestProduct(db); | ||
22 | |||
23 | db.Execute( | ||
24 | "INSERT INTO `Feature` (`Feature`, `Title`, `Description`, `Level`, `Attributes`) VALUES ('{0}', '{1}', '{2}', {3}, {4})", | ||
25 | "TestFeature2", | ||
26 | "Test Feature 2", | ||
27 | "Test Feature 2 Description", | ||
28 | 1, | ||
29 | (int) FeatureAttributes.None); | ||
30 | |||
31 | WindowsInstallerUtils.AddRegistryComponent( | ||
32 | db, "TestFeature2", "MyTestRegComp", | ||
33 | Guid.NewGuid().ToString("B"), | ||
34 | "SOFTWARE\\Microsoft\\DTF\\Test", | ||
35 | "MyTestRegComp", "test"); | ||
36 | WindowsInstallerUtils.AddRegistryComponent( | ||
37 | db, "TestFeature2", "MyTestRegComp2", | ||
38 | Guid.NewGuid().ToString("B"), | ||
39 | "SOFTWARE\\Microsoft\\DTF\\Test", | ||
40 | "MyTestRegComp2", "test2"); | ||
41 | WindowsInstallerUtils.AddRegistryComponent( | ||
42 | db, "TestFeature2", "excludeComp", | ||
43 | Guid.NewGuid().ToString("B"), | ||
44 | "SOFTWARE\\Microsoft\\DTF\\Test", | ||
45 | "MyTestRegComp3", "test3"); | ||
46 | |||
47 | db.Commit(); | ||
48 | |||
49 | db.Log = Console.Out; | ||
50 | } | ||
51 | |||
52 | [TestMethod] | ||
53 | public void LinqSimple() | ||
54 | { | ||
55 | using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) | ||
56 | { | ||
57 | this.InitLinqTestDatabase(db); | ||
58 | |||
59 | var comps = from c in db.Components | ||
60 | select c; | ||
61 | |||
62 | int count = 0; | ||
63 | foreach (var c in comps) | ||
64 | { | ||
65 | Console.WriteLine(c); | ||
66 | count++; | ||
67 | } | ||
68 | |||
69 | Assert.AreEqual<int>(4, count); | ||
70 | } | ||
71 | } | ||
72 | |||
73 | [TestMethod] | ||
74 | public void LinqWhereNull() | ||
75 | { | ||
76 | using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) | ||
77 | { | ||
78 | this.InitLinqTestDatabase(db); | ||
79 | |||
80 | var features = from f in db.Features | ||
81 | where f.Description != null | ||
82 | select f; | ||
83 | |||
84 | int count = 0; | ||
85 | foreach (var f in features) | ||
86 | { | ||
87 | Console.WriteLine(f); | ||
88 | Assert.AreEqual<string>("TestFeature2", f.Feature); | ||
89 | count++; | ||
90 | } | ||
91 | |||
92 | Assert.AreEqual<int>(1, count); | ||
93 | |||
94 | var features2 = from f in db.Features | ||
95 | where f.Description == null | ||
96 | select f; | ||
97 | |||
98 | count = 0; | ||
99 | foreach (var f in features2) | ||
100 | { | ||
101 | Console.WriteLine(f); | ||
102 | Assert.AreEqual<string>("TestFeature1", f.Feature); | ||
103 | count++; | ||
104 | } | ||
105 | |||
106 | Assert.AreEqual<int>(1, count); | ||
107 | } | ||
108 | } | ||
109 | |||
110 | [TestMethod] | ||
111 | public void LinqWhereOperators() | ||
112 | { | ||
113 | using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) | ||
114 | { | ||
115 | this.InitLinqTestDatabase(db); | ||
116 | |||
117 | for (int i = 0; i < 100; i++) | ||
118 | { | ||
119 | var newFile = db.Files.NewRecord(); | ||
120 | newFile.File = "TestFile" + i; | ||
121 | newFile.Component_ = "TestComponent"; | ||
122 | newFile.FileName = "TestFile" + i + ".txt"; | ||
123 | newFile.FileSize = i % 10; | ||
124 | newFile.Sequence = i; | ||
125 | newFile.Insert(); | ||
126 | } | ||
127 | |||
128 | var files1 = from f in db.Files where f.Sequence < 40 select f; | ||
129 | Assert.AreEqual<int>(40, files1.AsEnumerable().Count()); | ||
130 | |||
131 | var files2 = from f in db.Files where f.Sequence <= 40 select f; | ||
132 | Assert.AreEqual<int>(41, files2.AsEnumerable().Count()); | ||
133 | |||
134 | var files3 = from f in db.Files where f.Sequence > 40 select f; | ||
135 | Assert.AreEqual<int>(59, files3.AsEnumerable().Count()); | ||
136 | |||
137 | var files4 = from f in db.Files where f.Sequence >= 40 select f; | ||
138 | Assert.AreEqual<int>(60, files4.AsEnumerable().Count()); | ||
139 | |||
140 | var files5 = from f in db.Files where 40 < f.Sequence select f; | ||
141 | Assert.AreEqual<int>(59, files5.AsEnumerable().Count()); | ||
142 | |||
143 | var files6 = from f in db.Files where 40 <= f.Sequence select f; | ||
144 | Assert.AreEqual<int>(60, files6.AsEnumerable().Count()); | ||
145 | |||
146 | var files7 = from f in db.Files where 40 > f.Sequence select f; | ||
147 | Assert.AreEqual<int>(40, files7.AsEnumerable().Count()); | ||
148 | |||
149 | var files8 = from f in db.Files where 40 >= f.Sequence select f; | ||
150 | Assert.AreEqual<int>(41, files8.AsEnumerable().Count()); | ||
151 | |||
152 | var files9 = from f in db.Files where f.Sequence == 40 select f; | ||
153 | Assert.AreEqual<int>(40, files9.AsEnumerable().First().Sequence); | ||
154 | |||
155 | var files10 = from f in db.Files where f.Sequence != 40 select f; | ||
156 | Assert.AreEqual<int>(99, files10.AsEnumerable().Count()); | ||
157 | |||
158 | var files11 = from f in db.Files where 40 == f.Sequence select f; | ||
159 | Assert.AreEqual<int>(40, files11.AsEnumerable().First().Sequence); | ||
160 | |||
161 | var files12 = from f in db.Files where 40 != f.Sequence select f; | ||
162 | Assert.AreEqual<int>(99, files12.AsEnumerable().Count()); | ||
163 | } | ||
164 | } | ||
165 | |||
166 | [TestMethod] | ||
167 | public void LinqShapeSelect() | ||
168 | { | ||
169 | using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) | ||
170 | { | ||
171 | this.InitLinqTestDatabase(db); | ||
172 | |||
173 | Console.WriteLine("Running LINQ query 1."); | ||
174 | var features1 = from f in db.Features | ||
175 | select new { Name = f.Feature, | ||
176 | Desc = f.Description }; | ||
177 | |||
178 | int count = 0; | ||
179 | foreach (var f in features1) | ||
180 | { | ||
181 | Console.WriteLine(f); | ||
182 | count++; | ||
183 | } | ||
184 | |||
185 | Assert.AreEqual<int>(2, count); | ||
186 | |||
187 | Console.WriteLine(); | ||
188 | Console.WriteLine("Running LINQ query 2."); | ||
189 | var features2 = from f in db.Features | ||
190 | where f.Description != null | ||
191 | select new { Name = f.Feature, | ||
192 | Desc = f.Description.ToLower() }; | ||
193 | |||
194 | count = 0; | ||
195 | foreach (var f in features2) | ||
196 | { | ||
197 | Console.WriteLine(f); | ||
198 | Assert.AreEqual<string>("TestFeature2", f.Name); | ||
199 | count++; | ||
200 | } | ||
201 | |||
202 | Assert.AreEqual<int>(1, count); | ||
203 | } | ||
204 | } | ||
205 | |||
206 | [TestMethod] | ||
207 | public void LinqUpdateNullableString() | ||
208 | { | ||
209 | using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) | ||
210 | { | ||
211 | this.InitLinqTestDatabase(db); | ||
212 | |||
213 | string newDescription = "New updated feature description."; | ||
214 | |||
215 | var features = from f in db.Features | ||
216 | where f.Description != null | ||
217 | select f; | ||
218 | |||
219 | int count = 0; | ||
220 | foreach (var f in features) | ||
221 | { | ||
222 | Console.WriteLine(f); | ||
223 | Assert.AreEqual<string>("TestFeature2", f.Feature); | ||
224 | f.Description = newDescription; | ||
225 | count++; | ||
226 | } | ||
227 | |||
228 | Assert.AreEqual<int>(1, count); | ||
229 | |||
230 | var features2 = from f in db.Features | ||
231 | where f.Description == newDescription | ||
232 | select f; | ||
233 | count = 0; | ||
234 | foreach (var f in features2) | ||
235 | { | ||
236 | Console.WriteLine(f); | ||
237 | Assert.AreEqual<string>("TestFeature2", f.Feature); | ||
238 | f.Description = null; | ||
239 | count++; | ||
240 | } | ||
241 | |||
242 | Assert.AreEqual<int>(1, count); | ||
243 | |||
244 | var features3 = from f in db.Features | ||
245 | where f.Description == null | ||
246 | select f.Feature; | ||
247 | count = 0; | ||
248 | foreach (var f in features3) | ||
249 | { | ||
250 | Console.WriteLine(f); | ||
251 | count++; | ||
252 | } | ||
253 | |||
254 | Assert.AreEqual<int>(2, count); | ||
255 | |||
256 | db.Commit(); | ||
257 | } | ||
258 | } | ||
259 | |||
260 | [TestMethod] | ||
261 | public void LinqInsertDelete() | ||
262 | { | ||
263 | using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) | ||
264 | { | ||
265 | this.InitLinqTestDatabase(db); | ||
266 | |||
267 | var newProp = db.Properties.NewRecord(); | ||
268 | newProp.Property = "TestNewProp1"; | ||
269 | newProp.Value = "TestNewValue"; | ||
270 | newProp.Insert(); | ||
271 | |||
272 | string prop = (from p in db.Properties | ||
273 | where p.Property == "TestNewProp1" | ||
274 | select p.Value).AsEnumerable().First(); | ||
275 | Assert.AreEqual<string>("TestNewValue", prop); | ||
276 | |||
277 | newProp.Delete(); | ||
278 | |||
279 | int propCount = (from p in db.Properties | ||
280 | where p.Property == "TestNewProp1" | ||
281 | select p.Value).AsEnumerable().Count(); | ||
282 | Assert.AreEqual<int>(0, propCount); | ||
283 | |||
284 | db.Commit(); | ||
285 | } | ||
286 | } | ||
287 | |||
288 | [TestMethod] | ||
289 | public void LinqQueryQRecord() | ||
290 | { | ||
291 | using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) | ||
292 | { | ||
293 | this.InitLinqTestDatabase(db); | ||
294 | |||
295 | var installFilesSeq = (from a in db["InstallExecuteSequence"] | ||
296 | where a["Action"] == "InstallFiles" | ||
297 | select a["Sequence"]).AsEnumerable().First(); | ||
298 | Assert.AreEqual<string>("4000", installFilesSeq); | ||
299 | } | ||
300 | } | ||
301 | |||
302 | [TestMethod] | ||
303 | public void LinqOrderBy() | ||
304 | { | ||
305 | using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) | ||
306 | { | ||
307 | this.InitLinqTestDatabase(db); | ||
308 | |||
309 | var actions = from a in db.InstallExecuteSequences | ||
310 | orderby a.Sequence | ||
311 | select a.Action; | ||
312 | foreach (var a in actions) | ||
313 | { | ||
314 | Console.WriteLine(a); | ||
315 | } | ||
316 | |||
317 | var files = from f in db.Files | ||
318 | orderby f.FileSize, f["Sequence"] | ||
319 | where f.Attributes == FileAttributes.None | ||
320 | select f; | ||
321 | |||
322 | foreach (var f in files) | ||
323 | { | ||
324 | Console.WriteLine(f); | ||
325 | } | ||
326 | } | ||
327 | } | ||
328 | |||
329 | [TestMethod] | ||
330 | public void LinqTwoWayJoin() | ||
331 | { | ||
332 | using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) | ||
333 | { | ||
334 | this.InitLinqTestDatabase(db); | ||
335 | int count; | ||
336 | |||
337 | var regs = from r in db.Registries | ||
338 | join c in db["Component"] on r.Component_ equals c["Component"] | ||
339 | where c["Component"] == "MyTestRegComp" && | ||
340 | r.Root == RegistryRoot.UserOrMachine | ||
341 | select new { Reg = r.Registry, Dir = c["Directory_"] }; | ||
342 | |||
343 | count = 0; | ||
344 | foreach (var r in regs) | ||
345 | { | ||
346 | Console.WriteLine(r); | ||
347 | count++; | ||
348 | } | ||
349 | Assert.AreEqual<int>(1, count); | ||
350 | |||
351 | var regs2 = from r in db.Registries | ||
352 | join c in db.Components on r.Component_ equals c.Component | ||
353 | where c.Component == "MyTestRegComp" && | ||
354 | r.Root == RegistryRoot.UserOrMachine | ||
355 | select new { Reg = r, Dir = c.Directory_ }; | ||
356 | |||
357 | count = 0; | ||
358 | foreach (var r in regs2) | ||
359 | { | ||
360 | Assert.IsNotNull(r.Reg.Registry); | ||
361 | Console.WriteLine(r); | ||
362 | count++; | ||
363 | } | ||
364 | Assert.AreEqual<int>(1, count); | ||
365 | |||
366 | var regs3 = from r in db.Registries | ||
367 | join c in db.Components on r.Component_ equals c.Component | ||
368 | where c.Component == "MyTestRegComp" && | ||
369 | r.Root == RegistryRoot.UserOrMachine | ||
370 | select r; | ||
371 | |||
372 | count = 0; | ||
373 | foreach (var r in regs3) | ||
374 | { | ||
375 | Assert.IsNotNull(r.Registry); | ||
376 | Console.WriteLine(r); | ||
377 | count++; | ||
378 | } | ||
379 | Assert.AreEqual<int>(1, count); | ||
380 | |||
381 | } | ||
382 | } | ||
383 | |||
384 | [TestMethod] | ||
385 | public void LinqFourWayJoin() | ||
386 | { | ||
387 | using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) | ||
388 | { | ||
389 | this.InitLinqTestDatabase(db); | ||
390 | int count; | ||
391 | |||
392 | IList<string> pretest = db.ExecuteStringQuery( | ||
393 | "SELECT `Feature`.`Feature` " + | ||
394 | "FROM `Feature`, `FeatureComponents`, `Component`, `Registry` " + | ||
395 | "WHERE `Feature`.`Feature` = `FeatureComponents`.`Feature_` " + | ||
396 | "AND `FeatureComponents`.`Component_` = `Component`.`Component` " + | ||
397 | "AND `Component`.`Component` = `Registry`.`Component_` " + | ||
398 | "AND (`Registry`.`Registry` = 'MyTestRegCompReg1')"); | ||
399 | Assert.AreEqual<int>(1, pretest.Count); | ||
400 | |||
401 | var features = from f in db.Features | ||
402 | join fc in db.FeatureComponents on f.Feature equals fc.Feature_ | ||
403 | join c in db.Components on fc.Component_ equals c.Component | ||
404 | join r in db.Registries on c.Component equals r.Component_ | ||
405 | where r.Registry == "MyTestRegCompReg1" | ||
406 | select f.Feature; | ||
407 | |||
408 | count = 0; | ||
409 | foreach (var featureName in features) | ||
410 | { | ||
411 | Console.WriteLine(featureName); | ||
412 | count++; | ||
413 | } | ||
414 | Assert.AreEqual<int>(1, count); | ||
415 | |||
416 | } | ||
417 | } | ||
418 | |||
419 | [TestMethod] | ||
420 | public void EnumTable() | ||
421 | { | ||
422 | using (QDatabase db = new QDatabase("testlinq.msi", DatabaseOpenMode.Create)) | ||
423 | { | ||
424 | this.InitLinqTestDatabase(db); | ||
425 | int count = 0; | ||
426 | foreach (var comp in db.Components) | ||
427 | { | ||
428 | Console.WriteLine(comp); | ||
429 | count++; | ||
430 | } | ||
431 | Assert.AreNotEqual<int>(0, count); | ||
432 | } | ||
433 | } | ||
434 | |||
435 | [TestMethod] | ||
436 | public void DatabaseAsQueryable() | ||
437 | { | ||
438 | using (Database db = new Database("testlinq.msi", DatabaseOpenMode.Create)) | ||
439 | { | ||
440 | WindowsInstallerUtils.InitializeProductDatabase(db); | ||
441 | WindowsInstallerUtils.CreateTestProduct(db); | ||
442 | |||
443 | var comps = from c in db.AsQueryable().Components | ||
444 | select c; | ||
445 | |||
446 | int count = 0; | ||
447 | foreach (var c in comps) | ||
448 | { | ||
449 | Console.WriteLine(c); | ||
450 | count++; | ||
451 | } | ||
452 | |||
453 | Assert.AreEqual<int>(1, count); | ||
454 | } | ||
455 | } | ||
456 | |||
457 | [TestMethod] | ||
458 | public void EnumProducts() | ||
459 | { | ||
460 | var products = from p in ProductInstallation.AllProducts | ||
461 | where p.Publisher == ".NET Foundation" | ||
462 | select new { Name = p.ProductName, | ||
463 | Ver = p.ProductVersion, | ||
464 | Company = p.Publisher, | ||
465 | InstallDate = p.InstallDate, | ||
466 | PackageCode = p.AdvertisedPackageCode }; | ||
467 | |||
468 | foreach (var p in products) | ||
469 | { | ||
470 | Console.WriteLine(p); | ||
471 | Assert.IsTrue(p.Company == ".NET Foundation"); | ||
472 | } | ||
473 | } | ||
474 | |||
475 | [TestMethod] | ||
476 | public void EnumFeatures() | ||
477 | { | ||
478 | foreach (var p in ProductInstallation.AllProducts) | ||
479 | { | ||
480 | Console.WriteLine(p.ProductName); | ||
481 | |||
482 | foreach (var f in p.Features) | ||
483 | { | ||
484 | Console.WriteLine("\t" + f.FeatureName); | ||
485 | } | ||
486 | } | ||
487 | } | ||
488 | |||
489 | [TestMethod] | ||
490 | public void EnumComponents() | ||
491 | { | ||
492 | var comps = from c in ComponentInstallation.AllComponents | ||
493 | where c.State == InstallState.Local && | ||
494 | c.Product.Publisher == ".NET Foundation" | ||
495 | select c.Path; | ||
496 | |||
497 | int count = 0; | ||
498 | foreach (var c in comps) | ||
499 | { | ||
500 | if (++count == 100) break; | ||
501 | |||
502 | Console.WriteLine(c); | ||
503 | } | ||
504 | |||
505 | Assert.AreEqual<int>(100, count); | ||
506 | } | ||
507 | } | ||
508 | |||
509 | } | ||