Initial commit

This commit is contained in:
2026-01-19 01:51:08 +02:00
commit 2dbb7e5d7e
18 changed files with 1475 additions and 0 deletions

67
furcadia/util_test.go Normal file
View File

@@ -0,0 +1,67 @@
package furcadia
import (
"errors"
"testing"
)
func TestGetShortName(t *testing.T) {
check := func(displayName, expectedShortname string) {
short := GetShortName(displayName)
if short != expectedShortname {
t.Errorf("GetShortName('%v') -> '%v' (expected: '%v')", displayName, short, expectedShortname)
}
}
check("ArTeX", "artex")
check("Ice|Dragon", "icedragon")
check("123_arte_X", "123artex")
check("|~!@#$%^&*()_+<>[]{}:;'\",./?artex ", "artex")
}
func TestGetShortDreamURL(t *testing.T) {
check := func(dreamURL, expectedShortURL string) {
short, err := GetShortDreamURL(dreamURL)
if err != nil {
t.Errorf("GetShortDreamURL('%v') -> unexpected error %T (%v)", dreamURL, err, err)
}
if short != expectedShortURL {
t.Errorf("GetShortDreamURL('%v') -> '%v' (expected: '%v')", dreamURL, short, expectedShortURL)
}
}
check("furc://ice_dragon:some-dream-name/128", "icedragon:somedreamname")
check("furc://artex", "artex")
check("furc://artex:", "artex")
check("furc://artex/128", "artex")
check("furc://name:", "name")
checkErr := func(dreamURL string, expectedErr error) {
_, err := GetShortDreamURL(dreamURL)
if !errors.Is(err, expectedErr) {
t.Errorf("GetShortDreamURL('%v') -> unexpected error %T (%v)", dreamURL, err, err)
}
}
checkErr("furc://", ErrInvalidDreamURL)
checkErr("furc:///", ErrInvalidDreamURL)
checkErr("furc://:", ErrInvalidDreamURL)
checkErr("furc://:/", ErrInvalidDreamURL)
checkErr("furc://:nouploader", ErrInvalidDreamURL)
checkErr("furc://:nouploader/", ErrInvalidDreamURL)
checkErr("furc://artex::", ErrInvalidDreamURL)
}
func TestGetShortDreamURLFromName(t *testing.T) {
check := func(uploader, name, expected string) {
short := GetShortDreamURLFromName(uploader, name)
if short != expected {
t.Errorf("GetShortDreamURLFromName('%v', '%v') -> '%v' (expected: '%v')", uploader, name, short, expected)
}
}
check("Ice Dragon", "", "icedragon")
check("Ice Dragon", "Some name here", "icedragon:somenamehere")
check("icedragon", "some_name_here", "icedragon:somenamehere")
check("", "Illegal but possible", ":illegalbutpossible")
}