|
- package service
-
- import (
- "testing"
-
- "github.com/stretchr/testify/require"
- )
-
- func TestEstimateTokenClassifiesWordNumberAndUnicodeBoundaries(t *testing.T) {
- tests := []struct {
- name string
- text string
- want int
- }{
- {name: "empty", text: "", want: 0},
- {name: "latin word", text: "hello", want: 2},
- {name: "latin number transition", text: "v2", want: 3},
- {name: "cjk", text: "你", want: 1},
- {name: "emoji", text: "🙂", want: 3},
- {name: "url delimiter", text: "/", want: 1},
- }
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- require.Equal(t, tt.want, EstimateToken(OpenAI, tt.text))
- })
- }
- }
-
- func TestEstimateTokenByModelSelectsProviderAndEmptyInputIsFree(t *testing.T) {
- require.Equal(t, 0, EstimateTokenByModel("gpt-5", ""))
- require.Equal(t, EstimateToken(Gemini, "hello"), EstimateTokenByModel("GEMINI-2.5-PRO", "hello"))
- require.Equal(t, EstimateToken(Claude, "hello"), EstimateTokenByModel("claude-sonnet", "hello"))
- require.Equal(t, EstimateToken(OpenAI, "hello"), EstimateTokenByModel("other-model", "hello"))
- }
|