public void TestPrimaryOutput() { var input = new RowsBuilder() .Row("id", 1).Field("name", "one") .Row("id", 2).Field("name", "two") .Row("id", 3).Field("name", "three") .ToOperation(); var xml = @"<tfl><processes> <add name='process'> <connections> <add name='input' provider='internal' /> <add name='output' provider='internal' /> </connections> <entities> <add name='entity'> <fields> <add name='id' type='int' primary-key='true' /> <add name='name' /> </fields> </add> </entities> </add> </processes></tfl>".Replace('\'', '"'); var process = ProcessFactory.Create(xml, new TestLogger())[0]; process.Entities[0].InputOperation = input; var output = process.Execute(); Assert.IsInstanceOf <IEnumerable <Row> >(output); Assert.AreEqual(3, output.Count()); }
public void RelativeDateTime() { var date = DateTime.Now; var badDate = DateTime.Now.AddDays(3); var badDateString = badDate.ToString("yyyy-MM-dd"); var input = new RowsBuilder() .Row("in", date).Field("out", string.Empty) .Row("in", badDate).Field("out", string.Empty).ToOperation(); var validator = new RelativeDateTimeValidatorOperation( "in", "out", -1, DateTimeUnit.Day, RangeBoundaryType.Inclusive, 1, DateTimeUnit.Day, RangeBoundaryType.Inclusive, false ); var output = TestOperation(input, validator); Assert.AreEqual(true, output[0]["out"]); Assert.AreEqual(false, output[1]["out"]); }
public void StartsWith() { var input = new RowsBuilder().Row("f1", "test").Row("f1", "abcd").ToOperation(); var startsWith = new StartsWithValidatorOperation("f1", "abc", "out", false); var output = TestOperation(input, startsWith); Assert.IsFalse((bool)output[0]["out"]); Assert.IsTrue((bool)output[1]["out"]); }
public void ParseJson() { var input = new RowsBuilder() .Row().Field("f1", "{\"i\":\"am\", \"valid\":true}").Field("out", null) .Row().Field("f1", "{\"i\":\"have\", \"a\":\"Prob\"lem\"}").Field("out", null).ToOperation(); var isJson = new JsonValidatorOperation("f1", "out", false); var rows = TestOperation(input, isJson); Assert.AreEqual(true, rows[0]["out"]); Assert.AreEqual(false, rows[1]["out"]); }
public void IsEmpty() { var input = new RowsBuilder() .Row("in", "789A").Field("out", "") .Row("in", "").Field("out", "").ToOperation(); var validator = new IsEmptyOperation("in", "out"); var output = TestOperation(input, validator); Assert.AreEqual(false, output[0]["out"]); Assert.AreEqual(true, output[1]["out"]); }
public void Regex() { var input = new RowsBuilder() .Row("in", "789A").Field("out", "") .Row("in", "hjd7").Field("out", "").ToOperation(); var validator = new RegexValidatorOperation("in", "out", @"^7[0-9]{2}A$", false); var output = TestOperation(input, validator); Assert.AreEqual(true, output[0]["out"]); Assert.AreEqual(false, output[1]["out"]); }
public void Range() { var input = new RowsBuilder() .Row("in", 5).Field("out", "") .Row("in", 2).Field("out", "").ToOperation(); var validator = new RangeValidatorOperation("in", "out", 3, RangeBoundaryType.Inclusive, 9, RangeBoundaryType.Inclusive, false); var output = TestOperation(input, validator); Assert.AreEqual(true, output[0]["out"]); Assert.AreEqual(false, output[1]["out"]); }
public void PropertyComparisonGreaterThanNumbers() { var input = new RowsBuilder() .Row("in1", 59).Field("in2", 57).Field("out", "") .Row("in1", 47).Field("in2", 47).Field("out", "").ToOperation(); var validator = new PropertyComparisonValidatorOperation("in1", "in2", "out", "GreaterThan", false); var output = TestOperation(input, validator); Assert.AreEqual(true, output[0]["out"]); Assert.AreEqual(false, output[1]["out"]); }
public void PropertyComparison() { var input = new RowsBuilder() .Row("in1", "77").Field("in2", null).Field("out", "") .Row("in1", "78").Field("in2", "78").Field("out", "").ToOperation(); var validator = new PropertyComparisonValidatorOperation("in1", "in2", "out", "Equal", false); var output = TestOperation(input, validator); Assert.AreEqual(false, output[0]["out"]); Assert.AreEqual(true, output[1]["out"]); }
public void NotNull() { var input = new RowsBuilder() .Row("in", "x").Field("out", null) .Row("in", null).Field("out", null).ToOperation(); var notNullOperation = new NotNullValidatorOperation("in", "out", false); var output = TestOperation(input, notNullOperation); Assert.AreEqual(true, output[0]["out"]); Assert.AreEqual(false, output[1]["out"]); }
public void StringLength() { var input = new RowsBuilder() .Row("in", "something").Field("out", string.Empty) .Row("in", "some").Field("out", string.Empty).ToOperation(); var validator = new StringLengthValidatorOperation("in", "out", 5, RangeBoundaryType.Inclusive, 10, RangeBoundaryType.Inclusive, false); var output = TestOperation(input, validator); Assert.AreEqual(true, output[0]["out"]); Assert.AreEqual(false, output[1]["out"]); }
public void Domain() { var input = new RowsBuilder() .Row("in", "2").Field("out", null) .Row("in", "4").Field("out", null).ToOperation(); var domainOperation = new DomainValidatorOperation("in", "out", new[] { "1", "2", "3" }, false); var output = TestOperation(input, domainOperation); Assert.AreEqual(true, output[0]["out"]); Assert.AreEqual(false, output[1]["out"]); }
public void ContainsCharacters() { var input = new RowsBuilder() .Row("f1", "test") .Row("f1", "abcd").ToOperation(); var containsCharacters = new ContainsCharactersValidatorOperation("f1", "o1", "abc", Libs.EnterpriseLibrary.Validation.Validators.ContainsCharacters.All, false); var output = TestOperation(input, containsCharacters); Assert.AreEqual(false, output[0]["o1"]); Assert.AreEqual(true, output[1]["o1"]); }
public void ParseJson2() { const string goodJson = "{\"updated\": \"Thu, 10 Sep 2009 08:45:12 +0000\", \"links\": [{\"href\": \"http://www.designvitality.com/blog/2007/09/photoshop-text-effect-tutorial/\", \"type\": \"text/html\", \"rel\": \"alternate\"}], \"title\": \"Photoshop Text Effects\", \"author\": \"hotpants1\", \"comments\": \"http://delicious.com/url/90c1b26e451a090452df8b947d6298cb\", \"guidislink\": false, \"title_detail\": {\"base\": \"http://feeds.delicious.com/v2/rss/recent?min=1&count=100\", \"type\": \"text/plain\", \"language\": null, \"value\": \"Photoshop Text Effects\"}, \"link\": \"http://www.designvitality.com/blog/2007/09/photoshop-text-effect-tutorial/\", \"source\": {}, \"wfw_commentrss\": \"http://feeds.delicious.com/v2/rss/url/90c1b26e451a090452df8b947d6298cb\", \"id\": \"http://delicious.com/url/90c1b26e451a090452df8b947d6298cb#hotpants1\", \"tags\": [{\"term\": \"photoshop\", \"scheme\": \"http://delicious.com/hotpants1/\", \"label\": null}]}"; const string badJson = "{\"updated\": \"Thu, 10 Sep 2009 08:45:12 +0000\", \"links\": [{\"href\": \"http://www.designvitality.com/blog/2007/09/photoshop-text-effect-tutorial/\", \"type\": \"text/html\", \"rel\": \"alternate\"}], \"title\": \"Photoshop Text Effects\", \"author\": \"hotpants1\", \"comments\": \"http://delicious.com/url/90c1b26e451a090452df8b947d6298cb\", \"guidislink\": false, \"title_detail\": {\"base\": \"http://feeds.delicious.com/v2/rss/recent?min=1&count=100\", \"type\": \"text/plain\", \"language\": null, \"value\": \"Photoshop Text Effects\"}, \"link\": \"http://www.designvitality.com/blog/2007/09/photoshop-text-effect-tutorial/\", \"source\": {}, \"wfw_commentrss\": \"http://feeds.delicious.com/v2/rss/url/90c1b26e451a090452df8b947d6298cb\", \"id\": \"http://delicious.com/url/90c1b26e451a090452df8b947d6298cb#hotpants1\", \"tags\": [{\"term\": \"photoshop\", scheme\": \"http://delicious.com/hotpants1/\", \"label\": null}]}"; var input = new RowsBuilder().Row().Field("f1", goodJson).Field("o1", "").Row().Field("f1", badJson).Field("o1", "").ToOperation(); var isJson = new JsonValidatorOperation("f1", "out", false); var rows = TestOperation(input, isJson); Assert.AreEqual(true, rows[0]["out"]); Assert.AreEqual(false, rows[1]["out"]); }
public void TypeConversion() { var input = new RowsBuilder() .Row("in", "9999-12-31").Field("out", string.Empty) .Row("in", "10/32/2001").Field("out", string.Empty).ToOperation(); var type = Common.ToSystemType("datetime"); var validator = new TypeConversionValidatorOperation("in", "out", type, false, false); var output = TestOperation(input, validator); Assert.AreEqual(true, output[0]["out"]); Assert.AreEqual(false, output[1]["out"]); }
public void TestSecondaryOutputs() { var file1 = Path.GetTempFileName(); var file2 = Path.GetTempFileName(); var input = new RowsBuilder() .Row("id", 1).Field("name", "one") .Row("id", 2).Field("name", "two") .Row("id", 3).Field("name", "three") .ToOperation(); var xml = string.Format(@"<tfl><processes> <add name='process'> <connections> <add name='input' provider='internal' /> <add name='output' provider='internal' /> <add name='c1' provider='file' file='{0}' /> <add name='c2' provider='file' file='{1}' /> </connections> <entities> <add name='name'> <output> <add name='o1' connection='c1' run-field='name' run-value='two' /> <add name='o2' connection='c2' run-field='id' run-operator='GreaterThan' run-type='int' run-value='1' /> </output> <fields> <add name='id' type='int' primary-key='true' /> <add name='name' /> </fields> </add> </entities> </add> </processes></tfl>", file1, file2).Replace('\'', '"'); var process = ProcessFactory.Create(xml, new TestLogger())[0]; process.Entities[0].InputOperation = input; var rows = process.Execute(); Assert.IsNotNull(rows); Assert.AreEqual(3, rows.Count()); const int header = 1; Assert.AreEqual(1, File.ReadAllLines(file1).Length - header); Assert.AreEqual(2, File.ReadAllLines(file2).Length - header); }
public void DateTimeRange() { var goodDate = new DateTime(2013, 6, 2); var badDate = new DateTime(2011, 1, 13); var startDate = new DateTime(2013, 1, 1, 0, 0, 0, 001); var endDate = new DateTime(2013, 12, 31, 23, 59, 59, 998); var input = new RowsBuilder() .Row("f1", goodDate) .Row("f1", badDate).ToOperation(); var dateTimeRange = new DateTimeRangeValidatorOperation("f1", "o1", startDate, RangeBoundaryType.Inclusive, endDate, RangeBoundaryType.Inclusive, false); var output = TestOperation(input, dateTimeRange); Assert.AreEqual(true, output[0]["o1"]); Assert.AreEqual(false, output[1]["o1"]); }
public void EqualsAValue() { var rows = new RowsBuilder() .Row("in", "789A") .Row("in", "x").ToOperation(); var parameters = new ParametersBuilder() .Parameter("other", new Parameter("other", "789A") { SimpleType = "string" }) .ToParameters(); var validator = new EqualsOperation("in", parameters); var output = TestOperation(rows, validator); Assert.AreEqual(true, output[0]["in"]); Assert.AreEqual(false, output[1]["in"]); }
public void DomainReturningIsValid() { var input = new RowsBuilder() .Row("in", 2) .Row("in", 4).ToOperation(); var xml = @" <cfg> <processes> <add name='process'> <connections> <add name='input' provider='internal' /> <add name='output' provider='internal' /> </connections> <entities> <add name='entity'> <fields> <add name='in' type='int' /> </fields> <calculated-fields> <add name='out' type='bool'> <transforms> <add method='domain' domain='1,2,3' parameter='in' /> </transforms> </add> </calculated-fields> </add> </entities> </add> </processes> </cfg> ".Replace('\'', '"'); var process = ProcessFactory.Create(xml, new TestLogger())[0]; process.Entities[0].InputOperation = input; var output = process.Execute().ToArray(); Assert.AreEqual(true, output[0]["out"]); Assert.AreEqual(false, output[1]["out"]); }