GameShow/questions/storage/one_test.go

84 lines
1.4 KiB
Go
Executable File

package storage
import (
"encoding/json"
"testing"
)
func TestOneStrings(t *testing.T) {
raw := `{
"id":"my id",
"q":"my question",
"a":[
"my answer 0",
"my answer 1"
]
}`
var one One
if err := json.Unmarshal([]byte(raw), &one); err != nil {
t.Fatal(err)
}
if one.ID != "my id" {
t.Fatal(one.ID)
}
if one.Question.ID != "my question" {
t.Fatal(one.ID)
}
if len(one.Answers) != 2 {
t.Fatal(one.Answers)
}
if one.Answers[0].ID != "my answer 0" {
t.Fatal(one.Answers[0])
}
if one.Answers[1].ID != "my answer 1" {
t.Fatal(one.Answers[1])
}
}
func TestOneObj(t *testing.T) {
raw := `{
"id":"my id",
"q":{
"text": "my question"
},
"a":[
{"text": "my answer 0"},
{"text": "my answer 1"}
]
}`
var one One
if err := json.Unmarshal([]byte(raw), &one); err != nil {
t.Fatal(err)
}
if one.ID != "my id" {
t.Fatal(one.ID)
}
if one.Question.Text != "my question" {
t.Fatal(one.Question)
}
if len(one.Answers) != 2 {
t.Fatal(one.Answers)
}
if one.Answers[0].Text != "my answer 0" {
t.Fatal(one.Answers[0])
}
if one.Answers[1].Text != "my answer 1" {
t.Fatal(one.Answers[1])
}
}
func TestOneNonObj(t *testing.T) {
raw := `{
"id":"my id",
"q": [],
"a":[
[],
{}
]
}`
var one One
if err := json.Unmarshal([]byte(raw), &one); err == nil {
t.Fatal(err, one)
}
}