using CodePlay.Core.Services; using CodePlay.Core.Common; using Xunit; namespace CodePlay.Tests.Services; public class UnconvertibleSyntaxHandlerTests { private readonly UnconvertibleSyntaxHandler _handler; public UnconvertibleSyntaxHandlerTests() { _handler = new UnconvertibleSyntaxHandler(); } [Fact] public void DetectUnconvertibleSyntax_AsyncAwait_ShouldDetect() { var code = @" public async Task GetDataAsync() { var result = await httpClient.GetStringAsync(url); return result; }"; var issues = _handler.DetectUnconvertibleSyntax(code, LanguageType.CSharp, LanguageType.Java); Assert.NotEmpty(issues); Assert.Contains(issues, i => i.OriginalCode.Contains("async")); Assert.Contains(issues, i => i.OriginalCode.Contains("await")); } [Fact] public void DetectUnconvertibleSyntax_LINQ_ShouldDetect() { var code = @" var result = source.Where(x => x > 0) .Select(x => x * 2) .ToList();"; var issues = _handler.DetectUnconvertibleSyntax(code, LanguageType.CSharp, LanguageType.Java); Assert.NotEmpty(issues); Assert.Contains(issues, i => i.Description.Contains("var") || i.Description.Contains("LINQ")); } [Fact] public void AssessFeasibility_NoIssues_ShouldReturnHighConfidence() { var code = @" public class Calculator { public int Add(int a, int b) { return a + b; } }"; var feasibility = _handler.AssessFeasibility(code, LanguageType.CSharp, LanguageType.Java); Assert.True(feasibility.IsFeasible); Assert.True(feasibility.ConfidenceScore > 80); } }