| 12 | ) |
| 13 | |
| 14 | func TestConvert(t *testing.T) { |
| 15 | testCases := []struct { |
| 16 | name string |
| 17 | src string |
| 18 | want string |
| 19 | err string |
| 20 | }{ |
| 21 | { |
| 22 | name: "null", |
| 23 | src: "null", |
| 24 | want: join([]string{"null"}), |
| 25 | }, |
| 26 | { |
| 27 | name: "boolean", |
| 28 | src: "false true", |
| 29 | want: join([]string{"false", "true"}), |
| 30 | }, |
| 31 | { |
| 32 | name: "number", |
| 33 | src: "0 128 -320 3.14 -6.63e-34", |
| 34 | want: join([]string{"0", "128", "-320", "3.14", "-6.63e-34"}), |
| 35 | }, |
| 36 | { |
| 37 | name: "string", |
| 38 | src: `"" "foo" "null" "hello, world" "\"\\\b\f\r\t" "12345" " 12345 "`, |
| 39 | want: join([]string{`""`, `foo`, `"null"`, `hello, world`, `"\"\\\b\f\r\t"`, `12345`, `" 12345 "`}), |
| 40 | }, |
| 41 | { |
| 42 | name: "quote booleans", |
| 43 | src: `"true" "False" "YES" "y" "no" "n" "oN" "Off" "truer" "oon" "f"`, |
| 44 | want: join([]string{`"true"`, `"False"`, `"YES"`, `"y"`, `"no"`, `"n"`, `"oN"`, `"Off"`, `truer`, `oon`, `f`}), |
| 45 | }, |
| 46 | { |
| 47 | name: "quote integers", |
| 48 | src: `"0" "+42" "128" "900" "-1_234_567_890" "+ 1" "11:22" "+1:2" "-3:4" "0:1:02:1:0" "12:50" "12:60" |
| 49 | "0b1" "0b11_00" "0b" "0b2" "0664" "0_1_2_3" "0_" "0678" "0123.456e789" "0o1_0" "0O0" "0o" |
| 50 | "0x0" "0x09af" "0xFE_FF" "0x" "0xfg" "0x_F_"`, |
| 51 | want: join([]string{ |
| 52 | `"0"`, `"+42"`, `"128"`, `"900"`, `"-1_234_567_890"`, `+ 1`, `"11:22"`, `"+1:2"`, `"-3:4"`, `"0:1:02:1:0"`, `"12:50"`, `12:60`, |
| 53 | `"0b1"`, `"0b11_00"`, `0b`, `0b2`, `"0664"`, `"0_1_2_3"`, `"0_"`, `"0678"`, `"0123.456e789"`, `"0o1_0"`, `"0O0"`, `0o`, |
| 54 | `"0x0"`, `"0x09af"`, `"0xFE_FF"`, `0x`, `0xfg`, `"0x_F_"`, |
| 55 | }), |
| 56 | }, |
| 57 | { |
| 58 | name: "quote floating point numbers", |
| 59 | src: `"0.1" "3.14156" "-42.195" "-.3" "+6." "-+1" "1E+9" "6.63e-34" "1e2" |
| 60 | "1_2.3_4e56" "120:30:40.56" ".inf" "+.inf" "-.inf" ".infr" ".nan" "+.nan" "-.nan" ".nan."`, |
| 61 | want: join([]string{ |
| 62 | `"0.1"`, `"3.14156"`, `"-42.195"`, `"-.3"`, `"+6."`, `-+1`, `"1E+9"`, `"6.63e-34"`, `"1e2"`, |
| 63 | `"1_2.3_4e56"`, `"120:30:40.56"`, `".inf"`, `"+.inf"`, `"-.inf"`, `.infr`, `".nan"`, `+.nan`, `-.nan`, `.nan.`, |
| 64 | }), |
| 65 | }, |
| 66 | { |
| 67 | name: "quote date time", |
| 68 | src: `"2022-08-04" "1000-1-1" "9999-12-31" "1999-99-99" "999-9-9" "2000-08" "2000-08-" "2000-" |
| 69 | "2022-01-01T12:13:14" "2022-02-02 12:13:14.567" "2022-03-03 1:2:3" "2022-03-04 15:16:17." "2022-03-04 15:16:" |
| 70 | "2000-12-31T01:02:03-09:00" "2000-12-31t01:02:03Z" "2000-12-31 01:02:03 +7" "2222-22-22 22:22:22 +22:22"`, |
| 71 | want: join([]string{ |