photoprism/pkg/pluscode/pluscode_test.go

110 lines
2.2 KiB
Go

package pluscode
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestEncode(t *testing.T) {
t.Run("germany", func(t *testing.T) {
plusCode := Encode(48.56344833333333, 8.996878333333333)
expected := "8FWCHX7W+"
assert.Equal(t, expected, plusCode)
})
t.Run("lat_overflow", func(t *testing.T) {
plusCode := Encode(548.56344833333333, 8.996878333333333)
assert.Equal(t, "", plusCode)
})
t.Run("lng_overflow", func(t *testing.T) {
plusCode := Encode(48.56344833333333, 258.996878333333333)
assert.Equal(t, "", plusCode)
})
}
func TestEncodeLength(t *testing.T) {
t.Run("germany_9", func(t *testing.T) {
plusCode, err := EncodeLength(48.56344833333333, 8.996878333333333, 9)
if err != nil {
t.Fatal(err)
}
expected := "8FWCHX7W+9Q"
assert.Equal(t, expected, plusCode)
})
t.Run("germany_8", func(t *testing.T) {
plusCode, err := EncodeLength(48.56344833333333, 8.996878333333333, 8)
if err != nil {
t.Fatal(err)
}
expected := "8FWCHX7W+"
assert.Equal(t, expected, plusCode)
})
t.Run("germany_7", func(t *testing.T) {
plusCode, err := EncodeLength(48.56344833333333, 8.996878333333333, 7)
if err != nil {
t.Fatal(err)
}
expected := "8FWCHX7W+"
assert.Equal(t, expected, plusCode)
})
t.Run("germany_6", func(t *testing.T) {
plusCode, err := EncodeLength(48.56344833333333, 8.996878333333333, 6)
if err != nil {
t.Fatal(err)
}
expected := "8FWCHX00+"
assert.Equal(t, expected, plusCode)
})
t.Run("lat_overflow", func(t *testing.T) {
plusCode, err := EncodeLength(548.56344833333333, 8.996878333333333, 7)
if err == nil {
t.Fatal("encode should return error")
}
assert.Equal(t, "", plusCode)
})
t.Run("lng_overflow", func(t *testing.T) {
plusCode, err := EncodeLength(48.56344833333333, 258.996878333333333, 7)
if err == nil {
t.Fatal("encode should return error")
}
assert.Equal(t, "", plusCode)
})
}
func TestS2(t *testing.T) {
t.Run("germany", func(t *testing.T) {
token := S2("8FWCHX7W+")
assert.Equal(t, "4799e3772d14", token)
})
t.Run("empty code", func(t *testing.T) {
token := S2("")
assert.Equal(t, "", token)
})
t.Run("invalid code", func(t *testing.T) {
token := S2("xxx")
assert.Equal(t, "", token)
})
}