From 69b15d96cebdbb7201b1849b4f62786633d70b8d Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Wed, 1 Nov 2017 10:56:09 -0700 Subject: Introduce WiX Intermediate Representation --- .../WixToolsetTest.Data/TupleDefinitionFixture.cs | 135 +++++++++++++++++++++ .../WixToolsetTest.Data/WixToolsetTest.Data.csproj | 19 +++ 2 files changed, 154 insertions(+) create mode 100644 src/test/WixToolsetTest.Data/TupleDefinitionFixture.cs create mode 100644 src/test/WixToolsetTest.Data/WixToolsetTest.Data.csproj (limited to 'src/test/WixToolsetTest.Data') diff --git a/src/test/WixToolsetTest.Data/TupleDefinitionFixture.cs b/src/test/WixToolsetTest.Data/TupleDefinitionFixture.cs new file mode 100644 index 00000000..53aa2196 --- /dev/null +++ b/src/test/WixToolsetTest.Data/TupleDefinitionFixture.cs @@ -0,0 +1,135 @@ +// 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. + +namespace WixToolsetTest.Data +{ + using WixToolset.Data; + using WixToolset.Data.Tuples; + using Xunit; + + public class TupleDefinitionFixture + { + [Fact] + public void CanCreateFileTuple() + { + var tuple = TupleDefinitions.File.CreateTuple(); + Assert.IsType(tuple); + Assert.Same(TupleDefinitions.File, tuple.Definition); + } + + [Fact] + public void CanCreateFileTupleByName() + { + var tuple = TupleDefinitions.ByName("File").CreateTuple(); + Assert.IsType(tuple); + Assert.Same(TupleDefinitions.File, tuple.Definition); + } + + //[Fact] + //public void CanCreateFileTupleByType() + //{ + // var tuple = TupleDefinitions.CreateTuple(); + // Assert.Same(TupleDefinitions.File, tuple.Definition); + //} + + [Fact] + public void CanSetComponentFieldInFileTupleByCasting() + { + var fileTuple = (FileTuple)TupleDefinitions.File.CreateTuple(); + fileTuple.Component_ = "Foo"; + Assert.Equal("Foo", fileTuple.Component_); + } + + [Fact] + public void CanCheckNameofField() + { + var fileTuple = new FileTuple(); + Assert.Equal("Component_", fileTuple.Definition.FieldDefinitions[1].Name); + Assert.Null(fileTuple.Fields[0]); + fileTuple.Component_ = "Foo"; + Assert.Equal("Component_", fileTuple.Fields[1].Name); + Assert.Same(fileTuple.Definition.FieldDefinitions[1].Name, fileTuple.Fields[1].Name); + } + + [Fact] + public void CanSetComponentFieldInFileTupleByNew() + { + var fileTuple = new FileTuple(); + fileTuple.Component_ = "Foo"; + Assert.Equal("Foo", fileTuple.Component_); + } + + [Fact] + public void CanGetContext() + { + using (new IntermediateFieldContext("bar")) + { + var fileTuple = new FileTuple(); + fileTuple.Component_ = "Foo"; + + var field = fileTuple[FileTupleFields.Component_]; + Assert.Equal("Foo", field.AsString()); + Assert.Equal("bar", field.Context); + } + } + + [Fact] + public void CanSetInNestedContext() + { + var fileTuple = new FileTuple(); + + using (new IntermediateFieldContext("bar")) + { + fileTuple.Component_ = "Foo"; + + var field = fileTuple[FileTupleFields.Component_]; + Assert.Equal("Foo", field.AsString()); + Assert.Equal("bar", field.Context); + + using (new IntermediateFieldContext("baz")) + { + fileTuple.Component_ = "Foo2"; + + field = fileTuple[FileTupleFields.Component_]; + Assert.Equal("Foo2", field.AsString()); + Assert.Equal("baz", field.Context); + + Assert.Equal("Foo", (string)field.PreviousValue); + Assert.Equal("bar", field.PreviousValue.Context); + } + + fileTuple.Component_ = "Foo3"; + + field = fileTuple[FileTupleFields.Component_]; + Assert.Equal("Foo3", field.AsString()); + Assert.Equal("bar", field.Context); + + Assert.Equal("Foo2", (string)field.PreviousValue); + Assert.Equal("baz", field.PreviousValue.Context); + + Assert.Equal("Foo", (string)field.PreviousValue.PreviousValue); + Assert.Equal("bar", field.PreviousValue.PreviousValue.Context); + } + + fileTuple.Component_ = "Foo4"; + + var fieldOutside = fileTuple[FileTupleFields.Component_]; + Assert.Equal("Foo4", fieldOutside.AsString()); + Assert.Null(fieldOutside.Context); + } + + //[Fact] + //public void CanSetComponentFieldInFileTuple() + //{ + // var fileTuple = TupleDefinitions.File.CreateTuple(); + // fileTuple.Component_ = "Foo"; + // Assert.Equal("Foo", fileTuple.Component_); + //} + + //[Fact] + //public void CanThrowOnMismatchTupleType() + //{ + // var e = Assert.Throws(() => TupleDefinitions.File.CreateTuple()); + // Assert.Equal("Requested wrong type WixToolset.Data.Tuples.ComponentTuple, actual type WixToolset.Data.Tuples.FileTuple", e.Message); + //} + } +} diff --git a/src/test/WixToolsetTest.Data/WixToolsetTest.Data.csproj b/src/test/WixToolsetTest.Data/WixToolsetTest.Data.csproj new file mode 100644 index 00000000..fe0d99c5 --- /dev/null +++ b/src/test/WixToolsetTest.Data/WixToolsetTest.Data.csproj @@ -0,0 +1,19 @@ + + + + netcoreapp2.0 + + false + + + + + + + + + + + + + -- cgit v1.2.3-55-g6feb