< Summary

Information
Class: Intentum.AI.TokenCost.MemoryTokenCostTracker
Assembly: Intentum.AI
File(s): /home/runner/work/Intentum/Intentum/src/Intentum.AI/TokenCost/MemoryTokenCostTracker.cs
Line coverage
100%
Covered lines: 22
Uncovered lines: 0
Coverable lines: 22
Total lines: 35
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.ctor()100%11100%
Track(...)100%11100%
GetTotal(...)100%44100%
Reset()100%11100%

File(s)

/home/runner/work/Intentum/Intentum/src/Intentum.AI/TokenCost/MemoryTokenCostTracker.cs

#LineLine coverage
 1namespace Intentum.AI.TokenCost;
 2
 3public sealed class MemoryTokenCostTracker : ITokenCostTracker
 4{
 45    private readonly List<TokenCost> _costs = new();
 46    private readonly object _lock = new();
 7
 8    public void Track(TokenCost cost)
 69    {
 610        lock (_lock)
 611            _costs.Add(cost);
 612    }
 13
 14    public TokenCost GetTotal(string? model = null)
 615    {
 616        lock (_lock)
 617        {
 618            var filtered = model != null
 419                ? _costs.Where(c => c.Model == model).ToList()
 620                : _costs;
 21
 622            return new TokenCost(
 623                model ?? "*",
 724                filtered.Sum(c => c.PromptTokens),
 725                filtered.Sum(c => c.CompletionTokens),
 1326                filtered.Sum(c => c.Cost));
 27        }
 628    }
 29
 30    public void Reset()
 131    {
 132        lock (_lock)
 133            _costs.Clear();
 134    }
 35}