public void TestSerialization()
        {
            UniqueIDCache.ClearIdCache();
            DelimitedTextFileLookupTransform transformToSeralize = new DelimitedTextFileLookupTransform();

            transformToSeralize.DefaultValue          = "A";
            transformToSeralize.FileName              = "B";
            transformToSeralize.FindColumn            = 1;
            transformToSeralize.HasHeaderRow          = true;
            transformToSeralize.OnMissingMatch        = OnMissingMatch.UseNull;
            transformToSeralize.ReplaceColumn         = 5;
            transformToSeralize.ID                    = "test001";
            transformToSeralize.CustomDelimiterRegex  = "1234";
            transformToSeralize.DelimiterType         = DelimiterType.Custom;
            transformToSeralize.CustomEscapeSequence  = "\\";
            transformToSeralize.UserDefinedReturnType = ExtendedAttributeType.Integer;
            UniqueIDCache.ClearIdCache();

            DelimitedTextFileLookupTransform deserializedTransform = (DelimitedTextFileLookupTransform)UnitTestControl.XmlSerializeRoundTrip <Transform>(transformToSeralize);

            Assert.AreEqual(transformToSeralize.ID, deserializedTransform.ID);
            Assert.AreEqual(transformToSeralize.DefaultValue, deserializedTransform.DefaultValue);
            Assert.AreEqual(transformToSeralize.FileName, deserializedTransform.FileName);
            Assert.AreEqual(transformToSeralize.FindColumn, deserializedTransform.FindColumn);
            Assert.AreEqual(transformToSeralize.HasHeaderRow, deserializedTransform.HasHeaderRow);
            Assert.AreEqual(transformToSeralize.OnMissingMatch, deserializedTransform.OnMissingMatch);
            Assert.AreEqual(transformToSeralize.ReplaceColumn, deserializedTransform.ReplaceColumn);
            Assert.AreEqual(transformToSeralize.CustomDelimiterRegex, deserializedTransform.CustomDelimiterRegex);
            Assert.AreEqual(transformToSeralize.DelimiterType, deserializedTransform.DelimiterType);
            Assert.AreEqual(transformToSeralize.CustomEscapeSequence, deserializedTransform.CustomEscapeSequence);
            Assert.AreEqual(transformToSeralize.UserDefinedReturnType, deserializedTransform.UserDefinedReturnType);
        }
        public DelimitedTextFileLookupTransformViewModel(DelimitedTextFileLookupTransform model)
            : base(model)
        {
            this.model = model;
            this.Commands.AddItem("SelectFile", x => this.SelectFile());

            if (this.model.UserDefinedReturnType == ExtendedAttributeType.Undefined)
            {
                this.model.UserDefinedReturnType = ExtendedAttributeType.String;
            }
        }
        public void DtfTransformCsvMissingValueOriginalTest()
        {
            DelimitedTextFileLookupTransform transform = new DelimitedTextFileLookupTransform();

            transform.FileName              = @"..\..\TestData\OUMappings.csv";
            transform.HasHeaderRow          = false;
            transform.FindColumn            = 0;
            transform.ReplaceColumn         = 1;
            transform.OnMissingMatch        = OnMissingMatch.UseOriginal;
            transform.DelimiterType         = DelimiterType.CommaSeparated;
            transform.UserDefinedReturnType = ExtendedAttributeType.String;
            this.ExecuteTestString(transform, "novalue", "novalue");
        }
        public void DtfTransformCsvBinaryNullTest()
        {
            DelimitedTextFileLookupTransform transform = new DelimitedTextFileLookupTransform();

            transform.FileName              = @"..\..\TestData\OUMappings.csv";
            transform.HasHeaderRow          = false;
            transform.FindColumn            = 0;
            transform.ReplaceColumn         = 1;
            transform.OnMissingMatch        = OnMissingMatch.UseNull;
            transform.DelimiterType         = DelimiterType.CommaSeparated;
            transform.UserDefinedReturnType = ExtendedAttributeType.Binary;
            this.ExecuteTestBinary(transform, new byte[] { 99, 99, 99, 99 }, null);
        }
        public void DtfTransformCsvQuotedValuesAndCommasAndQuotedValuesTest()
        {
            DelimitedTextFileLookupTransform transform = new DelimitedTextFileLookupTransform();

            transform.FileName              = @"..\..\TestData\OUMappings.csv";
            transform.HasHeaderRow          = false;
            transform.FindColumn            = 0;
            transform.ReplaceColumn         = 1;
            transform.OnMissingMatch        = OnMissingMatch.UseOriginal;
            transform.DelimiterType         = DelimiterType.CommaSeparated;
            transform.UserDefinedReturnType = ExtendedAttributeType.String;
            this.ExecuteTestString(transform, "12345678", "My new name, with commas, and \"quotes\"");
        }
        public void DtfTransformCustomValueTest()
        {
            DelimitedTextFileLookupTransform transform = new DelimitedTextFileLookupTransform();

            transform.FileName              = @"..\..\TestData\OUMappings.esv";
            transform.HasHeaderRow          = false;
            transform.FindColumn            = 0;
            transform.ReplaceColumn         = 1;
            transform.OnMissingMatch        = OnMissingMatch.UseOriginal;
            transform.DelimiterType         = DelimiterType.Custom;
            transform.CustomDelimiterRegex  = @"(?<!\\)=";
            transform.UserDefinedReturnType = ExtendedAttributeType.String;
            this.ExecuteTestString(transform, "1234", "MyName");
        }
        public void DtfTransformCustomValueTestWithEscapeCharacters()
        {
            DelimitedTextFileLookupTransform transform = new DelimitedTextFileLookupTransform();

            transform.FileName              = @"..\..\TestData\OUMappings.esv";
            transform.HasHeaderRow          = false;
            transform.FindColumn            = 0;
            transform.ReplaceColumn         = 1;
            transform.OnMissingMatch        = OnMissingMatch.UseOriginal;
            transform.DelimiterType         = DelimiterType.Custom;
            transform.CustomDelimiterRegex  = @"(?<!\\)=";
            transform.CustomEscapeSequence  = @"\";
            transform.UserDefinedReturnType = ExtendedAttributeType.Binary;
            this.ExecuteTestBinary(transform, new byte[] { 0, 1, 1, 33 }, new byte[] { 0, 1, 1, 34 });
        }
        public void PerformanceTest()
        {
            DelimitedTextFileLookupTransform transform = new DelimitedTextFileLookupTransform();

            transform.FileName              = @"..\..\TestData\OUMappings.tsv";
            transform.HasHeaderRow          = false;
            transform.FindColumn            = 0;
            transform.ReplaceColumn         = 1;
            transform.OnMissingMatch        = OnMissingMatch.UseOriginal;
            transform.DelimiterType         = DelimiterType.TabSeparated;
            transform.UserDefinedReturnType = ExtendedAttributeType.String;

            UnitTestControl.PerformanceTest(() =>
            {
                Assert.AreEqual("MyName", transform.TransformValue("1234").First());
            }, 300000);
        }