releases/tests/Paca.Tests/App/QuickActionInlineEvaluatorGateTests.cs

62 lines
2.2 KiB
C#

using System;
using Paca.Core.QuickActions;
using Xunit;
namespace Paca.Tests.App;
public class QuickActionInlineEvaluatorGateTests
{
private readonly QuickActionInlineEvaluator _evaluator = new();
[Theory]
[InlineData("12 + 34", "46")]
[InlineData("100 * 5", "500")]
[InlineData("2 ^ 10", "1024")]
[InlineData("sqrt(144)", "12")]
[InlineData("= 25 * 4", "100")]
[InlineData("1000 - 350", "650")]
[InlineData("10 / 4", "2.5")]
public void Gate_QuickActionEvaluator_MathExpressions_CalculatesCorrectly(string input, string expectedResult)
{
bool evaluated = _evaluator.TryEvaluate(input, out var result);
Assert.True(evaluated, $"수식 '{input}'이 정상적으로 평가되어야 합니다.");
Assert.NotNull(result);
Assert.Equal(expectedResult, result.Value);
}
[Fact]
public void Gate_QuickActionEvaluator_DevConversions_Base64AndHexAndTimestamp()
{
// 1. Base64 encode / decode
bool b64Enc = _evaluator.TryEvaluate("b64 PACA Super App", out var resEnc);
Assert.True(b64Enc);
Assert.Equal("UEFDQSBTdXBlciBBcHA=", resEnc!.Value);
bool b64Dec = _evaluator.TryEvaluate("b64d UEFDQSBTdXBlciBBcHA=", out var resDec);
Assert.True(b64Dec);
Assert.Equal("PACA Super App", resDec!.Value);
// 2. Hex to RGB
bool hexRgb = _evaluator.TryEvaluate("hex #3b82f6", out var resRgb);
Assert.True(hexRgb);
Assert.Equal("rgb(59, 130, 246)", resRgb!.Value);
// 3. Timestamp now
bool ts = _evaluator.TryEvaluate("time now", out var resTs);
Assert.True(ts);
Assert.True(long.TryParse(resTs!.Value, out var val) && val > 1700000000);
}
[Theory]
[InlineData("10 km to mile", "6.21")]
[InlineData("100 kg to lb", "220.46")]
[InlineData("30 c to f", "86")]
[InlineData("1024 mb to gb", "1")]
public void Gate_QuickActionEvaluator_UnitConversions(string input, string expectedValuePrefix)
{
bool evaluated = _evaluator.TryEvaluate(input, out var result);
Assert.True(evaluated, $"단위 변환 '{input}'이 평가되어야 합니다.");
Assert.NotNull(result);
Assert.StartsWith(expectedValuePrefix, result.Value);
}
}