159 lines
4.9 KiB
C#
159 lines
4.9 KiB
C#
using Strata.SqlTools.SqlBreakdown.Expressions;
|
|
using Strata.SqlTools.SqlBreakdown.Expressions.Conditional.Logical;
|
|
using Strata.SqlTools.SqlBreakdown.Expressions.Literals;
|
|
using Strata.SqlTools.Markdown.Expressions;
|
|
|
|
namespace Strata.SqlTools.Markdown.Tests.Expressions;
|
|
|
|
[TestFixture]
|
|
public class SimpleExpressionGeneratorTests
|
|
{
|
|
private SimpleExpressionGenerator _generator = null!;
|
|
|
|
[SetUp]
|
|
public void Setup()
|
|
{
|
|
_generator = new SimpleExpressionGenerator();
|
|
}
|
|
|
|
[Test]
|
|
public void GenerateMarkdown_WithSimpleExpression_GeneratesSimpleDoc()
|
|
{
|
|
// Arrange
|
|
var expression = new NumberLiteralExpression(42);
|
|
|
|
// Act
|
|
var result = _generator.GenerateMarkdown(expression);
|
|
|
|
// Assert
|
|
Assert.That(result, Does.Contain("## Expression"));
|
|
Assert.That(result, Does.Contain("## Type Information"));
|
|
Assert.That(result, Does.Contain("## Description"));
|
|
Assert.That(result, Does.Contain("```sql"));
|
|
}
|
|
|
|
[Test]
|
|
public void GenerateMarkdown_WithTitle_IncludesTitle()
|
|
{
|
|
// Arrange
|
|
var expression = new StringLiteralExpression("test");
|
|
|
|
// Act
|
|
var result = _generator.GenerateMarkdown(expression, "Simple Expression");
|
|
|
|
// Assert
|
|
Assert.That(result, Does.StartWith("# Simple Expression"));
|
|
}
|
|
|
|
[Test]
|
|
public void GenerateMarkdown_IncludesDescription()
|
|
{
|
|
// Arrange
|
|
Expression left = new NumberLiteralExpression(100);
|
|
Expression right = new NumberLiteralExpression(50);
|
|
var expression = left == right;
|
|
|
|
// Act
|
|
var result = _generator.GenerateMarkdown(expression);
|
|
|
|
// Assert
|
|
Assert.That(result, Does.Contain("EqualToExpression"));
|
|
Assert.That(result, Does.Contain("expression"));
|
|
}
|
|
|
|
[Test]
|
|
public void GenerateComparisonTable_WithMultipleExpressions_GeneratesTable()
|
|
{
|
|
// Arrange
|
|
var expressions = new Dictionary<string, Expression>
|
|
{
|
|
["Price Filter"] = new NumberLiteralExpression(100) > new NumberLiteralExpression(50),
|
|
["Status Filter"] = new StringLiteralExpression("Active") == new StringLiteralExpression("Active"),
|
|
["Quantity Check"] = new NumberLiteralExpression(10) <= new NumberLiteralExpression(100)
|
|
};
|
|
|
|
// Act
|
|
var result = _generator.GenerateComparisonTable(expressions);
|
|
|
|
// Assert
|
|
Assert.That(result, Does.Contain("| Name | Expression | Type |"));
|
|
Assert.That(result, Does.Contain("|------|------------|------|"));
|
|
Assert.That(result, Does.Contain("Price Filter"));
|
|
Assert.That(result, Does.Contain("Status Filter"));
|
|
Assert.That(result, Does.Contain("Quantity Check"));
|
|
}
|
|
|
|
[Test]
|
|
public void GenerateComparisonTable_WithTitle_IncludesTitle()
|
|
{
|
|
// Arrange
|
|
var expressions = new Dictionary<string, Expression>
|
|
{
|
|
["Test"] = new NumberLiteralExpression(1)
|
|
};
|
|
|
|
// Act
|
|
var result = _generator.GenerateComparisonTable(expressions, "Comparison Table");
|
|
|
|
// Assert
|
|
Assert.That(result, Does.StartWith("# Comparison Table"));
|
|
}
|
|
|
|
[Test]
|
|
public void GenerateBulletList_WithExpressions_GeneratesList()
|
|
{
|
|
// Arrange
|
|
var expressions = new List<Expression>
|
|
{
|
|
new NumberLiteralExpression(100),
|
|
new StringLiteralExpression("Active"),
|
|
new NumberLiteralExpression(5) + new NumberLiteralExpression(10)
|
|
};
|
|
|
|
// Act
|
|
var result = _generator.GenerateBulletList(expressions);
|
|
|
|
// Assert
|
|
Assert.That(result, Does.Contain("- `100`"));
|
|
Assert.That(result, Does.Contain("- `'Active'`"));
|
|
Assert.That(result, Does.Contain("- `"));
|
|
Assert.That(result, Does.Contain("*NumberLiteralExpression*"));
|
|
}
|
|
|
|
[Test]
|
|
public void GenerateBulletList_WithTitle_IncludesTitle()
|
|
{
|
|
// Arrange
|
|
var expressions = new List<Expression>
|
|
{
|
|
new NumberLiteralExpression(1)
|
|
};
|
|
|
|
// Act
|
|
var result = _generator.GenerateBulletList(expressions, "Expression List");
|
|
|
|
// Assert
|
|
Assert.That(result, Does.StartWith("## Expression List"));
|
|
}
|
|
|
|
[Test]
|
|
public void GenerateComparisonTable_WithOrExpression_GeneratesTable()
|
|
{
|
|
// Arrange
|
|
var expr1 = new NumberLiteralExpression(1) > new NumberLiteralExpression(0);
|
|
var expr2 = new NumberLiteralExpression(2) > new NumberLiteralExpression(0);
|
|
var expressions = new Dictionary<string, Expression>
|
|
{
|
|
["Test"] = new OrExpression(expr1, expr2)
|
|
};
|
|
|
|
// Act
|
|
var result = _generator.GenerateComparisonTable(expressions);
|
|
|
|
// Assert
|
|
Assert.That(result, Does.Contain("Test"));
|
|
Assert.That(result, Does.Contain("OrExpression"));
|
|
Assert.That(result, Does.Contain("OR"));
|
|
}
|
|
}
|