chore: initial git load of code space
This commit is contained in:
@@ -0,0 +1,357 @@
|
||||
using Strata.SqlTools.Statements.PostgreSql;
|
||||
|
||||
namespace Strata.SqlTools.SqlBreakdown.Tests.PostgreSql;
|
||||
|
||||
[TestFixture]
|
||||
public class StatementExpressionParserTests
|
||||
{
|
||||
[Test]
|
||||
public void Parse_NumberExpression_ReturnNum()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "42";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_NegativeNumber_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "-42";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_DecimalNumber_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "3.14159";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_StringExpression_ReturnsString()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "'hello world'";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_StringWithEscapedQuotes_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "'it''s working'"; // PostgreSQL escape style
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_ColumnIdentifier_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "user_id";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_QuotedIdentifier_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "\"UserId\"";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_ColumnWithTablePrefix_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "users.id";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_QuotedColumnWithTablePrefix_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "\"Users\".\"Id\"";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_SimpleAddition_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "42 + 8";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_SimpleSubtraction_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "42 - 8";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_SimpleMultiplication_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "42 * 8";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_SimpleDivision_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "42 / 8";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_ComplexArithmeticExpression_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "(42 + 8) * (10 - 2) / 4";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_FunctionCall_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "COUNT(id)";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_CountExpression_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "COUNT(*)";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_SumExpression_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "SUM(amount)";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_CaseInsensitiveFunctionName_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "sum(amount)";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_FunctionWithMultipleArguments_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "SUBSTRING(name, 1, 10)";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_NestedFunctionCalls_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "UPPER(SUBSTRING(name, 1, 10))";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_ColumnWithAlias_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "COUNT(id) AS total_count";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_CaseExpression_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "CASE WHEN status = 'active' THEN 1 ELSE 0 END";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_PostgreSqlPositionalParameter_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "$1";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_NamedParameter_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = "@userId";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Parse_ColonNamedParameter_Succeeds()
|
||||
{
|
||||
// Arrange
|
||||
var parser = new StatementExpressionParser();
|
||||
var sql = ":userId";
|
||||
|
||||
// Act
|
||||
var result = parser.Parse(sql);
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.Not.Null);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user