package entity import ( "bytes" "image/png" "strings" "testing" ) func TestLetterAvatarPNG(t *testing.T) { raw, err := LetterAvatarPNG("test01") if err != nil || len(raw) == 0 { t.Fatalf("%v %d", err, len(raw)) } img, err := png.Decode(bytes.NewReader(raw)) if err != nil { t.Fatal(err) } if img.Bounds().Dx() != avatarSize || img.Bounds().Dy() != avatarSize { t.Fatalf("size %+v", img.Bounds()) } again, err := LetterAvatarPNG("test01") if err != nil || !bytes.Equal(raw, again) { t.Fatal("not stable") } other, err := LetterAvatarPNG("ada") if err != nil || bytes.Equal(raw, other) { t.Fatal("same png for different names") } cjk, err := LetterAvatarPNG("张三") if err != nil { t.Fatal(err) } if _, err := png.Decode(bytes.NewReader(cjk)); err != nil { t.Fatal(err) } } func TestAvatarLetter(t *testing.T) { if got := AvatarLetter("test01"); got != "T" { t.Fatalf("got %q", got) } if got := AvatarLetter(" ada"); got != "A" { t.Fatalf("got %q", got) } if got := AvatarLetter(""); got != "?" { t.Fatalf("empty %q", got) } if got := AvatarLetter("张三"); got != "" { t.Fatalf("cjk %q", got) } } func TestLetterAvatarDataURIFitsColumn(t *testing.T) { for _, name := range []string{"test01", "ada", "张三", ""} { got := LetterAvatarDataURI(name) if !strings.HasPrefix(got, avatarDataURIPrefix) { t.Fatalf("%q prefix %s", name, got) } if len(got) == 0 || len(got) > 512 { t.Fatalf("%q len %d", name, len(got)) } } a, b := LetterAvatarDataURI("test01"), LetterAvatarDataURI("ada") if a == b { t.Fatal("same uri") } }