84 lines
1.4 KiB
Go
Executable File
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)
|
|
}
|
|
}
|