aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/WixToolsetTest.Data/SerializeFixture.cs124
1 files changed, 124 insertions, 0 deletions
diff --git a/src/test/WixToolsetTest.Data/SerializeFixture.cs b/src/test/WixToolsetTest.Data/SerializeFixture.cs
index 1e03481d..ac2f5454 100644
--- a/src/test/WixToolsetTest.Data/SerializeFixture.cs
+++ b/src/test/WixToolsetTest.Data/SerializeFixture.cs
@@ -42,6 +42,130 @@ namespace WixToolsetTest.Data
42 } 42 }
43 43
44 [Fact] 44 [Fact]
45 public void CanSaveAndLoadIntermediateWithCustomDefinitions()
46 {
47 var sln = new SourceLineNumber("test.wxs", 1);
48
49 var section = new IntermediateSection("test", SectionType.Product, 65001);
50
51 var fieldDefs = new[]
52 {
53 new IntermediateFieldDefinition("A", IntermediateFieldType.String),
54 new IntermediateFieldDefinition("B", IntermediateFieldType.Number),
55 new IntermediateFieldDefinition("C", IntermediateFieldType.Bool),
56 };
57
58 var tupleDef = new IntermediateTupleDefinition("CustomDef", fieldDefs, null);
59
60 var tuple = tupleDef.CreateTuple(sln, new Identifier(AccessModifier.Public, "customT"));
61 tuple.Set(0, "foo");
62 tuple.Set(1, 2);
63 tuple.Set(2, true);
64
65 section.Tuples.Add(tuple);
66
67 var intermediate = new Intermediate("TestIntermediate", new[] { section }, null, null);
68
69 var path = Path.GetTempFileName();
70 try
71 {
72 intermediate.Save(path);
73
74 var loaded = Intermediate.Load(path);
75 var loadedSection = loaded.Sections.Single();
76 var loadedTuple = loadedSection.Tuples.Single();
77
78 Assert.Equal("foo", loadedTuple.AsString(0));
79 Assert.Equal(2, loadedTuple[1].AsNumber());
80 Assert.True(loadedTuple[2].AsBool());
81 }
82 finally
83 {
84 File.Delete(path);
85 }
86 }
87
88 [Fact]
89 public void CanSaveAndLoadMultipleIntermediateWithCustomDefinitions()
90 {
91 var sln = new SourceLineNumber("test.wxs", 1);
92
93 // Intermediate #1
94 var fieldDefs = new[]
95 {
96 new IntermediateFieldDefinition("A", IntermediateFieldType.String),
97 new IntermediateFieldDefinition("B", IntermediateFieldType.Number),
98 new IntermediateFieldDefinition("C", IntermediateFieldType.Bool),
99 };
100
101 var tupleDef = new IntermediateTupleDefinition("CustomDef", fieldDefs, null);
102
103 var tuple = tupleDef.CreateTuple(sln, new Identifier(AccessModifier.Public, "customT"));
104 tuple.Set(0, "foo");
105 tuple.Set(1, 2);
106 tuple.Set(2, true);
107
108 var section = new IntermediateSection("test", SectionType.Product, 65001);
109 section.Tuples.Add(tuple);
110
111 var intermediate1 = new Intermediate("TestIntermediate", new[] { section }, null, null);
112
113 // Intermediate #2
114 var fieldDefs2 = new[]
115 {
116 new IntermediateFieldDefinition("A", IntermediateFieldType.String),
117 new IntermediateFieldDefinition("B", IntermediateFieldType.Number),
118 new IntermediateFieldDefinition("C", IntermediateFieldType.Bool),
119 new IntermediateFieldDefinition("D", IntermediateFieldType.String),
120 };
121
122 var tupleDef2 = new IntermediateTupleDefinition("CustomDef", 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 Assert.Null(loadedTuple1.AsString(3));
155
156 Assert.Equal("bar", loadedTuple2.AsString(0));
157 Assert.Equal(3, loadedTuple2[1].AsNumber());
158 Assert.False(loadedTuple2[2].AsBool());
159 Assert.Equal("baz", loadedTuple2.AsString(3));
160 }
161 finally
162 {
163 File.Delete(path2);
164 File.Delete(path1);
165 }
166 }
167
168 [Fact]
45 public void CanSaveAndLoadIntermediateWithLocalization() 169 public void CanSaveAndLoadIntermediateWithLocalization()
46 { 170 {
47 var sln = new SourceLineNumber("test.wxs", 10); 171 var sln = new SourceLineNumber("test.wxs", 10);