aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2021-04-22 06:01:58 -0700
committerRob Mensching <rob@firegiant.com>2021-04-29 16:22:59 -0700
commit9e83fcb193e2358b21f6caa10b1fc9f6059018b0 (patch)
tree64fa2c78f1d8c332b2baa18b3a1a1cc477a47ec0 /src/test
parente51932ea0bac331b128dba9809f00c7d393c7a9b (diff)
downloadwix-9e83fcb193e2358b21f6caa10b1fc9f6059018b0.tar.gz
wix-9e83fcb193e2358b21f6caa10b1fc9f6059018b0.tar.bz2
wix-9e83fcb193e2358b21f6caa10b1fc9f6059018b0.zip
Move Data into API/wix
Diffstat (limited to 'src/test')
-rw-r--r--src/test/WixToolsetTest.Data/SerializeFixture.cs427
-rw-r--r--src/test/WixToolsetTest.Data/TagFixture.cs101
-rw-r--r--src/test/WixToolsetTest.Data/TupleDefinitionFixture.cs135
-rw-r--r--src/test/WixToolsetTest.Data/WindowsInstallerTableDefinitionsFixture.cs29
-rw-r--r--src/test/WixToolsetTest.Data/WixToolsetTest.Data.csproj19
5 files changed, 0 insertions, 711 deletions
diff --git a/src/test/WixToolsetTest.Data/SerializeFixture.cs b/src/test/WixToolsetTest.Data/SerializeFixture.cs
deleted file mode 100644
index 8a65c2d4..00000000
--- a/src/test/WixToolsetTest.Data/SerializeFixture.cs
+++ /dev/null
@@ -1,427 +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
3namespace WixToolsetTest.Data
4{
5 using System;
6 using System.IO;
7 using System.Linq;
8 using WixToolset.Data;
9 using WixToolset.Data.Bind;
10 using WixToolset.Data.Symbols;
11 using WixToolset.Data.WindowsInstaller.Rows;
12 using Xunit;
13
14 using Wid = WixToolset.Data.WindowsInstaller;
15
16 public class SerializeFixture
17 {
18 [Fact]
19 public void CanSaveAndLoadIntermediate()
20 {
21 var sln = new SourceLineNumber("test.wxs", 1);
22
23 var section = new IntermediateSection("test", SectionType.Product);
24
25 section.AddSymbol(new ComponentSymbol(sln, new Identifier(AccessModifier.Global, "TestComponent"))
26 {
27 ComponentId = new Guid(1, 0, 0, new byte[8]).ToString("B"),
28 DirectoryRef = "TestFolder",
29 Location = ComponentLocation.Either,
30 });
31
32 var intermediate = new Intermediate("TestIntermediate", IntermediateLevels.Compiled, new[] { section }, null);
33
34 intermediate.UpdateLevel(IntermediateLevels.Linked);
35 intermediate.UpdateLevel(IntermediateLevels.Resolved);
36
37 var path = Path.GetTempFileName();
38 try
39 {
40 intermediate.Save(path);
41
42 var loaded = Intermediate.Load(path);
43
44 Assert.True(loaded.HasLevel(IntermediateLevels.Compiled));
45 Assert.True(loaded.HasLevel(IntermediateLevels.Linked));
46 Assert.True(loaded.HasLevel(IntermediateLevels.Resolved));
47
48 var symbol = (ComponentSymbol)loaded.Sections.Single().Symbols.Single();
49
50 Assert.Equal("TestComponent", symbol.Id.Id);
51 Assert.Equal(AccessModifier.Global, symbol.Id.Access);
52 Assert.Equal("TestFolder", symbol.DirectoryRef);
53 Assert.Equal(ComponentLocation.Either, symbol.Location);
54 }
55 finally
56 {
57 File.Delete(path);
58 }
59 }
60
61 [Fact]
62 public void CanUpdateIntermediate()
63 {
64 var sln = new SourceLineNumber("test.wxs", 1);
65 var section = new IntermediateSection("test", SectionType.Product);
66
67 section.AddSymbol(new ComponentSymbol(sln, new Identifier(AccessModifier.Global, "TestComponent"))
68 {
69 ComponentId = new Guid(1, 0, 0, new byte[8]).ToString("B"),
70 DirectoryRef = "TestFolder",
71 Location = ComponentLocation.Either,
72 });
73
74 var intermediate = new Intermediate("TestIntermediate", IntermediateLevels.Compiled, new[] { section }, null);
75
76 var path = Path.GetTempFileName();
77 try
78 {
79 intermediate.Save(path);
80
81 var uri = new Uri(Path.GetFullPath(path));
82 var stream = File.Open(path, FileMode.Open, FileAccess.ReadWrite);
83
84 using (var wixout = WixOutput.Read(uri, stream))
85 {
86 var loaded = Intermediate.Load(wixout);
87 var symbol = (ComponentSymbol)loaded.Sections.Single().Symbols.Single();
88
89 Assert.Equal("TestComponent", symbol.Id.Id);
90 Assert.Equal(AccessModifier.Global, symbol.Id.Access);
91
92 wixout.Reopen(writable: true);
93
94 section.AddSymbol(new ComponentSymbol(sln, new Identifier(AccessModifier.Global, "NewComponent"))
95 {
96 ComponentId = new Guid(1, 0, 0, new byte[8]).ToString("B"),
97 });
98
99 intermediate.Save(wixout);
100 loaded = Intermediate.Load(wixout);
101
102 var newSymbol = loaded.Sections.Single().Symbols.Where(t => t.Id.Id == "NewComponent");
103 Assert.Single(newSymbol);
104 }
105
106 var loadedAfterDispose = Intermediate.Load(path);
107 var newSymbolStillThere = loadedAfterDispose.Sections.Single().Symbols.Where(t => t.Id.Id == "NewComponent");
108 Assert.Single(newSymbolStillThere);
109
110 }
111 finally
112 {
113 File.Delete(path);
114 }
115 }
116
117 [Fact]
118 public void CanSaveAndLoadIntermediateWithCustomDefinitions()
119 {
120 var sln = new SourceLineNumber("test.wxs", 1);
121
122 var section = new IntermediateSection("test", SectionType.Product);
123
124 var fieldDefs = new[]
125 {
126 new IntermediateFieldDefinition("A", IntermediateFieldType.String),
127 new IntermediateFieldDefinition("B", IntermediateFieldType.Number),
128 new IntermediateFieldDefinition("C", IntermediateFieldType.Bool),
129 };
130
131 var symbolDef = new IntermediateSymbolDefinition("CustomDef2", fieldDefs, null);
132
133 var symbol = symbolDef.CreateSymbol(sln, new Identifier(AccessModifier.Global, "customT"));
134 symbol.Set(0, "foo");
135 symbol.Set(1, 2);
136 symbol.Set(2, true);
137
138 section.AddSymbol(symbol);
139
140 var intermediate = new Intermediate("TestIntermediate", new[] { section }, null);
141
142 var path = Path.GetTempFileName();
143 try
144 {
145 intermediate.Save(path);
146
147 var loaded = Intermediate.Load(path);
148 var loadedSection = loaded.Sections.Single();
149 var loadedSymbol = loadedSection.Symbols.Single();
150
151 Assert.Equal("foo", loadedSymbol.AsString(0));
152 Assert.Equal(2, loadedSymbol[1].AsNumber());
153 Assert.True(loadedSymbol[2].AsBool());
154 }
155 finally
156 {
157 File.Delete(path);
158 }
159 }
160
161 [Fact]
162 public void CanSaveAndLoadMultipleIntermediateWithCustomDefinitions()
163 {
164 var sln = new SourceLineNumber("test.wxs", 1);
165
166 // Intermediate #1
167 var fieldDefs = new[]
168 {
169 new IntermediateFieldDefinition("A", IntermediateFieldType.String),
170 new IntermediateFieldDefinition("B", IntermediateFieldType.Number),
171 new IntermediateFieldDefinition("C", IntermediateFieldType.Bool),
172 };
173
174 var symbolDef = new IntermediateSymbolDefinition("CustomDef", fieldDefs, null);
175
176 var symbol = symbolDef.CreateSymbol(sln, new Identifier(AccessModifier.Global, "customT"));
177 symbol.Set(0, "foo");
178 symbol.Set(1, 2);
179 symbol.Set(2, true);
180
181 var section = new IntermediateSection("test", SectionType.Product);
182 section.AddSymbol(symbol);
183
184 var intermediate1 = new Intermediate("TestIntermediate", new[] { section }, null);
185
186 // Intermediate #2
187 var fieldDefs2 = new[]
188 {
189 new IntermediateFieldDefinition("A", IntermediateFieldType.String),
190 new IntermediateFieldDefinition("B", IntermediateFieldType.Number),
191 new IntermediateFieldDefinition("C", IntermediateFieldType.Bool),
192 new IntermediateFieldDefinition("D", IntermediateFieldType.String),
193 };
194
195 var symbolDef2 = new IntermediateSymbolDefinition("CustomDef2", 1, fieldDefs2, null);
196
197 var symbol2 = symbolDef2.CreateSymbol(sln, new Identifier(AccessModifier.Global, "customT2"));
198 symbol2.Set(0, "bar");
199 symbol2.Set(1, 3);
200 symbol2.Set(2, false);
201 symbol2.Set(3, "baz");
202
203 var section2 = new IntermediateSection("test2", SectionType.Fragment);
204 section2.AddSymbol(symbol2);
205
206 var intermediate2 = new Intermediate("TestIntermediate2", new[] { section2 }, null);
207
208 // Save
209 var path1 = Path.GetTempFileName();
210 var path2 = Path.GetTempFileName();
211 try
212 {
213 intermediate1.Save(path1);
214 intermediate2.Save(path2);
215
216 var loaded = Intermediate.Load(new[] { path1, path2 });
217
218 var loaded1 = loaded.First();
219 var loaded2 = loaded.Skip(1).Single();
220
221 var loadedSymbol1 = loaded1.Sections.Single().Symbols.Single();
222 var loadedSymbol2 = loaded2.Sections.Single().Symbols.Single();
223
224 Assert.Equal("foo", loadedSymbol1.AsString(0));
225 Assert.Equal(2, loadedSymbol1[1].AsNumber());
226 Assert.True(loadedSymbol1[2].AsBool());
227
228 Assert.Equal("bar", loadedSymbol2.AsString(0));
229 Assert.Equal(3, loadedSymbol2[1].AsNumber());
230 Assert.False(loadedSymbol2[2].AsBool());
231 Assert.Equal("baz", loadedSymbol2.AsString(3));
232 }
233 finally
234 {
235 File.Delete(path2);
236 File.Delete(path1);
237 }
238 }
239
240 [Fact]
241 public void CanSaveAndLoadMultipleIntermediateWithCustomDefinitionsAndTags()
242 {
243 var sln = new SourceLineNumber("test.wxs", 1);
244
245 // Intermediate #1
246 var fieldDefs = new[]
247 {
248 new IntermediateFieldDefinition("A", IntermediateFieldType.String),
249 new IntermediateFieldDefinition("B", IntermediateFieldType.Number),
250 new IntermediateFieldDefinition("C", IntermediateFieldType.Bool),
251 };
252
253 var symbolDef = new IntermediateSymbolDefinition("CustomDef", fieldDefs, null);
254
255 symbolDef.AddTag("customDef");
256
257 var symbol = symbolDef.CreateSymbol(sln, new Identifier(AccessModifier.Global, "customT"));
258 symbol.Set(0, "foo");
259 symbol.Set(1, 2);
260 symbol.Set(2, true);
261
262 symbol.AddTag("symbol1tag");
263
264 var section = new IntermediateSection("test", SectionType.Product);
265 section.AddSymbol(symbol);
266
267 var intermediate1 = new Intermediate("TestIntermediate", new[] { section }, null);
268
269 // Intermediate #2
270 var fieldDefs2 = new[]
271 {
272 new IntermediateFieldDefinition("A", IntermediateFieldType.String),
273 new IntermediateFieldDefinition("B", IntermediateFieldType.Number),
274 new IntermediateFieldDefinition("C", IntermediateFieldType.Bool),
275 new IntermediateFieldDefinition("D", IntermediateFieldType.String),
276 };
277
278 var symbolDef2 = new IntermediateSymbolDefinition("CustomDef2", 1, fieldDefs2, null);
279
280 symbolDef2.AddTag("customDef2");
281 symbolDef2.AddTag("customDef2 tag2");
282
283 var symbol2 = symbolDef2.CreateSymbol(sln, new Identifier(AccessModifier.Global, "customT2"));
284 symbol2.Set(0, "bar");
285 symbol2.Set(1, 3);
286 symbol2.Set(2, false);
287 symbol2.Set(3, "baz");
288
289 symbol2.AddTag("symbol2tag1");
290 symbol2.AddTag("symbol2tag2");
291
292 var section2 = new IntermediateSection("test2", SectionType.Fragment);
293 section2.AddSymbol(symbol2);
294
295 var intermediate2 = new Intermediate("TestIntermediate2", new[] { section2 }, null);
296
297 // Save
298 var path1 = Path.GetTempFileName();
299 var path2 = Path.GetTempFileName();
300 try
301 {
302 intermediate1.Save(path1);
303 intermediate2.Save(path2);
304
305 var loaded = Intermediate.Load(new[] { path1, path2 });
306
307 var loaded1 = loaded.First();
308 var loaded2 = loaded.Skip(1).Single();
309
310 var loadedSymbol1 = loaded1.Sections.Single().Symbols.Single();
311 var loadedSymbol2 = loaded2.Sections.Single().Symbols.Single();
312
313 Assert.True(loadedSymbol1.Definition.HasTag("customDef"));
314 Assert.Equal("foo", loadedSymbol1.AsString(0));
315 Assert.Equal(2, loadedSymbol1[1].AsNumber());
316 Assert.True(loadedSymbol1[2].AsBool());
317 Assert.True(loadedSymbol1.HasTag("symbol1tag"));
318
319 Assert.True(loadedSymbol2.Definition.HasTag("customDef2"));
320 Assert.True(loadedSymbol2.Definition.HasTag("customDef2 tag2"));
321 Assert.Equal("bar", loadedSymbol2.AsString(0));
322 Assert.Equal(3, loadedSymbol2[1].AsNumber());
323 Assert.False(loadedSymbol2[2].AsBool());
324 Assert.Equal("baz", loadedSymbol2.AsString(3));
325 Assert.True(loadedSymbol2.HasTag("symbol2tag1"));
326 Assert.True(loadedSymbol2.HasTag("symbol2tag2"));
327 }
328 finally
329 {
330 File.Delete(path2);
331 File.Delete(path1);
332 }
333 }
334
335 [Fact]
336 public void CanSaveAndLoadIntermediateWithLocalization()
337 {
338 var sln = new SourceLineNumber("test.wxs", 10);
339
340 var bindVariables = new[]
341 {
342 new BindVariable { Id = "TestVar1", Value = "TestValue1", SourceLineNumbers = sln },
343 new BindVariable { Id = "TestVar2", Value = "TestValue2", Overridable = true, SourceLineNumbers = sln },
344 };
345
346 var controls = new[]
347 {
348 new LocalizedControl("TestDlg1", "TestControl1", 10, 10, 100, 100, false, false, false, null),
349 new LocalizedControl("TestDlg1", "TestControl2", 100, 90, 50, 70, false, false, false, "localized"),
350 };
351
352 var localizations = new[]
353 {
354 new Localization(65001, 1252, null, bindVariables.ToDictionary(b => b.Id), controls.ToDictionary(c => c.GetKey()))
355 };
356
357 var section = new IntermediateSection("test", SectionType.Product);
358
359 section.AddSymbol(new ComponentSymbol(sln, new Identifier(AccessModifier.Global, "TestComponent"))
360 {
361 ComponentId = new Guid(1, 0, 0, new byte[8]).ToString("B"),
362 DirectoryRef = "TestFolder",
363 Location = ComponentLocation.Either,
364 });
365
366 var intermediate = new Intermediate("TestIntermediate", new[] { section }, localizations.ToDictionary(l => l.Culture));
367
368 var path = Path.GetTempFileName();
369 try
370 {
371 intermediate.Save(path);
372
373 var loaded = Intermediate.Load(path);
374
375 var loc = loaded.Localizations.Single();
376 Assert.Equal(65001, loc.Codepage);
377 Assert.Empty(loc.Culture);
378 Assert.Equal(new[]
379 {
380 "TestVar1/TestValue1/False",
381 "TestVar2/TestValue2/True",
382 }, loc.Variables.Select(v => String.Join("/", v.Id, v.Value, v.Overridable)).ToArray());
383 }
384 finally
385 {
386 File.Delete(path);
387 }
388 }
389
390 [Fact]
391 public void CanSaveAndLoadWindowsInstallerData()
392 {
393 var sln = new SourceLineNumber("test.wxs", 1);
394 var windowsInstallerData = new Wid.WindowsInstallerData(sln)
395 {
396 Type = OutputType.Product,
397 };
398
399 var fileTable = windowsInstallerData.EnsureTable(Wid.WindowsInstallerTableDefinitions.File);
400 var fileRow = (FileRow)fileTable.CreateRow(sln);
401 fileRow.File = "TestFile";
402
403 var path = Path.GetTempFileName();
404 try
405 {
406 using (var wixout = WixOutput.Create(path))
407 {
408 windowsInstallerData.Save(wixout);
409 }
410
411 var loaded = Wid.WindowsInstallerData.Load(path);
412
413 var loadedTable = Assert.Single(loaded.Tables);
414 Assert.Equal(Wid.WindowsInstallerTableDefinitions.File.Name, loadedTable.Name);
415
416 var loadedRow = Assert.Single(loadedTable.Rows);
417 var loadedFileRow = Assert.IsType<FileRow>(loadedRow);
418
419 Assert.Equal("TestFile", loadedFileRow.File);
420 }
421 finally
422 {
423 File.Delete(path);
424 }
425 }
426 }
427}
diff --git a/src/test/WixToolsetTest.Data/TagFixture.cs b/src/test/WixToolsetTest.Data/TagFixture.cs
deleted file mode 100644
index 5527c978..00000000
--- a/src/test/WixToolsetTest.Data/TagFixture.cs
+++ /dev/null
@@ -1,101 +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
3namespace WixToolsetTest.Data
4{
5 using WixToolset.Data;
6 using Xunit;
7
8 public class TagFixture
9 {
10 [Fact]
11 public void CanAddSingleTag()
12 {
13 var symbol = SymbolDefinitions.File.CreateSymbol();
14 Assert.True(symbol.AddTag("test"));
15 Assert.True(symbol.HasTag("test"));
16 }
17
18 [Fact]
19 public void CanAddDuplicateTag()
20 {
21 var symbol = SymbolDefinitions.File.CreateSymbol();
22 Assert.True(symbol.AddTag("test"));
23 Assert.False(symbol.AddTag("test"));
24 }
25
26 [Fact]
27 public void CanAddRemoveSingleTag()
28 {
29 var symbol = SymbolDefinitions.File.CreateSymbol();
30 Assert.True(symbol.AddTag("test"));
31 Assert.True(symbol.RemoveTag("test"));
32 Assert.False(symbol.HasTag("test"));
33 }
34
35 [Fact]
36 public void CanAddMultipleTags()
37 {
38 var symbol = SymbolDefinitions.File.CreateSymbol();
39 Assert.True(symbol.AddTag("test1"));
40 Assert.True(symbol.AddTag("test2"));
41 Assert.True(symbol.HasTag("test1"));
42 Assert.True(symbol.HasTag("test2"));
43 }
44
45 [Fact]
46 public void CanAddRemoveMultipleTags()
47 {
48 var symbol = SymbolDefinitions.File.CreateSymbol();
49 Assert.True(symbol.AddTag("test1"));
50 Assert.True(symbol.AddTag("test2"));
51 Assert.True(symbol.RemoveTag("test2"));
52 Assert.False(symbol.HasTag("test2"));
53 Assert.True(symbol.RemoveTag("test1"));
54 Assert.False(symbol.HasTag("test1"));
55 }
56
57 [Fact]
58 public void CanAddRemoveMissingTags()
59 {
60 var symbol = SymbolDefinitions.File.CreateSymbol();
61 Assert.True(symbol.AddTag("test1"));
62 Assert.True(symbol.AddTag("test2"));
63 Assert.False(symbol.RemoveTag("test3"));
64 }
65
66 [Fact]
67 public void CanAdd2AndRemoveAllTags()
68 {
69 var symbol = SymbolDefinitions.File.CreateSymbol();
70 Assert.True(symbol.AddTag("test1"));
71 Assert.True(symbol.AddTag("test2"));
72 Assert.True(symbol.RemoveTag("test1"));
73 Assert.True(symbol.RemoveTag("test2"));
74 }
75
76 [Fact]
77 public void CanAdd3AndRemoveAllTags()
78 {
79 var symbol = SymbolDefinitions.File.CreateSymbol();
80 Assert.True(symbol.AddTag("test1"));
81 Assert.True(symbol.AddTag("test2"));
82 Assert.True(symbol.AddTag("test3"));
83 Assert.True(symbol.RemoveTag("test1"));
84 Assert.True(symbol.RemoveTag("test3"));
85 Assert.True(symbol.RemoveTag("test2"));
86 }
87
88 [Fact]
89 public void CanAdd3AndRemoveMissingTags()
90 {
91 var symbol = SymbolDefinitions.File.CreateSymbol();
92 Assert.True(symbol.AddTag("test1"));
93 Assert.True(symbol.AddTag("test2"));
94 Assert.True(symbol.AddTag("test3"));
95 Assert.False(symbol.RemoveTag("test4"));
96 Assert.True(symbol.RemoveTag("test1"));
97 Assert.True(symbol.RemoveTag("test3"));
98 Assert.True(symbol.RemoveTag("test2"));
99 }
100 }
101}
diff --git a/src/test/WixToolsetTest.Data/TupleDefinitionFixture.cs b/src/test/WixToolsetTest.Data/TupleDefinitionFixture.cs
deleted file mode 100644
index cde4a675..00000000
--- a/src/test/WixToolsetTest.Data/TupleDefinitionFixture.cs
+++ /dev/null
@@ -1,135 +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
3namespace WixToolsetTest.Data
4{
5 using WixToolset.Data;
6 using WixToolset.Data.Symbols;
7 using Xunit;
8
9 public class SymbolDefinitionFixture
10 {
11 [Fact]
12 public void CanCreateFileSymbol()
13 {
14 var symbol = SymbolDefinitions.File.CreateSymbol();
15 Assert.IsType<FileSymbol>(symbol);
16 Assert.Same(SymbolDefinitions.File, symbol.Definition);
17 }
18
19 [Fact]
20 public void CanCreateFileSymbolByName()
21 {
22 var symbol = SymbolDefinitions.ByName("File").CreateSymbol();
23 Assert.IsType<FileSymbol>(symbol);
24 Assert.Same(SymbolDefinitions.File, symbol.Definition);
25 }
26
27 //[Fact]
28 //public void CanCreateFileSymbolByType()
29 //{
30 // var symbol = SymbolDefinitions.CreateSymbol<FileSymbol>();
31 // Assert.Same(SymbolDefinitions.File, symbol.Definition);
32 //}
33
34 [Fact]
35 public void CanSetComponentFieldInFileSymbolByCasting()
36 {
37 var fileSymbol = (FileSymbol)SymbolDefinitions.File.CreateSymbol();
38 fileSymbol.ComponentRef = "Foo";
39 Assert.Equal("Foo", fileSymbol.ComponentRef);
40 }
41
42 [Fact]
43 public void CanCheckNameofField()
44 {
45 var fileSymbol = new FileSymbol();
46 Assert.Equal("ComponentRef", fileSymbol.Definition.FieldDefinitions[0].Name);
47 Assert.Null(fileSymbol.Fields[0]);
48 fileSymbol.ComponentRef = "Foo";
49 Assert.Equal("ComponentRef", fileSymbol.Fields[0].Name);
50 Assert.Same(fileSymbol.Definition.FieldDefinitions[0].Name, fileSymbol.Fields[0].Name);
51 }
52
53 [Fact]
54 public void CanSetComponentFieldInFileSymbolByNew()
55 {
56 var fileSymbol = new FileSymbol();
57 fileSymbol.ComponentRef = "Foo";
58 Assert.Equal("Foo", fileSymbol.ComponentRef);
59 }
60
61 [Fact]
62 public void CanGetContext()
63 {
64 using (new IntermediateFieldContext("bar"))
65 {
66 var fileSymbol = new FileSymbol();
67 fileSymbol.ComponentRef = "Foo";
68
69 var field = fileSymbol[FileSymbolFields.ComponentRef];
70 Assert.Equal("Foo", field.AsString());
71 Assert.Equal("bar", field.Context);
72 }
73 }
74
75 [Fact]
76 public void CanSetInNestedContext()
77 {
78 var fileSymbol = new FileSymbol();
79
80 using (new IntermediateFieldContext("bar"))
81 {
82 fileSymbol.ComponentRef = "Foo";
83
84 var field = fileSymbol[FileSymbolFields.ComponentRef];
85 Assert.Equal("Foo", field.AsString());
86 Assert.Equal("bar", field.Context);
87
88 using (new IntermediateFieldContext("baz"))
89 {
90 fileSymbol.ComponentRef = "Foo2";
91
92 field = fileSymbol[FileSymbolFields.ComponentRef];
93 Assert.Equal("Foo2", field.AsString());
94 Assert.Equal("baz", field.Context);
95
96 Assert.Equal("Foo", (string)field.PreviousValue);
97 Assert.Equal("bar", field.PreviousValue.Context);
98 }
99
100 fileSymbol.ComponentRef = "Foo3";
101
102 field = fileSymbol[FileSymbolFields.ComponentRef];
103 Assert.Equal("Foo3", field.AsString());
104 Assert.Equal("bar", field.Context);
105
106 Assert.Equal("Foo2", (string)field.PreviousValue);
107 Assert.Equal("baz", field.PreviousValue.Context);
108
109 Assert.Equal("Foo", (string)field.PreviousValue.PreviousValue);
110 Assert.Equal("bar", field.PreviousValue.PreviousValue.Context);
111 }
112
113 fileSymbol.ComponentRef = "Foo4";
114
115 var fieldOutside = fileSymbol[FileSymbolFields.ComponentRef];
116 Assert.Equal("Foo4", fieldOutside.AsString());
117 Assert.Null(fieldOutside.Context);
118 }
119
120 //[Fact]
121 //public void CanSetComponentFieldInFileSymbol()
122 //{
123 // var fileSymbol = SymbolDefinitions.File.CreateSymbol<FileSymbol>();
124 // fileSymbol.Component_ = "Foo";
125 // Assert.Equal("Foo", fileSymbol.Component_);
126 //}
127
128 //[Fact]
129 //public void CanThrowOnMismatchSymbolType()
130 //{
131 // var e = Assert.Throws<InvalidCastException>(() => SymbolDefinitions.File.CreateSymbol<ComponentSymbol>());
132 // Assert.Equal("Requested wrong type WixToolset.Data.Symbols.ComponentSymbol, actual type WixToolset.Data.Symbols.FileSymbol", e.Message);
133 //}
134 }
135}
diff --git a/src/test/WixToolsetTest.Data/WindowsInstallerTableDefinitionsFixture.cs b/src/test/WixToolsetTest.Data/WindowsInstallerTableDefinitionsFixture.cs
deleted file mode 100644
index 5621a756..00000000
--- a/src/test/WixToolsetTest.Data/WindowsInstallerTableDefinitionsFixture.cs
+++ /dev/null
@@ -1,29 +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
3namespace WixToolsetTest.Data
4{
5 using WixToolset.Data.WindowsInstaller;
6 using Xunit;
7
8 public class WindowsInstallerTableDefinitionsFixture
9 {
10 [Fact]
11 public void CanCreateWindowsInstallerRows()
12 {
13 foreach (var tableDefinition in WindowsInstallerTableDefinitions.All)
14 {
15 var table = new Table(tableDefinition);
16 var rowFromTable = table.CreateRow(null);
17 var rowFromTableDefinition = tableDefinition.CreateRow(null);
18 var expectedRowTypeName = tableDefinition.Name.Replace("_", "") + "Row";
19 var expectedRowType = rowFromTable.GetType();
20
21 Assert.Equal(expectedRowType, rowFromTableDefinition.GetType());
22 if (typeof(Row) != expectedRowType)
23 {
24 Assert.Equal(expectedRowTypeName, expectedRowType.Name);
25 }
26 }
27 }
28 }
29}
diff --git a/src/test/WixToolsetTest.Data/WixToolsetTest.Data.csproj b/src/test/WixToolsetTest.Data/WixToolsetTest.Data.csproj
deleted file mode 100644
index fb0f8594..00000000
--- a/src/test/WixToolsetTest.Data/WixToolsetTest.Data.csproj
+++ /dev/null
@@ -1,19 +0,0 @@
1<Project Sdk="Microsoft.NET.Sdk">
2
3 <PropertyGroup>
4 <TargetFramework>netcoreapp3.1</TargetFramework>
5
6 <IsPackable>false</IsPackable>
7 </PropertyGroup>
8
9 <ItemGroup>
10 <ProjectReference Include="..\..\WixToolset.Data\WixToolset.Data.csproj" />
11 </ItemGroup>
12
13 <ItemGroup>
14 <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
15 <PackageReference Include="xunit" Version="2.4.1" />
16 <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" PrivateAssets="All" />
17 </ItemGroup>
18
19</Project>