12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package parser
- import (
- "testing"
- )
- var invalidJSONArraysOfStrings = []string{
- `["a",42,"b"]`,
- `["a",123.456,"b"]`,
- `["a",{},"b"]`,
- `["a",{"c": "d"},"b"]`,
- `["a",["c"],"b"]`,
- `["a",true,"b"]`,
- `["a",false,"b"]`,
- `["a",null,"b"]`,
- }
- var validJSONArraysOfStrings = map[string][]string{
- `[]`: {},
- `[""]`: {""},
- `["a"]`: {"a"},
- `["a","b"]`: {"a", "b"},
- `[ "a", "b" ]`: {"a", "b"},
- `[ "a", "b" ]`: {"a", "b"},
- ` [ "a", "b" ] `: {"a", "b"},
- `["abc 123", "♥", "☃", "\" \\ \/ \b \f \n \r \t \u0000"]`: {"abc 123", "♥", "☃", "\" \\ / \b \f \n \r \t \u0000"},
- }
- func TestJSONArraysOfStrings(t *testing.T) {
- for json, expected := range validJSONArraysOfStrings {
- d := Directive{}
- SetEscapeToken(DefaultEscapeToken, &d)
- if node, _, err := parseJSON(json, &d); err != nil {
- t.Fatalf("%q should be a valid JSON array of strings, but wasn't! (err: %q)", json, err)
- } else {
- i := 0
- for node != nil {
- if i >= len(expected) {
- t.Fatalf("expected result is shorter than parsed result (%d vs %d+) in %q", len(expected), i+1, json)
- }
- if node.Value != expected[i] {
- t.Fatalf("expected %q (not %q) in %q at pos %d", expected[i], node.Value, json, i)
- }
- node = node.Next
- i++
- }
- if i != len(expected) {
- t.Fatalf("expected result is longer than parsed result (%d vs %d) in %q", len(expected), i+1, json)
- }
- }
- }
- for _, json := range invalidJSONArraysOfStrings {
- d := Directive{}
- SetEscapeToken(DefaultEscapeToken, &d)
- if _, _, err := parseJSON(json, &d); err != errDockerfileNotStringArray {
- t.Fatalf("%q should be an invalid JSON array of strings, but wasn't!", json)
- }
- }
- }
|