public void EvaluateBooleanParentheticalStatements() { Assert.IsTrue((bool)FSQLEngine.Create().Execute("{return TRUE AND (TRUE OR FALSE);}")); Assert.IsTrue((bool)FSQLEngine.Create().Execute("{return TRUE OR (TRUE AND FALSE);}")); Assert.IsFalse((bool)FSQLEngine.Create().Execute("{return TRUE AND (TRUE AND FALSE);}")); //Assert.IsFalse((bool)FSQLEngine.Create().Execute("return FALSE AND FALSE")); }
public void EvaluateOrderOfOperations() { Assert.AreEqual(0D, FSQLEngine.Create().Execute("{return 1+2-3;}")); Assert.AreEqual(2D, FSQLEngine.Create().Execute("{return 2*4-6;}")); Assert.AreEqual(-2D, FSQLEngine.Create().Execute("{return 6-4*2;}")); Assert.AreEqual(4D, FSQLEngine.Create().Execute("{return (6-4)*2;}")); }
public void TestOpenRowSet() { var ctx = FSQLEngine.Create().Debug(@" { MAP Release TO ""..\\Release"" WITH FILTER ""*.*""; MAP Debug To ""."" WITH FILTER ""*.*""; }"); Assert.IsNotNull(ctx); Assert.AreEqual(2, ctx.Aliases.Count()); var rel = ctx.GetAlias("Release"); var dbg = ctx.GetAlias("Debug"); var relTable = rel.Open(); var dbgTable = dbg.Open(); //relTable.GetData().WriteLine(); //dbgTable.GetData().WriteLine(); var results = relTable.Join( dbgTable, (l, r) => l.FileName == r.FileName, ScopedAttribute.Create(new[] { new[] { "Release", "FileName", "ReleaseFullName" }, new[] { "Release", "size", "ReleaseSize" }, new[] { "Debug", "size", "DebugSize" } }).ToArray() ); results.WriteLine(); }
public void TestSimulateDeleteFromStatement() { var script = @" { SIMULATE { DELETE FROM "".\\Folder2"" F2; } return SELECT * FROM F2; // Should see alias from query above. }"; var ctx = FSQLEngine.Create().Debug(script, xCtx => xCtx.TracingEnabled = true); //var expected = "TargetFile1.txt"; Assert.IsNotNull(ctx); if (ctx.TracingEnabled) { TestCtx.WriteLine(ctx.Dump(Priority.Verbose)); } var actual = ctx.ReturnValue as DataTable; Assert.IsNotNull(actual); actual.WriteLine(); Assert.AreEqual(3, actual.Rows.Count); }
public void TestJoinOperation() { var ctx = FSQLEngine.Create().Debug(@" { TRACE ON; MAP F1 TO "".\\Folder1""; MAP F2 To "".\\Folder2""; return SELECT F1.FileName, F2.Size as DebugSize, F1.Size AS F1Size FROM F1 JOIN F2 ON F1.FileName == F2.FileName AS CompareSizes ; }"); Assert.IsNotNull(ctx); var results = ctx.ReturnValue as DataTable; Assert.IsNotNull(results); results.WriteLine(); if (ctx.TracingEnabled) { TestCtx.WriteLine(ctx.Dump(Priority.Verbose)); } Assert.AreEqual(3, results.Columns.Count); }
public void TestSelectWithSpecificAttributesReorderingFields() { var expected = @"."; var ctx = FSQLEngine.Create().Debug(@" { MAP Bin To ""."" WITH FILTER ""*.dll""; @Results = SELECT Bin.Size AS FileLength, Created as CreatedOn, Bin.Updated AS LastModified, NameOnly, Extension as Ext FROM Bin; return @Results; }"); Assert.IsNotNull(ctx); var results = ctx.ReturnValue as DataTable; Assert.IsNotNull(results); Assert.AreEqual(1, ctx.Aliases.Count()); var bin = ctx.GetAlias("Bin"); Assert.AreEqual(expected, bin.Location); var binTable = bin.Open(); Assert.AreEqual(binTable.Rows.Count(), results.Rows.Count); results.WriteLine(); }
public void EvaluateBooleanAndStatements() { Assert.IsTrue((bool)FSQLEngine.Create().Execute("{return TRUE AND TRUE;}")); Assert.IsFalse((bool)FSQLEngine.Create().Execute("{return TRUE AND FALSE;}")); Assert.IsFalse((bool)FSQLEngine.Create().Execute("{return FALSE AND TRUE;}")); Assert.IsFalse((bool)FSQLEngine.Create().Execute("{return FALSE AND FALSE;}")); }
public void TestOutputToScreen() { var ctx = FSQLEngine.Create().Debug(@" { MAP Rel TO ""..\\Release""; MAP Dbg To "".""; @results = SELECT Rel.FileName as Name, Dbg.Size as Debug, Rel.Size AS Release FROM Rel JOIN Dbg ON Rel.FileName == Dbg.FileName AS CompareSizes OUTPUT TO SCREEN; return @results; }", execCtx => execCtx.TracingEnabled = true); Assert.IsNotNull(ctx); var results = ctx.ReturnValue as DataTable; Assert.IsNotNull(results); TestCtx.WriteLine(ctx.Dump(Priority.Verbose)); Assert.AreEqual(3, results.Columns.Count); }
public void TestJoinOperationUsingBin() { var ctx = FSQLEngine.Create().Debug(@" { MAP Rel TO ""..\\Release""; MAP Dbg To "".""; return SELECT Rel.FileName, Dbg.Size as DebugSize, Rel.Size AS ReleaseSize FROM Rel JOIN Dbg ON Rel.FileName == Dbg.FileName AS CompareSizes ; }"); Assert.IsNotNull(ctx); var results = ctx.ReturnValue as DataTable; Assert.IsNotNull(results); results.WriteLine(); TestCtx.WriteLine(ctx.Dump(Priority.Verbose)); Assert.AreEqual(3, results.Columns.Count); }
public void TestRecursiveFunction() { var script = @" { Trace On; Func Factorial(@num) { if (@num == 0) { @results = 1; } else { @prev = Factorial(@num-1); @results = @num * @prev; } return @results; } return Factorial(5); } "; var expected = 5 * 4 * 3 * 2; var ctx = FSQLEngine.Create().Debug(script); var actual = (int)ctx.ReturnValue; var dump = ctx.Dump(Priority.Verbose); TestCtx.WriteLine(dump.Replace("{", "{{").Replace("}", "}}")); Assert.AreEqual(expected, actual); }
public void TestSubquery() { var ctx = FSQLEngine.Create().Debug(@" { TRACE ON; MAP F1 TO "".\\Folder1""; MAP F2 To "".\\Folder2""; return SELECT F1.FileName as FolderOneOnly FROM F1 WHERE F1.FileName NOT IN (SELECT F2.FileName FROM F2) ; }"); //var expected = "TargetFile1"; Assert.IsNotNull(ctx); if (ctx.TracingEnabled) { TestCtx.WriteLine(ctx.Dump(Priority.Verbose)); } var actual = ctx.ReturnValue as DataTable; Assert.IsNotNull(actual); Console.WriteLine($"File in Folder 1 But not Folder 2:"); actual.WriteLine(); // Assert.AreEqual(expected, actual); }
public void TestPrivateVariables() { var script = @" { Trace On; @notExported = 65; func testExport() { @exported = 35; // This variable will be exported to the calling context. @notExported = 80; export @exported; return @notExported == 80; } @fnResults=testExport(); // Run the function. WriteLine(""@fnResults should be TRUE.""); return @notExported; } "; var expected = 65; var ctx = FSQLEngine.Create().Debug(script); var actual = ctx.ReturnValue; TestCtx.WriteLine(ctx.Dump(Priority.Verbose)); Assert.AreEqual(expected, actual); //TestCtx.WriteLine(ctx["fnresults"].ToString()); //TestCtx.WriteLine(ctx["fnresults"].GetType().Name); Assert.IsTrue((bool)ctx["fnresults"]); }
public void TestSimulateStatement() { var script = @" { @results = Simulate { @retValue = SELECT F1.FileName as F1Name, F2.FileName as F2Name, F1.CheckSum FROM "".\\Folder1"" F1 JOIN "".\\Folder2"" F2 ON ((F1.FileName == F2.FileName) AND NOT (F1.CheckSum == F2.CheckSum)); return @retValue; }; return @results; }"; var ctx = FSQLEngine.Create().Debug(script, xCtx => xCtx.TracingEnabled = true); //var expected = "TargetFile1.txt"; Assert.IsNotNull(ctx); if (ctx.TracingEnabled) { TestCtx.WriteLine(ctx.Dump(Priority.Verbose)); } var actual = ctx.ReturnValue as DataTable; Assert.IsNotNull(actual); Console.WriteLine($"File in Folder 1 With Size > 30 (Including Checksums):"); actual.WriteLine(); Assert.AreEqual(1, actual.Rows.Count); }
public void SelectWithInlineAlias() { var expected = @"."; var ctx = FSQLEngine.Create().Debug(@" { @Results = SELECT Bin.Size AS FileLength, NameOnly, Extension as Ext FROM ""."" Bin ; return @Results; }"); Assert.IsNotNull(ctx); var results = ctx.ReturnValue as DataTable; Assert.IsNotNull(results); Assert.AreEqual(1, ctx.Aliases.Count()); var bin = ctx.GetAlias("Bin"); Assert.AreEqual(expected, bin.Location); var binTable = bin.Open(); Assert.AreEqual(binTable.Rows.Count(), results.Rows.Count); results.WriteLine(); }
public void TestCoreDumpSystemFunction() { var script = @" { TRACE ON; @topLevelVariable = 5; FUNC myfunction() { FUNC subFunction() { return CoreDump(); } @tempvar = subFunction(); WriteLine(); WriteLine(""===========================""); WriteLine(@tempvar); WriteLine(""===========================""); WriteLine(); return @tempvar; } return myFunction(); } "; IExecutionContext ctx = null; object actual = null; try { ctx = FSQLEngine.Create().Debug(script); actual = ctx.ReturnValue; } finally { Console.WriteLine(ctx.Dump(Priority.Verbose)); //TestCtx.WriteLine(actual.ToString()); } }
public void SelectWithAlternateWildcard() { var expected = @"."; var ctx = FSQLEngine.Create().Debug(@" { TRACE ON; MAP Bin To ""."" WITH FILTER ""FSQL*.*""; @Results = SELECT Bin.Size AS FileLength, NameOnly, Extension as Ext FROM Bin; return @results; // Notice case insensitivity... }"); Assert.IsNotNull(ctx); var results = ctx.ReturnValue as DataTable; Assert.IsNotNull(results); Assert.AreEqual(3, results.Columns.Count); Assert.AreEqual(1, ctx.Aliases.Count()); var bin = ctx.GetAlias("Bin"); Assert.AreEqual(expected, bin.Location); var binTable = bin.Open(); Assert.AreEqual(binTable.Rows.Count(), results.Rows.Count); results.WriteLine(); TestContext.WriteLine(ctx.ToString()); }
public void TestJsonOutputToClipboard() { var ctx = FSQLEngine.Create().Debug(@" { MAP Rel TO ""..\\Release""; MAP Dbg To "".""; @results = SELECT Rel.FileName, Dbg.Size, Rel.Size AS ReleaseSize FROM Rel JOIN Dbg ON Rel.FileName == Dbg.FileName AND NOT (Rel.Size == Dbg.Size) AS CompareSizes FORMAT AS JSON OUTPUT TO CLIPBOARD; return @results; }"); Assert.IsNotNull(ctx); var results = ctx.ReturnValue as string; Assert.IsNotNull(results); Console.WriteLine(results); var clipString = System.Windows.Forms.Clipboard.GetText(); Assert.AreEqual(results, clipString); }
public void EvaluateStringConcat() { var source = "{ return \"Hello, \" + \"World!\";} "; const string expected = "Hello, World!"; var actual = FSQLEngine.Create().Execute(source); Assert.AreEqual(expected, actual); }
public void TestIntegerReturnStatement() { var expected = 31; var actual = FSQLEngine.Create().Execute("{ return 31; return 42; }"); Assert.AreEqual(expected, actual); expected = 78; actual = FSQLEngine.Create().Execute("{ return 78; return 61; }"); Assert.AreEqual(expected, actual); }
public void TestBooleanReturnStatement() { var expected = true; var actual = FSQLEngine.Create().Execute("{ return true; return false; }"); Assert.AreEqual(expected, actual); expected = false; actual = FSQLEngine.Create().Execute("{ return false; return true; }"); Assert.AreEqual(expected, actual); }
public void CalculateLeahsAge() { var expected = 13; var actual = FSQLEngine.Create().Execute(@" { @currentyear=2017; @leahwasbornin=2004; @leahsage=@currentyear-@leahwasbornin; return @leahsage; }"); Assert.AreEqual(expected, actual); }
public void TestMapToStatement() { var expected = @"K:\Source\Antlr\AntlrTutorial\FSQL"; var ctx = FSQLEngine.Create().Debug(@" { MAP Source TO ""K:\\Source\\Antlr\\AntlrTutorial\\FSQL""; MAP Bin To ""K:\\Source\\Antlr\\AntlrTutorial\\FSQL\\bin"" WITH FILTER ""*.dll""; }"); Assert.IsNotNull(ctx); Assert.AreEqual(2, ctx.Aliases.Count()); var actual = ctx.GetAlias("Source"); Assert.AreEqual(expected, actual.Location); }
public void SetAndRetrieveVariableViaScript() { var expected = 42; var actual = FSQLEngine.Create().Execute(@" { @answer=41; @answer=@answer+5; @answer=@answer-4; @answer=@answer*2; @answer=@answer/2; return @answer; }"); Assert.AreEqual(expected, actual); }
public void TestFunctionsAsParameters() { var script = @" { FUNC add(@left, @right) { @results = @left + @right; return @results; } return add(add(1,1), add(1,3)); } "; var actual = Convert.ToInt32(FSQLEngine.Create().Execute(script)); Assert.AreEqual(6, actual); Console.WriteLine(actual); }
public void TestWhileDoStatement() { var script = @" { @candy = -3; While (5 > @candy) { @candy = @candy + 1; } return @candy; } "; var expected = 5; var actual = FSQLEngine.Create().Execute(script); Assert.AreEqual(expected, actual); }
public void TestIfFalseWithoutElseStatement() { var script = @" { @candy = 45; if (false) { @candy = 80; } return @candy; } "; var expected = 45; var actual = FSQLEngine.Create().Execute(script); Assert.AreEqual(expected, actual); }
public void TestFunctionParameters() { var script = @" { FUNC add(@left, @right) { @results = @left + @right; return @results; } return add(2, 4); } "; var ctx = FSQLEngine.Create().Debug(script); var actual = Convert.ToInt32(ctx.ReturnValue); Console.WriteLine(ctx.Dump(Priority.Verbose)); Assert.AreEqual(6, actual); }
public void TestWriteToFileAndDeleteFile() { var ctx = FSQLEngine.Create().Debug(@" { TRACE ON; @testsPassed = 0; func Check(@cond) { if (@cond) { @testsPassed = @testsPassed + 1; } return @testsPassed; } @f1 = "".\\Folder1""; @f2 = "".\\Folder2""; @fName = ""F1.Files.Txt""; @targetFile = @f2 + ""\\"" + @fName; //Create File MAP F1 TO @f1; @files = SELECT F1.* FROM F1 FORMAT AS JSON OUTPUT TO FILE @targetFile; //Delete file MAP F2 TO @f2; @results = DELETE FROM F2 WHERE F2.FileName == @fName; @testsPassed = Check(@results == 1); return @testsPassed; }"); Assert.IsNotNull(ctx); if (ctx.TracingEnabled) { TestCtx.WriteLine(ctx.Dump(Priority.Verbose).Replace("{", "{{").Replace("}", "}}")); } var results = Convert.ToInt32(ctx.ReturnValue); Assert.AreEqual(1, results); Console.WriteLine(results.ToString()); }
public void TestIfTrueStatement() { var script = @" { @candy = 45; if (true) { @candy = 80; } else { @candy = 60; } return @candy; } "; var expected = 80; var actual = FSQLEngine.Create().Execute(script); Assert.AreEqual(expected, actual); }
public void SelectWithAlternateWildcardToCsv() { //var expected = @"."; var ctx = FSQLEngine.Create().Debug(@" { MAP Bin To ""."" WITH FILTER ""FSQL*.*""; @Results = SELECT Bin.Size AS FileLength, NameOnly, Extension as Ext FROM Bin FORMAT AS CSV; return @results; // Notice case insensitivity... }"); Assert.IsNotNull(ctx); var results = ctx.ReturnValue as string; Assert.IsNotNull(results); Console.WriteLine(results); }