chore: initial git load of code space

This commit is contained in:
Thom Lamb
2026-05-12 08:52:33 -05:00
parent 9abada692f
commit 5e467bcc9c
384 changed files with 65960 additions and 2 deletions
@@ -0,0 +1,117 @@
using Strata.SqlTools.SqlBreakdown.Classes;
using Strata.SqlTools.SqlBreakdown.Expressions;
using Strata.SqlTools.SqlBreakdown.Expressions.Functions.Aggregate;
using Strata.SqlTools.SqlBreakdown.Expressions.Literals;
namespace Strata.SqlTools.SqlBreakdown.Tests.ExpressionTests;
[TestFixture]
public class ArithmeticExpressionTests : ExpressionTestsBase
{
private static IEnumerable<TestCaseData> ArithmeticExpressionTestCases()
{
var testCases = new[]
{
new ExpressionTestCase
{
Name = "WithSum_{m}",
Arrange = new Dictionary<string, Expression>
{
["revenue"] = new RegisteredTableColumnExpression(2, "NET_REVENUE", new RegisteredTableSource(101, "CLIENT_DSS", "DEPT", "PES")),
["cost"] = new RegisteredTableColumnExpression(3, "COST", new RegisteredTableSource(101, "CLIENT_DSS", "DEPT", "PES"))
},
Act = (columns, visitor) =>
{
var revenue = columns["revenue"];
var cost = columns["cost"];
var addExp = new SumFunction(revenue - cost - 1001);
return addExp.Accept(visitor);
},
Assertions = result =>
{
var sql = (string)result;
Assert.That(sql, Does.Contain("SUM"));
Assert.That(sql, Does.Contain("-"));
Assert.That(sql, Does.Contain("1001"));
Assert.That(sql, Is.EqualTo("SUM(PES.NET_REVENUE - PES.COST - 1001)"));
return true;
}
},
new ExpressionTestCase
{
Name = "Addition_{m}",
Arrange = new Dictionary<string, Expression>
{
["revenue"] = new RegisteredTableColumnExpression(2, "NET_REVENUE", new RegisteredTableSource(101, "CLIENT_DSS", "DEPT", "PES"))
},
Act = (columns, visitor) =>
{
var revenue = columns["revenue"];
var result = revenue + new NumberLiteralExpression(1000);
return result.Accept(visitor);
},
Assertions = result =>
{
var sql = (string)result;
Assert.That(sql, Does.Contain("NET_REVENUE"));
Assert.That(sql, Does.Contain("+"));
Assert.That(sql, Does.Contain("1000"));
return true;
}
},
new ExpressionTestCase
{
Name = "Multiplication_{m}",
Arrange = new Dictionary<string, Expression>
{
["cost"] = new RegisteredTableColumnExpression(3, "COST", new RegisteredTableSource(101, "CLIENT_DSS", "DEPT", "PES"))
},
Act = (columns, visitor) =>
{
var cost = columns["cost"];
var result = cost * new NumberLiteralExpression(1.5m);
return result.Accept(visitor);
},
Assertions = result =>
{
var sql = (string)result;
Assert.That(sql, Does.Contain("COST"));
Assert.That(sql, Does.Contain("*"));
Assert.That(sql, Does.Contain("1.5"));
return true;
}
},
new ExpressionTestCase
{
Name = "Division_{m}",
Arrange = new Dictionary<string, Expression>
{
["revenue"] = new RegisteredTableColumnExpression(2, "NET_REVENUE", new RegisteredTableSource(101, "CLIENT_DSS", "DEPT", "PES"))
},
Act = (columns, visitor) =>
{
var revenue = columns["revenue"];
var result = revenue / new NumberLiteralExpression(2);
return result.Accept(visitor);
},
Assertions = result =>
{
var sql = (string)result;
Assert.That(sql, Does.Contain("NET_REVENUE"));
Assert.That(sql, Does.Contain("/"));
Assert.That(sql, Does.Contain("2"));
return true;
}
}
};
foreach (var testCase in testCases)
{
yield return new TestCaseData(testCase).SetName(testCase.Name);
}
}
[TestCaseSource(nameof(ArithmeticExpressionTestCases))]
public void ArithmeticExpression_GeneratesCorrectSql(ExpressionTestCase testCase)
=> ExecuteExpressionTest(testCase);
}