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) } }