namespace QuanTAlib.Tests; public class SmaZeroDivTests { [Fact] public void Sma_Update_WithIsNewFalse_OnEmptyBuffer_DoesNotThrow() { var sma = new Sma(10); // Buffer is empty initially. // Calling Update with isNew=false should not cause division by zero. // It should return NaN or 0 or Last, but definitely not throw or return Infinity. var result = sma.Update(new TValue(DateTime.UtcNow, 100), isNew: false); // Since buffer count is 0, we expect NaN based on our fix. Assert.True(double.IsNaN(result.Value), $"Expected NaN but got {result.Value}"); } [Fact] public void Sma_Update_WithIsNewFalse_AfterReset_DoesNotThrow() { var sma = new Sma(10); sma.Update(new TValue(DateTime.UtcNow, 100)); sma.Reset(); // Buffer is empty after Reset. var result = sma.Update(new TValue(DateTime.UtcNow, 200), isNew: false); Assert.True(double.IsNaN(result.Value), $"Expected NaN but got {result.Value}"); } }