2019-12-04 15:28:45 +00:00
|
|
|
package activitypub
|
|
|
|
|
|
|
|
import (
|
2021-12-30 13:40:07 +00:00
|
|
|
"bytes"
|
|
|
|
"encoding/gob"
|
2019-12-04 15:28:45 +00:00
|
|
|
"fmt"
|
2021-12-30 13:40:07 +00:00
|
|
|
"reflect"
|
2019-12-04 15:28:45 +00:00
|
|
|
"strconv"
|
|
|
|
"testing"
|
2021-12-30 13:40:07 +00:00
|
|
|
|
|
|
|
json "github.com/go-ap/jsonld"
|
2019-12-04 15:28:45 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestNaturalLanguageValue_MarshalJSON(t *testing.T) {
|
|
|
|
p := NaturalLanguageValues{
|
|
|
|
{
|
2020-08-27 14:59:27 +00:00
|
|
|
"en", Content("the test"),
|
2019-12-04 15:28:45 +00:00
|
|
|
},
|
|
|
|
{
|
2020-08-27 14:59:27 +00:00
|
|
|
"fr", Content("le test"),
|
2019-12-04 15:28:45 +00:00
|
|
|
},
|
|
|
|
}
|
|
|
|
js := "{\"en\":\"the test\",\"fr\":\"le test\"}"
|
|
|
|
out, err := p.MarshalJSON()
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Error: '%s'", err)
|
|
|
|
}
|
|
|
|
if js != string(out) {
|
|
|
|
t.Errorf("Different marshal result '%s', instead of '%s'", out, js)
|
|
|
|
}
|
|
|
|
p1 := NaturalLanguageValues{
|
|
|
|
{
|
2020-08-27 14:59:27 +00:00
|
|
|
"en", Content("the test"),
|
2019-12-04 15:28:45 +00:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
out1, err1 := p1.MarshalJSON()
|
|
|
|
|
|
|
|
if err1 != nil {
|
|
|
|
t.Errorf("Error: '%s'", err1)
|
|
|
|
}
|
2019-12-18 09:02:23 +00:00
|
|
|
txt := `"the test"`
|
2019-12-04 15:28:45 +00:00
|
|
|
if txt != string(out1) {
|
|
|
|
t.Errorf("Different marshal result '%s', instead of '%s'", out1, txt)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestLangRefValue_MarshalJSON(t *testing.T) {
|
|
|
|
{
|
|
|
|
tst := LangRefValue{
|
|
|
|
Ref: NilLangRef,
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test"),
|
2019-12-04 15:28:45 +00:00
|
|
|
}
|
|
|
|
j, err := tst.MarshalJSON()
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Error: %s", err)
|
|
|
|
}
|
|
|
|
expected := `"test"`
|
|
|
|
if string(j) != expected {
|
|
|
|
t.Errorf("Different marshal result '%s', expected '%s'", j, expected)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
tst := LangRefValue{
|
|
|
|
Ref: "en",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test"),
|
2019-12-04 15:28:45 +00:00
|
|
|
}
|
|
|
|
j, err := tst.MarshalJSON()
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Error: %s", err)
|
|
|
|
}
|
|
|
|
expected := `"en":"test"`
|
|
|
|
if string(j) != expected {
|
|
|
|
t.Errorf("Different marshal result '%s', expected '%s'", j, expected)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
tst := LangRefValue{
|
|
|
|
Ref: "en",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test\nwith characters\tneeding escaping\r\n"),
|
2019-12-04 15:28:45 +00:00
|
|
|
}
|
|
|
|
j, err := tst.MarshalJSON()
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Error: %s", err)
|
|
|
|
}
|
|
|
|
expected := `"en":"test\nwith characters\tneeding escaping\r\n"`
|
|
|
|
if string(j) != expected {
|
|
|
|
t.Errorf("Different marshal result '%s', expected '%s'", j, expected)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestLangRefValue_MarshalText(t *testing.T) {
|
|
|
|
{
|
|
|
|
tst := LangRefValue{
|
|
|
|
Ref: NilLangRef,
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test"),
|
2019-12-04 15:28:45 +00:00
|
|
|
}
|
|
|
|
j, err := tst.MarshalText()
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Error: %s", err)
|
|
|
|
}
|
|
|
|
expected := "test"
|
|
|
|
if string(j) != expected {
|
|
|
|
t.Errorf("Different marshal result '%s', expected '%s'", j, expected)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
tst := LangRefValue{
|
|
|
|
Ref: "en",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test"),
|
2019-12-04 15:28:45 +00:00
|
|
|
}
|
|
|
|
j, err := tst.MarshalText()
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Error: %s", err)
|
|
|
|
}
|
|
|
|
expected := "test[en]"
|
|
|
|
if string(j) != expected {
|
|
|
|
t.Errorf("Different marshal result '%s', expected '%s'", j, expected)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValue_Get(t *testing.T) {
|
2020-08-26 16:50:27 +00:00
|
|
|
testVal := Content("test")
|
2019-12-04 15:28:45 +00:00
|
|
|
a := NaturalLanguageValues{{NilLangRef, testVal}}
|
2020-08-27 14:59:27 +00:00
|
|
|
if !a.Get(NilLangRef).Equals(testVal) {
|
2019-12-04 15:28:45 +00:00
|
|
|
t.Errorf("Invalid Get result. Expected %s received %s", testVal, a.Get(NilLangRef))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValue_Set(t *testing.T) {
|
2020-08-26 16:50:27 +00:00
|
|
|
testVal := Content("test")
|
2020-08-27 14:59:27 +00:00
|
|
|
a := NaturalLanguageValues{{NilLangRef, Content("ana are mere")}}
|
2019-12-04 15:28:45 +00:00
|
|
|
err := a.Set(LangRef("en"), testVal)
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Received error when doing Set %s", err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValue_Append(t *testing.T) {
|
|
|
|
var a NaturalLanguageValues
|
|
|
|
|
|
|
|
if len(a) != 0 {
|
|
|
|
t.Errorf("Invalid initialization of %T. Size %d > 0 ", a, len(a))
|
|
|
|
}
|
|
|
|
langEn := LangRef("en")
|
2020-08-26 16:50:27 +00:00
|
|
|
valEn := Content("random value")
|
2019-12-04 15:28:45 +00:00
|
|
|
|
|
|
|
a.Append(langEn, valEn)
|
|
|
|
if len(a) != 1 {
|
|
|
|
t.Errorf("Invalid append of one element to %T. Size %d != 1", a, len(a))
|
|
|
|
}
|
2020-08-27 14:59:27 +00:00
|
|
|
if !a.Get(langEn).Equals(valEn) {
|
2019-12-04 15:28:45 +00:00
|
|
|
t.Errorf("Invalid append of one element to %T. Value of %q not equal to %q, but %q", a, langEn, valEn, a.Get(langEn))
|
|
|
|
}
|
|
|
|
langDe := LangRef("de")
|
2020-08-26 16:50:27 +00:00
|
|
|
valDe := Content("randomisch")
|
2019-12-04 15:28:45 +00:00
|
|
|
a.Append(langDe, valDe)
|
|
|
|
|
|
|
|
if len(a) != 2 {
|
|
|
|
t.Errorf("Invalid append of one element to %T. Size %d != 2", a, len(a))
|
|
|
|
}
|
2020-08-27 14:59:27 +00:00
|
|
|
if !a.Get(langEn).Equals(valEn) {
|
2019-12-04 15:28:45 +00:00
|
|
|
t.Errorf("Invalid append of one element to %T. Value of %q not equal to %q, but %q", a, langEn, valEn, a.Get(langEn))
|
|
|
|
}
|
2020-08-27 14:59:27 +00:00
|
|
|
if !a.Get(langDe).Equals(valDe) {
|
2019-12-04 15:28:45 +00:00
|
|
|
t.Errorf("Invalid append of one element to %T. Value of %q not equal to %q, but %q", a, langDe, valDe, a.Get(langDe))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestLangRef_UnmarshalJSON(t *testing.T) {
|
|
|
|
lang := "en-US"
|
|
|
|
json := `"` + lang + `"`
|
|
|
|
|
|
|
|
var a LangRef
|
|
|
|
a.UnmarshalJSON([]byte(json))
|
|
|
|
|
|
|
|
if string(a) != lang {
|
|
|
|
t.Errorf("Invalid json unmarshal for %T. Expected %q, found %q", lang, lang, string(a))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValue_UnmarshalFullObjectJSON(t *testing.T) {
|
|
|
|
langEn := "en-US"
|
2020-08-26 16:50:27 +00:00
|
|
|
valEn := Content("random")
|
2019-12-04 15:28:45 +00:00
|
|
|
langDe := "de-DE"
|
2020-08-26 16:50:27 +00:00
|
|
|
valDe := Content("zufällig\n")
|
2019-12-04 15:28:45 +00:00
|
|
|
|
|
|
|
//m := make(map[string]string)
|
|
|
|
//m[langEn] = valEn
|
|
|
|
//m[langDe] = valDe
|
|
|
|
|
|
|
|
json := `{
|
2020-08-25 11:45:52 +00:00
|
|
|
"` + langEn + `": "` + valEn.String() + `",
|
|
|
|
"` + langDe + `": "` + valDe.String() + `"
|
2019-12-04 15:28:45 +00:00
|
|
|
}`
|
|
|
|
|
|
|
|
a := make(NaturalLanguageValues, 0)
|
|
|
|
_ = a.Append(LangRef(langEn), valEn)
|
|
|
|
_ = a.Append(LangRef(langDe), valDe)
|
|
|
|
err := a.UnmarshalJSON([]byte(json))
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
for lang, val := range a {
|
|
|
|
if val.Ref != LangRef(langEn) && val.Ref != LangRef(langDe) {
|
|
|
|
t.Errorf("Invalid json unmarshal for %T. Expected lang %q or %q, found %q", a, langEn, langDe, lang)
|
|
|
|
}
|
|
|
|
|
2020-08-27 14:59:27 +00:00
|
|
|
if val.Ref == LangRef(langEn) && !val.Value.Equals(valEn) {
|
|
|
|
t.Errorf("Invalid json unmarshal for %T. Expected value %q, found %q", a, valEn, val.Value)
|
2019-12-04 15:28:45 +00:00
|
|
|
}
|
2020-08-27 14:59:27 +00:00
|
|
|
if val.Ref == LangRef(langDe) && !val.Value.Equals(valDe) {
|
|
|
|
t.Errorf("Invalid json unmarshal for %T. Expected value %q, found %q", a, valDe, val.Value)
|
2019-12-04 15:28:45 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValue_UnmarshalJSON(t *testing.T) {
|
|
|
|
l := LangRef("")
|
|
|
|
dataEmpty := []byte("")
|
|
|
|
|
|
|
|
l.UnmarshalJSON(dataEmpty)
|
|
|
|
if l != "" {
|
|
|
|
t.Errorf("Unmarshaled object %T should be an empty string, received %q", l, l)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValue_UnmarshalText(t *testing.T) {
|
|
|
|
l := LangRef("")
|
|
|
|
dataEmpty := []byte("")
|
|
|
|
|
|
|
|
l.UnmarshalText(dataEmpty)
|
|
|
|
if l != "" {
|
|
|
|
t.Errorf("Unmarshaled object %T should be an empty string, received %q", l, l)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValue_First(t *testing.T) {
|
|
|
|
t.Skipf("TODO")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValueNew(t *testing.T) {
|
|
|
|
n := NaturalLanguageValuesNew()
|
|
|
|
|
|
|
|
if len(n) != 0 {
|
|
|
|
t.Errorf("Initial %T should have length 0, received %d", n, len(n))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValue_MarshalText(t *testing.T) {
|
|
|
|
nlv := LangRefValue{
|
|
|
|
Ref: "en",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test"),
|
2019-12-04 15:28:45 +00:00
|
|
|
}
|
|
|
|
tst := NaturalLanguageValues{nlv}
|
|
|
|
j, err := tst.MarshalText()
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Error marshaling: %s", err)
|
|
|
|
}
|
|
|
|
if j == nil {
|
|
|
|
t.Errorf("Error marshaling: nil value returned")
|
|
|
|
}
|
|
|
|
expected := fmt.Sprintf("\"%s[%s]\"", nlv.Value, nlv.Ref)
|
|
|
|
if string(j) != expected {
|
|
|
|
t.Errorf("Wrong value: %s, expected %s", j, expected)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValues_Append(t *testing.T) {
|
|
|
|
t.Skipf("TODO")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValues_First(t *testing.T) {
|
|
|
|
t.Skipf("TODO")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValues_Get(t *testing.T) {
|
|
|
|
t.Skipf("TODO")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValues_MarshalJSON(t *testing.T) {
|
|
|
|
{
|
|
|
|
m := NaturalLanguageValues{
|
|
|
|
{
|
2020-08-27 14:59:27 +00:00
|
|
|
"en", Content("test"),
|
2019-12-04 15:28:45 +00:00
|
|
|
},
|
|
|
|
{
|
2020-08-27 14:59:27 +00:00
|
|
|
"de", Content("test"),
|
2019-12-04 15:28:45 +00:00
|
|
|
},
|
|
|
|
}
|
|
|
|
result, err := m.MarshalJSON()
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Failed marshaling '%v'", err)
|
|
|
|
}
|
2019-12-18 09:02:23 +00:00
|
|
|
mRes := "{\"en\":\"test\",\"de\":\"test\"}"
|
2019-12-04 15:28:45 +00:00
|
|
|
if string(result) != mRes {
|
|
|
|
t.Errorf("Different results '%v' vs. '%v'", string(result), mRes)
|
|
|
|
}
|
|
|
|
//n := NaturalLanguageValuesNew()
|
|
|
|
//result, err := n.MarshalJSON()
|
|
|
|
|
|
|
|
s := make(map[LangRef]string)
|
|
|
|
s["en"] = "test"
|
|
|
|
n1 := NaturalLanguageValues{{
|
2020-08-27 14:59:27 +00:00
|
|
|
"en", Content("test"),
|
2019-12-04 15:28:45 +00:00
|
|
|
}}
|
|
|
|
result1, err1 := n1.MarshalJSON()
|
|
|
|
if err1 != nil {
|
|
|
|
t.Errorf("Failed marshaling '%v'", err1)
|
|
|
|
}
|
2019-12-18 09:02:23 +00:00
|
|
|
mRes1 := `"test"`
|
2019-12-04 15:28:45 +00:00
|
|
|
if string(result1) != mRes1 {
|
|
|
|
t.Errorf("Different results '%v' vs. '%v'", string(result1), mRes1)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
nlv := LangRefValue{
|
|
|
|
Ref: NilLangRef,
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test"),
|
2019-12-04 15:28:45 +00:00
|
|
|
}
|
|
|
|
tst := NaturalLanguageValues{nlv}
|
|
|
|
j, err := tst.MarshalJSON()
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Error marshaling: %s", err)
|
|
|
|
}
|
|
|
|
if j == nil {
|
|
|
|
t.Errorf("Error marshaling: nil value returned")
|
|
|
|
}
|
|
|
|
expected := fmt.Sprintf("\"%s\"", nlv.Value)
|
|
|
|
if string(j) != expected {
|
|
|
|
t.Errorf("Wrong value: %s, expected %s", j, expected)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
nlv := LangRefValue{
|
|
|
|
Ref: "en",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test"),
|
2019-12-04 15:28:45 +00:00
|
|
|
}
|
|
|
|
tst := NaturalLanguageValues{nlv}
|
|
|
|
j, err := tst.MarshalJSON()
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Error marshaling: %s", err)
|
|
|
|
}
|
|
|
|
if j == nil {
|
|
|
|
t.Errorf("Error marshaling: nil value returned")
|
|
|
|
}
|
2019-12-18 09:02:23 +00:00
|
|
|
expected := fmt.Sprintf("\"%s\"", nlv.Value)
|
2019-12-04 15:28:45 +00:00
|
|
|
if string(j) != expected {
|
|
|
|
t.Errorf("Wrong value: %s, expected %s", j, expected)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
nlvEn := LangRefValue{
|
|
|
|
Ref: "en",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test"),
|
2019-12-04 15:28:45 +00:00
|
|
|
}
|
|
|
|
nlvFr := LangRefValue{
|
|
|
|
Ref: "fr",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("teste"),
|
2019-12-04 15:28:45 +00:00
|
|
|
}
|
|
|
|
tst := NaturalLanguageValues{nlvEn, nlvFr}
|
|
|
|
j, err := tst.MarshalJSON()
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Error marshaling: %s", err)
|
|
|
|
}
|
|
|
|
if j == nil {
|
|
|
|
t.Errorf("Error marshaling: nil value returned")
|
|
|
|
}
|
|
|
|
expected := fmt.Sprintf("{\"%s\":\"%s\",\"%s\":\"%s\"}", nlvEn.Ref, nlvEn.Value, nlvFr.Ref, nlvFr.Value)
|
|
|
|
if string(j) != expected {
|
|
|
|
t.Errorf("Wrong value: %s, expected %s", j, expected)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
nlvEn := LangRefValue{
|
|
|
|
Ref: "en",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test\nwith new line"),
|
2019-12-04 15:28:45 +00:00
|
|
|
}
|
|
|
|
nlvFr := LangRefValue{
|
|
|
|
Ref: "fr",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("teste\navec une ligne nouvelle"),
|
2019-12-04 15:28:45 +00:00
|
|
|
}
|
|
|
|
tst := NaturalLanguageValues{nlvEn, nlvFr}
|
|
|
|
j, err := tst.MarshalJSON()
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Error marshaling: %s", err)
|
|
|
|
}
|
|
|
|
if j == nil {
|
|
|
|
t.Errorf("Error marshaling: nil value returned")
|
|
|
|
}
|
2020-08-25 11:45:52 +00:00
|
|
|
expected := fmt.Sprintf("{\"%s\":%s,\"%s\":%s}", nlvEn.Ref, strconv.Quote(nlvEn.Value.String()), nlvFr.Ref, strconv.Quote(nlvFr.Value.String()))
|
2019-12-04 15:28:45 +00:00
|
|
|
if string(j) != expected {
|
|
|
|
t.Errorf("Wrong value: %s, expected %s", j, expected)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValues_MarshalText(t *testing.T) {
|
|
|
|
t.Skipf("TODO")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValues_Set(t *testing.T) {
|
|
|
|
t.Skipf("TODO")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValues_UnmarshalJSON(t *testing.T) {
|
|
|
|
{
|
|
|
|
lang := []byte{'e', 'n'}
|
|
|
|
val := []byte{'a', 'n', 'a', ' ', 'a', 'r', 'e', ' ', 'm', 'e', 'r', 'e', '\n'}
|
|
|
|
js := fmt.Sprintf(`[{"%s": "%s"}]`, lang, val)
|
|
|
|
n := NaturalLanguageValues{}
|
|
|
|
err := n.UnmarshalJSON([]byte(js))
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Unexpected error when unmarshaling %T: %s", n, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if n.Count() != 1 {
|
|
|
|
t.Errorf("Invalid number of elements %d, expected %d", n.Count(), 1)
|
|
|
|
}
|
|
|
|
l := n.First()
|
2020-08-27 14:59:27 +00:00
|
|
|
if !l.Value.Equals(Content("ana are mere\n")) {
|
2019-12-04 15:28:45 +00:00
|
|
|
t.Errorf("Invalid %T value %q, expected %q", l, l.Value, "ana are mere\n")
|
|
|
|
}
|
|
|
|
if l.Ref != "en" {
|
|
|
|
t.Errorf("Invalid %T ref %q, expected %q", l, l.Ref, "en")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
ob := make(map[string]string)
|
|
|
|
ob["en"] = "ana are mere\n"
|
|
|
|
js, err := json.Marshal(ob)
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Unexpected error when marshaling %T: %s", ob, err)
|
|
|
|
}
|
|
|
|
n := NaturalLanguageValues{}
|
|
|
|
err = n.UnmarshalJSON(js)
|
|
|
|
if err != nil {
|
|
|
|
t.Errorf("Unexpected error when unmarshaling %T: %s", n, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if n.Count() != 1 {
|
|
|
|
t.Errorf("Invalid number of elements %d, expected %d", n.Count(), 1)
|
|
|
|
}
|
|
|
|
l := n.First()
|
2020-08-27 14:59:27 +00:00
|
|
|
if !l.Value.Equals(Content("ana are mere\n")) {
|
2019-12-04 15:28:45 +00:00
|
|
|
t.Errorf("Invalid %T value %q, expected %q", l, l.Value, "ana are mere\n")
|
|
|
|
}
|
|
|
|
if l.Ref != "en" {
|
|
|
|
t.Errorf("Invalid %T ref %q, expected %q", l, l.Ref, "en")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValues_UnmarshalText(t *testing.T) {
|
|
|
|
t.Skipf("TODO")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValuesNew(t *testing.T) {
|
|
|
|
t.Skipf("TODO")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValues_String(t *testing.T) {
|
|
|
|
t.Skipf("TODO")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValues_Count(t *testing.T) {
|
|
|
|
t.Skipf("TODO")
|
|
|
|
}
|
2020-05-07 14:44:17 +00:00
|
|
|
|
|
|
|
func TestNaturalLanguageValues_Equals(t *testing.T) {
|
|
|
|
type args struct {
|
|
|
|
with NaturalLanguageValues
|
|
|
|
}
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
n NaturalLanguageValues
|
|
|
|
args args
|
|
|
|
want bool
|
|
|
|
}{
|
|
|
|
{
|
2020-05-15 13:17:35 +00:00
|
|
|
name: "equal-key-value",
|
|
|
|
n: NaturalLanguageValues{LangRefValue{
|
|
|
|
Ref: "en",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test123#"),
|
2020-05-07 14:44:17 +00:00
|
|
|
}},
|
|
|
|
args: args{
|
|
|
|
with: NaturalLanguageValues{LangRefValue{
|
|
|
|
Ref: "en",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test123#"),
|
2020-05-07 14:44:17 +00:00
|
|
|
}},
|
|
|
|
},
|
|
|
|
want: true,
|
|
|
|
},
|
|
|
|
{
|
2020-05-15 13:17:35 +00:00
|
|
|
name: "not-equal-key",
|
|
|
|
n: NaturalLanguageValues{LangRefValue{
|
|
|
|
Ref: "en",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test123#"),
|
2020-05-07 14:44:17 +00:00
|
|
|
}},
|
|
|
|
args: args{
|
|
|
|
with: NaturalLanguageValues{LangRefValue{
|
|
|
|
Ref: "fr",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test123#"),
|
2020-05-07 14:44:17 +00:00
|
|
|
}},
|
|
|
|
},
|
|
|
|
want: false,
|
|
|
|
},
|
|
|
|
{
|
2020-05-15 13:17:35 +00:00
|
|
|
name: "not-equal-value",
|
|
|
|
n: NaturalLanguageValues{LangRefValue{
|
|
|
|
Ref: "en",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test123#"),
|
2020-05-07 14:44:17 +00:00
|
|
|
}},
|
|
|
|
args: args{
|
|
|
|
with: NaturalLanguageValues{LangRefValue{
|
|
|
|
Ref: "en",
|
2020-08-27 14:59:27 +00:00
|
|
|
Value: Content("test123"),
|
2020-05-07 14:44:17 +00:00
|
|
|
}},
|
|
|
|
},
|
|
|
|
want: false,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
if got := tt.n.Equals(tt.args.with); got != tt.want {
|
|
|
|
t.Errorf("Equals() = %v, want %v", got, tt.want)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
2020-08-26 16:50:27 +00:00
|
|
|
|
|
|
|
func TestContent_String(t *testing.T) {
|
|
|
|
t.Skip("TODO")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestContent_UnmarshalJSON(t *testing.T) {
|
|
|
|
t.Skip("TODO")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestContent_UnmarshalText(t *testing.T) {
|
|
|
|
t.Skip("TODO")
|
|
|
|
}
|
2021-12-30 13:40:07 +00:00
|
|
|
|
|
|
|
func gobValue(a interface{}) []byte {
|
|
|
|
b := bytes.Buffer{}
|
|
|
|
gg := gob.NewEncoder(&b)
|
|
|
|
gg.Encode(a)
|
|
|
|
return b.Bytes()
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestContent_GobEncode(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
c Content
|
|
|
|
want []byte
|
|
|
|
wantErr bool
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
name: "empty",
|
|
|
|
c: Content{},
|
2021-12-30 14:53:51 +00:00
|
|
|
want: []byte{},
|
2021-12-30 13:40:07 +00:00
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "empty value",
|
|
|
|
c: Content{'0'},
|
|
|
|
want: gobValue([]byte{'0'}),
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "some text",
|
|
|
|
c: Content{'a', 'n', 'a', ' ', 'a', 'r', 'e'},
|
|
|
|
want: gobValue([]byte{'a', 'n', 'a', ' ', 'a', 'r', 'e'}),
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
got, err := tt.c.GobEncode()
|
|
|
|
if (err != nil) != tt.wantErr {
|
|
|
|
t.Errorf("GobEncode() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if !reflect.DeepEqual(got, tt.want) {
|
|
|
|
t.Errorf("GobEncode() got = %v, want %v", got, tt.want)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestContent_GobDecode(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
c Content
|
|
|
|
data []byte
|
|
|
|
wantErr bool
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
name: "empty",
|
|
|
|
c: Content{},
|
|
|
|
data: []byte{},
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "empty value",
|
|
|
|
c: Content{'0'},
|
|
|
|
data: gobValue([]byte{'0'}),
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "some text",
|
|
|
|
c: Content{'a', 'n', 'a', ' ', 'a', 'r', 'e'},
|
|
|
|
data: gobValue([]byte{'a', 'n', 'a', ' ', 'a', 'r', 'e'}),
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
if err := tt.c.GobDecode(tt.data); (err != nil) != tt.wantErr {
|
|
|
|
t.Errorf("GobDecode() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
2021-12-30 13:58:51 +00:00
|
|
|
|
|
|
|
func TestLangRef_GobDecode(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
l LangRef
|
|
|
|
data []byte
|
|
|
|
wantErr bool
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
name: "empty",
|
|
|
|
l: "",
|
|
|
|
data: []byte{},
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "some text",
|
|
|
|
l: LangRef("ana are"),
|
2021-12-30 18:49:25 +00:00
|
|
|
data: gobValue([]byte("ana are")),
|
2021-12-30 13:58:51 +00:00
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
if err := tt.l.GobDecode(tt.data); (err != nil) != tt.wantErr {
|
|
|
|
t.Errorf("GobDecode() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestLangRef_GobEncode(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
l LangRef
|
|
|
|
want []byte
|
|
|
|
wantErr bool
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
name: "empty",
|
|
|
|
l: "",
|
2021-12-30 14:53:51 +00:00
|
|
|
want: []byte{},
|
2021-12-30 13:58:51 +00:00
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "some text",
|
|
|
|
l: LangRef("ana are"),
|
|
|
|
want: gobValue([]byte{'a', 'n', 'a', ' ', 'a', 'r', 'e'}),
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
got, err := tt.l.GobEncode()
|
|
|
|
if (err != nil) != tt.wantErr {
|
|
|
|
t.Errorf("GobEncode() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if !reflect.DeepEqual(got, tt.want) {
|
|
|
|
t.Errorf("GobEncode() got = %v, want %v", got, tt.want)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
2021-12-30 14:29:41 +00:00
|
|
|
|
|
|
|
func TestLangRefValue_GobEncode(t *testing.T) {
|
|
|
|
type fields struct {
|
|
|
|
Ref LangRef
|
|
|
|
Value Content
|
|
|
|
}
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
fields fields
|
|
|
|
want []byte
|
|
|
|
wantErr bool
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
name: "empty",
|
|
|
|
fields: fields{},
|
2021-12-30 14:53:51 +00:00
|
|
|
want: []byte{},
|
2021-12-30 14:29:41 +00:00
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "some values",
|
|
|
|
fields: fields{
|
|
|
|
Ref: "ana",
|
|
|
|
Value: Content("are mere"),
|
|
|
|
},
|
|
|
|
want: gobValue(kv{K: []byte("ana"), V: []byte("are mere")}),
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
l := LangRefValue{
|
|
|
|
Ref: tt.fields.Ref,
|
|
|
|
Value: tt.fields.Value,
|
|
|
|
}
|
|
|
|
got, err := l.GobEncode()
|
|
|
|
if (err != nil) != tt.wantErr {
|
|
|
|
t.Errorf("GobEncode() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if !reflect.DeepEqual(got, tt.want) {
|
|
|
|
t.Errorf("GobEncode() got = %v, want %v", got, tt.want)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestLangRefValue_GobDecode(t *testing.T) {
|
|
|
|
type fields struct {
|
|
|
|
Ref LangRef
|
|
|
|
Value Content
|
|
|
|
}
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
fields fields
|
|
|
|
data []byte
|
|
|
|
wantErr bool
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
name: "empty",
|
|
|
|
fields: fields{},
|
|
|
|
data: gobValue(kv{}),
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "some values",
|
|
|
|
fields: fields{
|
|
|
|
Ref: "ana",
|
|
|
|
Value: Content("are mere"),
|
|
|
|
},
|
|
|
|
data: gobValue(kv{K: []byte("ana"), V: []byte("are mere")}),
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
l := &LangRefValue{
|
|
|
|
Ref: tt.fields.Ref,
|
|
|
|
Value: tt.fields.Value,
|
|
|
|
}
|
|
|
|
if err := l.GobDecode(tt.data); (err != nil) != tt.wantErr {
|
|
|
|
t.Errorf("GobDecode() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
2021-12-30 14:57:45 +00:00
|
|
|
|
|
|
|
func TestNaturalLanguageValues_GobEncode(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
n NaturalLanguageValues
|
|
|
|
want []byte
|
|
|
|
wantErr bool
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
name: "empty",
|
|
|
|
n: NaturalLanguageValues{},
|
|
|
|
want: []byte{},
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "some values",
|
|
|
|
n: NaturalLanguageValues{{
|
|
|
|
Ref: "ana",
|
|
|
|
Value: []byte("are mere"),
|
|
|
|
}},
|
|
|
|
want: gobValue([]kv{{K: []byte("ana"), V: []byte("are mere")}}),
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
got, err := tt.n.GobEncode()
|
|
|
|
if (err != nil) != tt.wantErr {
|
|
|
|
t.Errorf("GobEncode() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if !reflect.DeepEqual(got, tt.want) {
|
|
|
|
t.Errorf("GobEncode() got = %v, want %v", got, tt.want)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNaturalLanguageValues_GobDecode(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
n NaturalLanguageValues
|
|
|
|
data []byte
|
|
|
|
wantErr bool
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
name: "empty",
|
|
|
|
n: NaturalLanguageValues{},
|
|
|
|
data: []byte{},
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "some values",
|
|
|
|
n: NaturalLanguageValues{{
|
|
|
|
Ref: "ana",
|
|
|
|
Value: []byte("are mere"),
|
|
|
|
}},
|
|
|
|
data: gobValue([]kv{{K: []byte("ana"), V: []byte("are mere")}}),
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
if err := tt.n.GobDecode(tt.data); (err != nil) != tt.wantErr {
|
|
|
|
t.Errorf("GobDecode() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|