Files
QuantEngineByItz/src/dotnet/QuantEngine.Core.Tests/BffApiTests.cs
T

63 lines
1.8 KiB
C#

using System;
using System.IO;
using System.Text;
using System.Text.Json;
using Xunit;
namespace QuantEngine.Core.Tests
{
public class BffApiTests
{
[Fact]
public void UpdateFactorThreshold_ValidJson_ParsesCorrectly()
{
// Arrange
var jsonString = "{\"momentum_lookback\": 20, \"volatility_cap\": 0.05}";
// Act
using var doc = JsonDocument.Parse(jsonString);
var root = doc.RootElement;
var lookback = root.GetProperty("momentum_lookback").GetInt32();
var cap = root.GetProperty("volatility_cap").GetDouble();
// Assert
Assert.Equal(20, lookback);
Assert.Equal(0.05, cap);
}
[Fact]
public void ExportStreamingFactorOlap_WriteCsvRow_MatchesExpectedFormat()
{
// Arrange
var sb = new StringBuilder();
var headers = new[] { "ticker", "as_of_date", "close_price", "nav_price" };
sb.AppendLine(string.Join(",", headers));
var row = new object[] { "123456", "2026-07-25", 50000, 49800 };
sb.AppendLine(string.Join(",", row));
// Act
var output = sb.ToString();
// Assert
Assert.Contains("ticker,as_of_date,close_price,nav_price", output);
Assert.Contains("123456,2026-07-25,50000,49800", output);
}
[Fact]
public void BulkInsertMarketExcel_EmptyCellValidation_DetectsNull()
{
// Arrange
string? ticker = null;
double? price = null;
// Act
bool isInvalid = string.IsNullOrEmpty(ticker) || !price.HasValue;
// Assert
Assert.True(isInvalid);
}
}
}