You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

31 lines
999 B

  1. package service
  2. import (
  3. "net/http/httptest"
  4. "testing"
  5. "github.com/QuantumNous/new-api/common"
  6. "github.com/QuantumNous/new-api/constant"
  7. "github.com/QuantumNous/new-api/dto"
  8. "github.com/gin-gonic/gin"
  9. "github.com/stretchr/testify/require"
  10. )
  11. func TestResponseText2UsageSetsLocalCountFlagAndTotals(t *testing.T) {
  12. ctx, _ := gin.CreateTestContext(httptest.NewRecorder())
  13. usage := ResponseText2Usage(ctx, "hello", "gpt-5", 3)
  14. require.Equal(t, 3, usage.PromptTokens)
  15. require.Equal(t, EstimateTokenByModel("gpt-5", "hello"), usage.CompletionTokens)
  16. require.Equal(t, usage.PromptTokens+usage.CompletionTokens, usage.TotalTokens)
  17. require.True(t, common.GetContextKeyBool(ctx, constant.ContextKeyLocalCountTokens))
  18. }
  19. func TestValidUsageRequiresAtLeastOneNonZeroTokenCount(t *testing.T) {
  20. require.False(t, ValidUsage(nil))
  21. require.False(t, ValidUsage(&dto.Usage{}))
  22. require.True(t, ValidUsage(&dto.Usage{PromptTokens: 1}))
  23. require.True(t, ValidUsage(&dto.Usage{CompletionTokens: 1}))
  24. }