1[ 2 { 3 "name": "Foo-Example", 4 "raw": ["2; foourl=\"https://foo.example.com/\""], 5 "header_type": "item", 6 "expected": [2, [["foourl", "https://foo.example.com/"]]], 7 "canonical": ["2;foourl=\"https://foo.example.com/\""] 8 }, 9 { 10 "name": "Example-StrListHeader", 11 "raw": ["\"foo\", \"bar\", \"It was the best of times.\""], 12 "header_type": "list", 13 "expected": [ 14 ["foo", []], 15 ["bar", []], 16 ["It was the best of times.", []] 17 ] 18 }, 19 { 20 "name": "Example-Hdr (list on one line)", 21 "raw": ["foo, bar"], 22 "header_type": "list", 23 "expected": [ 24 [{"__type":"token", "value":"foo"}, []], 25 [{"__type":"token", "value":"bar"}, []] 26 ] 27 }, 28 { 29 "name": "Example-Hdr (list on two lines)", 30 "raw": ["foo", "bar"], 31 "header_type": "list", 32 "expected": [ 33 [{"__type":"token", "value":"foo"}, []], 34 [{"__type":"token", "value":"bar"}, []] 35 ], 36 "canonical": ["foo, bar"] 37 }, 38 { 39 "name": "Example-StrListListHeader", 40 "raw": ["(\"foo\" \"bar\"), (\"baz\"), (\"bat\" \"one\"), ()"], 41 "header_type": "list", 42 "expected": [ 43 [[ 44 ["foo", []], 45 ["bar", []] 46 ], []], 47 [[ 48 ["baz", []] 49 ], []], 50 [[ 51 ["bat", []], 52 ["one", []] 53 ], []], 54 [[], []] 55 ] 56 }, 57 { 58 "name": "Example-ListListParam", 59 "raw": ["(\"foo\"; a=1;b=2);lvl=5, (\"bar\" \"baz\");lvl=1"], 60 "header_type": "list", 61 "expected": [ 62 [[ 63 ["foo", [["a", 1], ["b", 2]]] 64 ], [["lvl", 5]]], 65 [[ 66 ["bar", []], ["baz", []] 67 ], [["lvl", 1]]] 68 ], 69 "canonical": ["(\"foo\";a=1;b=2);lvl=5, (\"bar\" \"baz\");lvl=1"] 70 }, 71 72 { 73 "name": "Example-ParamListHeader", 74 "raw": ["abc;a=1;b=2; cde_456, (ghi;jk=4 l);q=\"9\";r=w"], 75 "header_type": "list", 76 "expected": [ 77 [{"__type": "token", "value": "abc"}, [["a", 1], ["b", 2], ["cde_456", true]]], 78 [ 79 [ 80 [{"__type": "token", "value": "ghi"}, [["jk", 4]]], 81 [{"__type": "token", "value": "l"}, []] 82 ], 83 [["q", "9"], ["r", {"__type": "token", "value": "w"}]] 84 ] 85 ], 86 "canonical": ["abc;a=1;b=2;cde_456, (ghi;jk=4 l);q=\"9\";r=w"] 87 }, 88 { 89 "name": "Example-IntHeader", 90 "raw": ["1; a; b=?0"], 91 "header_type": "item", 92 "expected": [1, [["a", true], ["b", false]]], 93 "canonical": ["1;a;b=?0"] 94 }, 95 { 96 "name": "Example-DictHeader", 97 "raw": ["en=\"Applepie\", da=:w4ZibGV0w6ZydGU=:"], 98 "header_type": "dictionary", 99 "expected": [ 100 ["en", ["Applepie", []]], 101 ["da", [{"__type": "binary", "value": "YODGE3DFOTB2M4TUMU======"}, []]] 102 ] 103 }, 104 { 105 "name": "Example-DictHeader", 106 "raw": ["a=?0, b, c; foo=bar"], 107 "header_type": "dictionary", 108 "expected": [ 109 ["a", [false, []]], 110 ["b", [true, []]], 111 ["c", [true, [["foo", {"__type": "token", "value": "bar"}]]]] 112 ], 113 "canonical": ["a=?0, b, c;foo=bar"] 114 }, 115 { 116 "name": "Example-DictListHeader", 117 "raw": ["rating=1.5, feelings=(joy sadness)"], 118 "header_type": "dictionary", 119 "expected": [ 120 ["rating", [1.5, []]], 121 ["feelings", [[ 122 [{"__type": "token", "value": "joy"}, []], 123 [{"__type": "token", "value": "sadness"}, []] 124 ], []]] 125 ] 126 }, 127 { 128 "name": "Example-MixDict", 129 "raw": ["a=(1 2), b=3, c=4;aa=bb, d=(5 6);valid"], 130 "header_type": "dictionary", 131 "expected": [ 132 ["a", [[ 133 [1, []], 134 [2, []] 135 ], []]], 136 ["b", [3, []]], 137 ["c", [4, [["aa", {"__type": "token", "value": "bb"}]]]], 138 ["d", [[ 139 [5, []], 140 [6, []] 141 ], [["valid", true]]]] 142 ], 143 "canonical": ["a=(1 2), b=3, c=4;aa=bb, d=(5 6);valid"] 144 }, 145 { 146 "name": "Example-Hdr (dictionary on one line)", 147 "raw": ["foo=1, bar=2"], 148 "header_type": "dictionary", 149 "expected": [ 150 ["foo", [1, []]], 151 ["bar", [2, []]] 152 ] 153 }, 154 { 155 "name": "Example-Hdr (dictionary on two lines)", 156 "raw": ["foo=1", "bar=2"], 157 "header_type": "dictionary", 158 "expected": [ 159 ["foo", [1, []]], 160 ["bar", [2, []]] 161 ], 162 "canonical": ["foo=1, bar=2"] 163 }, 164 165 { 166 "name": "Example-IntItemHeader", 167 "raw": ["5"], 168 "header_type": "item", 169 "expected": [5, []] 170 }, 171 { 172 "name": "Example-IntItemHeader (params)", 173 "raw": ["5; foo=bar"], 174 "header_type": "item", 175 "expected": [5, [["foo", {"__type": "token", "value": "bar"}]]], 176 "canonical": ["5;foo=bar"] 177 }, 178 { 179 "name": "Example-IntegerHeader", 180 "raw": ["42"], 181 "header_type": "item", 182 "expected": [42, []] 183 }, 184 { 185 "name": "Example-FloatHeader", 186 "raw": ["4.5"], 187 "header_type": "item", 188 "expected": [4.5, []] 189 }, 190 { 191 "name": "Example-StringHeader", 192 "raw": ["\"hello world\""], 193 "header_type": "item", 194 "expected": ["hello world", []] 195 }, 196 { 197 "name": "Example-BinaryHdr", 198 "raw": [":cHJldGVuZCB0aGlzIGlzIGJpbmFyeSBjb250ZW50Lg==:"], 199 "header_type": "item", 200 "expected": [{"__type": "binary", "value": "OBZGK5DFNZSCA5DINFZSA2LTEBRGS3TBOJ4SAY3PNZ2GK3TUFY======"}, []] 201 }, 202 { 203 "name": "Example-BoolHdr", 204 "raw": ["?1"], 205 "header_type": "item", 206 "expected": [true, []] 207 } 208] 209