feat: add independent platform modules and multi-provider storage

This commit is contained in:
2026-09-23 14:51:14 +08:00
parent f91034477b
commit 208a9c3fbd
57 changed files with 4890 additions and 48 deletions

View File

@@ -0,0 +1,30 @@
package pagination
import (
"encoding/json"
"math"
"net/url"
"strings"
"testing"
)
func TestBoundsAndEnvelope(t *testing.T) {
for _, raw := range []string{"page=0", "page=1&page=2", "pageSize=101", "page=9223372036854775807&pageSize=100", "pageSize=-1"} {
q, _ := url.ParseQuery(raw)
if _, err := Parse(q, Config{}); err == nil {
t.Fatal(raw)
}
}
r, err := Parse(url.Values{"page": {"2"}, "pageSize": {"30"}}, Config{})
if err != nil || r.Offset() != 30 {
t.Fatal(r, err)
}
result, err := NewResult(r, []string(nil), math.MaxInt64)
if err != nil || result.TotalPages != math.MaxInt64/30+1 {
t.Fatal(result, err)
}
raw, _ := json.Marshal(result)
if !strings.Contains(string(raw), `"items":[]`) || !strings.Contains(string(raw), `"pageSize":30`) {
t.Fatal(string(raw))
}
}