aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2020-05-21 18:42:42 -0400
committerBob Arnson <bob@firegiant.com>2020-05-21 18:44:17 -0400
commite25b29f5ded38e281f3a686bc5ce7cbe1d872d3b (patch)
treea1300301c786613eaec20b4dbb477cb84c70190b /src/test
parentc3c1d46cd8d833bc7d59ee52a5daf6210679ac05 (diff)
downloadwix-e25b29f5ded38e281f3a686bc5ce7cbe1d872d3b.tar.gz
wix-e25b29f5ded38e281f3a686bc5ce7cbe1d872d3b.tar.bz2
wix-e25b29f5ded38e281f3a686bc5ce7cbe1d872d3b.zip
Handle updating entries in a WixOutput.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/WixToolsetTest.Data/SerializeFixture.cs83
1 files changed, 73 insertions, 10 deletions
diff --git a/src/test/WixToolsetTest.Data/SerializeFixture.cs b/src/test/WixToolsetTest.Data/SerializeFixture.cs
index c07124ef..6e224438 100644
--- a/src/test/WixToolsetTest.Data/SerializeFixture.cs
+++ b/src/test/WixToolsetTest.Data/SerializeFixture.cs
@@ -32,20 +32,83 @@ namespace WixToolsetTest.Data
32 intermediate.UpdateLevel(IntermediateLevels.Resolved); 32 intermediate.UpdateLevel(IntermediateLevels.Resolved);
33 33
34 var path = Path.GetTempFileName(); 34 var path = Path.GetTempFileName();
35 intermediate.Save(path); 35 try
36 {
37 intermediate.Save(path);
38
39 var loaded = Intermediate.Load(path);
40
41 Assert.True(loaded.HasLevel(IntermediateLevels.Compiled));
42 Assert.True(loaded.HasLevel(IntermediateLevels.Linked));
43 Assert.True(loaded.HasLevel(IntermediateLevels.Resolved));
44
45 var tuple = (ComponentTuple)loaded.Sections.Single().Tuples.Single();
46
47 Assert.Equal("TestComponent", tuple.Id.Id);
48 Assert.Equal(AccessModifier.Public, tuple.Id.Access);
49 Assert.Equal("TestFolder", tuple.DirectoryRef);
50 Assert.Equal(ComponentLocation.Either, tuple.Location);
51 }
52 finally
53 {
54 File.Delete(path);
55 }
56 }
57
58 [Fact]
59 public void CanUpdateIntermediate()
60 {
61 var sln = new SourceLineNumber("test.wxs", 1);
62 var section = new IntermediateSection("test", SectionType.Product, 65001);
63
64 section.Tuples.Add(new ComponentTuple(sln, new Identifier(AccessModifier.Public, "TestComponent"))
65 {
66 ComponentId = new Guid(1, 0, 0, new byte[8]).ToString("B"),
67 DirectoryRef = "TestFolder",
68 Location = ComponentLocation.Either,
69 });
70
71 var intermediate = new Intermediate("TestIntermediate", IntermediateLevels.Compiled, new[] { section }, null);
72
73 var path = Path.GetTempFileName();
74 try
75 {
76 intermediate.Save(path);
36 77
37 var loaded = Intermediate.Load(path); 78 var uri = new Uri(Path.GetFullPath(path));
79 var stream = File.Open(path, FileMode.Open, FileAccess.ReadWrite);
38 80
39 Assert.True(loaded.HasLevel(IntermediateLevels.Compiled)); 81 using (var wixout = WixOutput.Read(uri, stream))
40 Assert.True(loaded.HasLevel(IntermediateLevels.Linked)); 82 {
41 Assert.True(loaded.HasLevel(IntermediateLevels.Resolved)); 83 var loaded = Intermediate.Load(wixout);
84 var tuple = (ComponentTuple)loaded.Sections.Single().Tuples.Single();
85
86 Assert.Equal("TestComponent", tuple.Id.Id);
87 Assert.Equal(AccessModifier.Public, tuple.Id.Access);
88
89 wixout.Reopen(writable: true);
90
91 section.Tuples.Add(new ComponentTuple(sln, new Identifier(AccessModifier.Public, "NewComponent"))
92 {
93 ComponentId = new Guid(1, 0, 0, new byte[8]).ToString("B"),
94 });
95
96 intermediate.Save(wixout);
97 loaded = Intermediate.Load(wixout);
98
99 var newTuple = loaded.Sections.Single().Tuples.Where(t => t.Id.Id == "NewComponent");
100 Assert.Single(newTuple);
101 }
42 102
43 var tuple = (ComponentTuple)loaded.Sections.Single().Tuples.Single(); 103 var loadedAfterDispose = Intermediate.Load(path);
104 var newTupleStillThere = loadedAfterDispose.Sections.Single().Tuples.Where(t => t.Id.Id == "NewComponent");
105 Assert.Single(newTupleStillThere);
44 106
45 Assert.Equal("TestComponent", tuple.Id.Id); 107 }
46 Assert.Equal(AccessModifier.Public, tuple.Id.Access); 108 finally
47 Assert.Equal("TestFolder", tuple.DirectoryRef); 109 {
48 Assert.Equal(ComponentLocation.Either, tuple.Location); 110 File.Delete(path);
111 }
49 } 112 }
50 113
51 [Fact] 114 [Fact]