123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package qwen2vl
- import (
- "bytes"
- "image"
- "image/png"
- "testing"
- )
- func TestSmartResize(t *testing.T) {
- type smartResizeCase struct {
- TestImage image.Image
- Expected image.Point
- }
- cases := []smartResizeCase{
- {
- TestImage: image.NewRGBA(image.Rect(0, 0, 1024, 1024)),
- Expected: image.Point{980, 980},
- },
- {
- TestImage: image.NewRGBA(image.Rect(0, 0, 1024, 768)),
- Expected: image.Point{1036, 756},
- },
- {
- TestImage: image.NewRGBA(image.Rect(0, 0, 2000, 2000)),
- Expected: image.Point{980, 980},
- },
- }
- for _, c := range cases {
- b := c.TestImage.Bounds().Max
- actual := smartResize(b, DefaultFactor, DefaultMinPixels, DefaultMaxPixels)
- if actual != c.Expected {
- t.Errorf("expected: %v, actual: %v", c.Expected, actual)
- }
- }
- }
- func TestPreprocess(t *testing.T) {
- type preprocessCase struct {
- TestImage image.Image
- ExpectedLen int
- }
- cases := []preprocessCase{
- {
- TestImage: image.NewRGBA(image.Rect(0, 0, 256, 256)),
- ExpectedLen: 252 * 252 * 3 * 1,
- },
- {
- TestImage: image.NewRGBA(image.Rect(0, 0, 2000, 2000)),
- ExpectedLen: 980 * 980 * 3 * 1,
- },
- }
- for _, c := range cases {
- var buf bytes.Buffer
- err := png.Encode(&buf, c.TestImage)
- if err != nil {
- t.Fatal(err)
- }
- imgData, _, err := Preprocess(&buf)
- if err != nil {
- t.Fatalf("error processing: %q", err)
- }
- switch len(imgData) {
- case 0:
- t.Errorf("no image data returned")
- case c.ExpectedLen:
- // ok
- default:
- t.Errorf("unexpected image data length: %d, expected: %d", len(imgData), c.ExpectedLen)
- }
- }
- }
|