Skip to content

Commit

Permalink
Merge branch 'master' into feature/dotnet_core_8
Browse files Browse the repository at this point in the history
  • Loading branch information
Puchaczov authored Jun 8, 2024
2 parents 5a0c78c + 1af7548 commit 3c76447
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 6 deletions.
50 changes: 50 additions & 0 deletions Musoq.Parser.Tests/NodesTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Musoq.Parser.Nodes;

namespace Musoq.Parser.Tests;

[TestClass]
public class NodesTests
{
[TestMethod]
public void WhenOrderByNode_ShouldReturnString()
{
var node = new OrderByNode(new []{
new FieldOrderedNode(new AccessColumnNode("col1", string.Empty, TextSpan.Empty), 0, null, Order.Ascending)
});

Assert.AreEqual("order by col1 ascending", node.ToString());
}

[TestMethod]
public void WhenOrderByDescendingNode_ShouldReturnString()
{
var node = new OrderByNode(new []{
new FieldOrderedNode(new AccessColumnNode("col1", string.Empty, TextSpan.Empty), 0, null, Order.Descending)
});

Assert.AreEqual("order by col1 descending", node.ToString());
}

[TestMethod]
public void WhenOrderByMultipleNodes_ShouldReturnString()
{
var node = new OrderByNode(new[]{
new FieldOrderedNode(new AccessColumnNode("col1", string.Empty, TextSpan.Empty), 0, null, Order.Ascending),
new FieldOrderedNode(new AccessColumnNode("col2", string.Empty, TextSpan.Empty), 1, null, Order.Ascending)
});

Assert.AreEqual("order by col1 ascending, col2 ascending", node.ToString());
}

[TestMethod]
public void WhenOrderByMultipleNodesWithDifferentOrder_ShouldReturnString()
{
var node = new OrderByNode(new []{
new FieldOrderedNode(new AccessColumnNode("col1", string.Empty, TextSpan.Empty), 0, null, Order.Ascending),
new FieldOrderedNode(new AccessColumnNode("col2", string.Empty, TextSpan.Empty), 1, null, Order.Descending)
});

Assert.AreEqual("order by col1 ascending, col2 descending", node.ToString());
}
}
2 changes: 1 addition & 1 deletion Musoq.Parser/Nodes/FieldNode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ public class FieldNode : Node

public FieldNode(Node expression, int fieldOrder, string fieldName)
{
_fieldName = fieldName;
Expression = expression;
FieldOrder = fieldOrder;
_fieldName = fieldName;
Id = $"{nameof(FieldNode)}{expression.Id}";
}

Expand Down
13 changes: 11 additions & 2 deletions Musoq.Parser/Nodes/FieldOrderedNode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,23 @@
{
public class FieldOrderedNode : FieldNode
{
public FieldOrderedNode(Node expression, int fieldOrder, string fieldName, Order order)
: base(expression, fieldOrder, fieldName) => Order = order;
public FieldOrderedNode(Node expression, int fieldOrder, string fieldName, Order order) : base(expression, fieldOrder, fieldName)
{
Order = order;
}

public Order Order { get; }

public override void Accept(IExpressionVisitor visitor)
{
visitor.Visit(this);
}

public override string Id => $"{nameof(FieldOrderedNode)}{Expression.Id}{Order}";

public override string ToString()
{
return $"{Expression.ToString()} {Order.ToString().ToLowerInvariant()}";
}
}
}
6 changes: 3 additions & 3 deletions Musoq.Parser/Nodes/OrderByNode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public OrderByNode(FieldOrderedNode[] fields)

public FieldOrderedNode[] Fields { get; }

public override Type ReturnType { get; }
public override Type ReturnType { get; } = typeof(void);

public override string Id { get; }

Expand All @@ -31,9 +31,9 @@ public override string ToString()
return $"order by {fieldsTxt}";
}

private string FieldToString(FieldNode node)
private static string FieldToString(FieldOrderedNode node)
{
return string.IsNullOrEmpty(node.FieldName) ? node.Expression.ToString() : node.FieldName;
return node.ToString();
}
}
}

0 comments on commit 3c76447

Please sign in to comment.