aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/WixToolsetTest.Data/SerializeFixture.cs100
-rw-r--r--src/test/WixToolsetTest.Data/TagFixture.cs101
2 files changed, 198 insertions, 3 deletions
diff --git a/src/test/WixToolsetTest.Data/SerializeFixture.cs b/src/test/WixToolsetTest.Data/SerializeFixture.cs
index 527359fe..221ca19c 100644
--- a/src/test/WixToolsetTest.Data/SerializeFixture.cs
+++ b/src/test/WixToolsetTest.Data/SerializeFixture.cs
@@ -55,7 +55,7 @@ namespace WixToolsetTest.Data
55 new IntermediateFieldDefinition("C", IntermediateFieldType.Bool), 55 new IntermediateFieldDefinition("C", IntermediateFieldType.Bool),
56 }; 56 };
57 57
58 var tupleDef = new IntermediateTupleDefinition("CustomDef", fieldDefs, null); 58 var tupleDef = new IntermediateTupleDefinition("CustomDef2", fieldDefs, null);
59 59
60 var tuple = tupleDef.CreateTuple(sln, new Identifier(AccessModifier.Public, "customT")); 60 var tuple = tupleDef.CreateTuple(sln, new Identifier(AccessModifier.Public, "customT"));
61 tuple.Set(0, "foo"); 61 tuple.Set(0, "foo");
@@ -119,7 +119,93 @@ namespace WixToolsetTest.Data
119 new IntermediateFieldDefinition("D", IntermediateFieldType.String), 119 new IntermediateFieldDefinition("D", IntermediateFieldType.String),
120 }; 120 };
121 121
122 var tupleDef2 = new IntermediateTupleDefinition("CustomDef", 1, fieldDefs2, null); 122 var tupleDef2 = new IntermediateTupleDefinition("CustomDef2", 1, fieldDefs2, null);
123
124 var tuple2 = tupleDef2.CreateTuple(sln, new Identifier(AccessModifier.Public, "customT2"));
125 tuple2.Set(0, "bar");
126 tuple2.Set(1, 3);
127 tuple2.Set(2, false);
128 tuple2.Set(3, "baz");
129
130 var section2 = new IntermediateSection("test2", SectionType.Fragment, 65001);
131 section2.Tuples.Add(tuple2);
132
133 var intermediate2 = new Intermediate("TestIntermediate2", new[] { section2 }, null, null);
134
135 // Save
136 var path1 = Path.GetTempFileName();
137 var path2 = Path.GetTempFileName();
138 try
139 {
140 intermediate1.Save(path1);
141 intermediate2.Save(path2);
142
143 var loaded = Intermediate.Load(new[] { path1, path2 });
144
145 var loaded1 = loaded.First();
146 var loaded2 = loaded.Skip(1).Single();
147
148 var loadedTuple1 = loaded1.Sections.Single().Tuples.Single();
149 var loadedTuple2 = loaded2.Sections.Single().Tuples.Single();
150
151 Assert.Equal("foo", loadedTuple1.AsString(0));
152 Assert.Equal(2, loadedTuple1[1].AsNumber());
153 Assert.True(loadedTuple1[2].AsBool());
154
155 Assert.Equal("bar", loadedTuple2.AsString(0));
156 Assert.Equal(3, loadedTuple2[1].AsNumber());
157 Assert.False(loadedTuple2[2].AsBool());
158 Assert.Equal("baz", loadedTuple2.AsString(3));
159 }
160 finally
161 {
162 File.Delete(path2);
163 File.Delete(path1);
164 }
165 }
166
167 [Fact]
168 public void CanSaveAndLoadMultipleIntermediateWithCustomDefinitionsAndTags()
169 {
170 var sln = new SourceLineNumber("test.wxs", 1);
171
172 // Intermediate #1
173 var fieldDefs = new[]
174 {
175 new IntermediateFieldDefinition("A", IntermediateFieldType.String),
176 new IntermediateFieldDefinition("B", IntermediateFieldType.Number),
177 new IntermediateFieldDefinition("C", IntermediateFieldType.Bool),
178 };
179
180 var tupleDef = new IntermediateTupleDefinition("CustomDef", fieldDefs, null);
181
182 tupleDef.AddTag("customDef");
183
184 var tuple = tupleDef.CreateTuple(sln, new Identifier(AccessModifier.Public, "customT"));
185 tuple.Set(0, "foo");
186 tuple.Set(1, 2);
187 tuple.Set(2, true);
188
189 tuple.AddTag("tuple1tag");
190
191 var section = new IntermediateSection("test", SectionType.Product, 65001);
192 section.Tuples.Add(tuple);
193
194 var intermediate1 = new Intermediate("TestIntermediate", new[] { section }, null, null);
195
196 // Intermediate #2
197 var fieldDefs2 = new[]
198 {
199 new IntermediateFieldDefinition("A", IntermediateFieldType.String),
200 new IntermediateFieldDefinition("B", IntermediateFieldType.Number),
201 new IntermediateFieldDefinition("C", IntermediateFieldType.Bool),
202 new IntermediateFieldDefinition("D", IntermediateFieldType.String),
203 };
204
205 var tupleDef2 = new IntermediateTupleDefinition("CustomDef2", 1, fieldDefs2, null);
206
207 tupleDef2.AddTag("customDef2");
208 tupleDef2.AddTag("customDef2 tag2");
123 209
124 var tuple2 = tupleDef2.CreateTuple(sln, new Identifier(AccessModifier.Public, "customT2")); 210 var tuple2 = tupleDef2.CreateTuple(sln, new Identifier(AccessModifier.Public, "customT2"));
125 tuple2.Set(0, "bar"); 211 tuple2.Set(0, "bar");
@@ -127,6 +213,9 @@ namespace WixToolsetTest.Data
127 tuple2.Set(2, false); 213 tuple2.Set(2, false);
128 tuple2.Set(3, "baz"); 214 tuple2.Set(3, "baz");
129 215
216 tuple2.AddTag("tuple2tag1");
217 tuple2.AddTag("tuple2tag2");
218
130 var section2 = new IntermediateSection("test2", SectionType.Fragment, 65001); 219 var section2 = new IntermediateSection("test2", SectionType.Fragment, 65001);
131 section2.Tuples.Add(tuple2); 220 section2.Tuples.Add(tuple2);
132 221
@@ -148,15 +237,20 @@ namespace WixToolsetTest.Data
148 var loadedTuple1 = loaded1.Sections.Single().Tuples.Single(); 237 var loadedTuple1 = loaded1.Sections.Single().Tuples.Single();
149 var loadedTuple2 = loaded2.Sections.Single().Tuples.Single(); 238 var loadedTuple2 = loaded2.Sections.Single().Tuples.Single();
150 239
240 Assert.True(loadedTuple1.Definition.HasTag("customDef"));
151 Assert.Equal("foo", loadedTuple1.AsString(0)); 241 Assert.Equal("foo", loadedTuple1.AsString(0));
152 Assert.Equal(2, loadedTuple1[1].AsNumber()); 242 Assert.Equal(2, loadedTuple1[1].AsNumber());
153 Assert.True(loadedTuple1[2].AsBool()); 243 Assert.True(loadedTuple1[2].AsBool());
154 Assert.Null(loadedTuple1.AsString(3)); 244 Assert.True(loadedTuple1.HasTag("tuple1tag"));
155 245
246 Assert.True(loadedTuple2.Definition.HasTag("customDef2"));
247 Assert.True(loadedTuple2.Definition.HasTag("customDef2 tag2"));
156 Assert.Equal("bar", loadedTuple2.AsString(0)); 248 Assert.Equal("bar", loadedTuple2.AsString(0));
157 Assert.Equal(3, loadedTuple2[1].AsNumber()); 249 Assert.Equal(3, loadedTuple2[1].AsNumber());
158 Assert.False(loadedTuple2[2].AsBool()); 250 Assert.False(loadedTuple2[2].AsBool());
159 Assert.Equal("baz", loadedTuple2.AsString(3)); 251 Assert.Equal("baz", loadedTuple2.AsString(3));
252 Assert.True(loadedTuple2.HasTag("tuple2tag1"));
253 Assert.True(loadedTuple2.HasTag("tuple2tag2"));
160 } 254 }
161 finally 255 finally
162 { 256 {
diff --git a/src/test/WixToolsetTest.Data/TagFixture.cs b/src/test/WixToolsetTest.Data/TagFixture.cs
new file mode 100644
index 00000000..4c0426a0
--- /dev/null
+++ b/src/test/WixToolsetTest.Data/TagFixture.cs
@@ -0,0 +1,101 @@
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 tuple = TupleDefinitions.File.CreateTuple();
14 Assert.True(tuple.AddTag("test"));
15 Assert.True(tuple.HasTag("test"));
16 }
17
18 [Fact]
19 public void CanAddDuplicateTag()
20 {
21 var tuple = TupleDefinitions.File.CreateTuple();
22 Assert.True(tuple.AddTag("test"));
23 Assert.False(tuple.AddTag("test"));
24 }
25
26 [Fact]
27 public void CanAddRemoveSingleTag()
28 {
29 var tuple = TupleDefinitions.File.CreateTuple();
30 Assert.True(tuple.AddTag("test"));
31 Assert.True(tuple.RemoveTag("test"));
32 Assert.False(tuple.HasTag("test"));
33 }
34
35 [Fact]
36 public void CanAddMultipleTags()
37 {
38 var tuple = TupleDefinitions.File.CreateTuple();
39 Assert.True(tuple.AddTag("test1"));
40 Assert.True(tuple.AddTag("test2"));
41 Assert.True(tuple.HasTag("test1"));
42 Assert.True(tuple.HasTag("test2"));
43 }
44
45 [Fact]
46 public void CanAddRemoveMultipleTags()
47 {
48 var tuple = TupleDefinitions.File.CreateTuple();
49 Assert.True(tuple.AddTag("test1"));
50 Assert.True(tuple.AddTag("test2"));
51 Assert.True(tuple.RemoveTag("test2"));
52 Assert.False(tuple.HasTag("test2"));
53 Assert.True(tuple.RemoveTag("test1"));
54 Assert.False(tuple.HasTag("test1"));
55 }
56
57 [Fact]
58 public void CanAddRemoveMissingTags()
59 {
60 var tuple = TupleDefinitions.File.CreateTuple();
61 Assert.True(tuple.AddTag("test1"));
62 Assert.True(tuple.AddTag("test2"));
63 Assert.False(tuple.RemoveTag("test3"));
64 }
65
66 [Fact]
67 public void CanAdd2AndRemoveAllTags()
68 {
69 var tuple = TupleDefinitions.File.CreateTuple();
70 Assert.True(tuple.AddTag("test1"));
71 Assert.True(tuple.AddTag("test2"));
72 Assert.True(tuple.RemoveTag("test1"));
73 Assert.True(tuple.RemoveTag("test2"));
74 }
75
76 [Fact]
77 public void CanAdd3AndRemoveAllTags()
78 {
79 var tuple = TupleDefinitions.File.CreateTuple();
80 Assert.True(tuple.AddTag("test1"));
81 Assert.True(tuple.AddTag("test2"));
82 Assert.True(tuple.AddTag("test3"));
83 Assert.True(tuple.RemoveTag("test1"));
84 Assert.True(tuple.RemoveTag("test3"));
85 Assert.True(tuple.RemoveTag("test2"));
86 }
87
88 [Fact]
89 public void CanAdd3AndRemoveMissingTags()
90 {
91 var tuple = TupleDefinitions.File.CreateTuple();
92 Assert.True(tuple.AddTag("test1"));
93 Assert.True(tuple.AddTag("test2"));
94 Assert.True(tuple.AddTag("test3"));
95 Assert.False(tuple.RemoveTag("test4"));
96 Assert.True(tuple.RemoveTag("test1"));
97 Assert.True(tuple.RemoveTag("test3"));
98 Assert.True(tuple.RemoveTag("test2"));
99 }
100 }
101}