From 7e87a6b75d0570c3ebfbf0e537fcf04e1cf84224 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Mon, 7 Oct 2019 07:33:18 -0700 Subject: Support tagging tuples and definitions --- src/test/WixToolsetTest.Data/SerializeFixture.cs | 100 ++++++++++++++++++++++- 1 file changed, 97 insertions(+), 3 deletions(-) (limited to 'src/test/WixToolsetTest.Data/SerializeFixture.cs') 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 new IntermediateFieldDefinition("C", IntermediateFieldType.Bool), }; - var tupleDef = new IntermediateTupleDefinition("CustomDef", fieldDefs, null); + var tupleDef = new IntermediateTupleDefinition("CustomDef2", fieldDefs, null); var tuple = tupleDef.CreateTuple(sln, new Identifier(AccessModifier.Public, "customT")); tuple.Set(0, "foo"); @@ -119,7 +119,93 @@ namespace WixToolsetTest.Data new IntermediateFieldDefinition("D", IntermediateFieldType.String), }; - var tupleDef2 = new IntermediateTupleDefinition("CustomDef", 1, fieldDefs2, null); + var tupleDef2 = new IntermediateTupleDefinition("CustomDef2", 1, fieldDefs2, null); + + var tuple2 = tupleDef2.CreateTuple(sln, new Identifier(AccessModifier.Public, "customT2")); + tuple2.Set(0, "bar"); + tuple2.Set(1, 3); + tuple2.Set(2, false); + tuple2.Set(3, "baz"); + + var section2 = new IntermediateSection("test2", SectionType.Fragment, 65001); + section2.Tuples.Add(tuple2); + + var intermediate2 = new Intermediate("TestIntermediate2", new[] { section2 }, null, null); + + // Save + var path1 = Path.GetTempFileName(); + var path2 = Path.GetTempFileName(); + try + { + intermediate1.Save(path1); + intermediate2.Save(path2); + + var loaded = Intermediate.Load(new[] { path1, path2 }); + + var loaded1 = loaded.First(); + var loaded2 = loaded.Skip(1).Single(); + + var loadedTuple1 = loaded1.Sections.Single().Tuples.Single(); + var loadedTuple2 = loaded2.Sections.Single().Tuples.Single(); + + Assert.Equal("foo", loadedTuple1.AsString(0)); + Assert.Equal(2, loadedTuple1[1].AsNumber()); + Assert.True(loadedTuple1[2].AsBool()); + + Assert.Equal("bar", loadedTuple2.AsString(0)); + Assert.Equal(3, loadedTuple2[1].AsNumber()); + Assert.False(loadedTuple2[2].AsBool()); + Assert.Equal("baz", loadedTuple2.AsString(3)); + } + finally + { + File.Delete(path2); + File.Delete(path1); + } + } + + [Fact] + public void CanSaveAndLoadMultipleIntermediateWithCustomDefinitionsAndTags() + { + var sln = new SourceLineNumber("test.wxs", 1); + + // Intermediate #1 + var fieldDefs = new[] + { + new IntermediateFieldDefinition("A", IntermediateFieldType.String), + new IntermediateFieldDefinition("B", IntermediateFieldType.Number), + new IntermediateFieldDefinition("C", IntermediateFieldType.Bool), + }; + + var tupleDef = new IntermediateTupleDefinition("CustomDef", fieldDefs, null); + + tupleDef.AddTag("customDef"); + + var tuple = tupleDef.CreateTuple(sln, new Identifier(AccessModifier.Public, "customT")); + tuple.Set(0, "foo"); + tuple.Set(1, 2); + tuple.Set(2, true); + + tuple.AddTag("tuple1tag"); + + var section = new IntermediateSection("test", SectionType.Product, 65001); + section.Tuples.Add(tuple); + + var intermediate1 = new Intermediate("TestIntermediate", new[] { section }, null, null); + + // Intermediate #2 + var fieldDefs2 = new[] + { + new IntermediateFieldDefinition("A", IntermediateFieldType.String), + new IntermediateFieldDefinition("B", IntermediateFieldType.Number), + new IntermediateFieldDefinition("C", IntermediateFieldType.Bool), + new IntermediateFieldDefinition("D", IntermediateFieldType.String), + }; + + var tupleDef2 = new IntermediateTupleDefinition("CustomDef2", 1, fieldDefs2, null); + + tupleDef2.AddTag("customDef2"); + tupleDef2.AddTag("customDef2 tag2"); var tuple2 = tupleDef2.CreateTuple(sln, new Identifier(AccessModifier.Public, "customT2")); tuple2.Set(0, "bar"); @@ -127,6 +213,9 @@ namespace WixToolsetTest.Data tuple2.Set(2, false); tuple2.Set(3, "baz"); + tuple2.AddTag("tuple2tag1"); + tuple2.AddTag("tuple2tag2"); + var section2 = new IntermediateSection("test2", SectionType.Fragment, 65001); section2.Tuples.Add(tuple2); @@ -148,15 +237,20 @@ namespace WixToolsetTest.Data var loadedTuple1 = loaded1.Sections.Single().Tuples.Single(); var loadedTuple2 = loaded2.Sections.Single().Tuples.Single(); + Assert.True(loadedTuple1.Definition.HasTag("customDef")); Assert.Equal("foo", loadedTuple1.AsString(0)); Assert.Equal(2, loadedTuple1[1].AsNumber()); Assert.True(loadedTuple1[2].AsBool()); - Assert.Null(loadedTuple1.AsString(3)); + Assert.True(loadedTuple1.HasTag("tuple1tag")); + Assert.True(loadedTuple2.Definition.HasTag("customDef2")); + Assert.True(loadedTuple2.Definition.HasTag("customDef2 tag2")); Assert.Equal("bar", loadedTuple2.AsString(0)); Assert.Equal(3, loadedTuple2[1].AsNumber()); Assert.False(loadedTuple2[2].AsBool()); Assert.Equal("baz", loadedTuple2.AsString(3)); + Assert.True(loadedTuple2.HasTag("tuple2tag1")); + Assert.True(loadedTuple2.HasTag("tuple2tag2")); } finally { -- cgit v1.2.3-55-g6feb