(t *testing.T)
| 138 | } |
| 139 | |
| 140 | func TestTomlWriter_MoreCases(t *testing.T) { |
| 141 | cases := map[string][]byte{ |
| 142 | "simple array": []byte("nums = [1, 2, 3]"), |
| 143 | "mixed array": []byte("mix = [1, \"two\", true]"), |
| 144 | "inline nested table": []byte("props = { sub = { a = 1 }, arr = [1,2] }"), |
| 145 | "quoted key with space": []byte("\"a b\" = \"val\""), |
| 146 | "dotted and quoted mix": []byte("a.\"b.c\".d = \"x\""), |
| 147 | "negative integer": []byte("n = -5"), |
| 148 | "scientific float": []byte("f = 1e3"), |
| 149 | "array of inline tables": []byte("items = [{a = 1}, {a = 2} ]"), |
| 150 | "nested table headers": []byte("[server]\nip = \"127.0.0.1\"\n[server.db]\nname = \"maindb\""), |
| 151 | "quoted single dot": []byte("\"a.b\" = 1"), |
| 152 | "unquoted dotted": []byte("a.b = 2"), |
| 153 | "mixed quoted segment": []byte("a.\"b.c\" = 3"), |
| 154 | "inline then explicit": []byte("t = {a = 1}\n[t]\nb = 2"), |
| 155 | "array trailing comma": []byte("arr = [1,2,]"), |
| 156 | "local date": []byte("d = 1979-05-27"), |
| 157 | "local time": []byte("t = 07:32:00"), |
| 158 | "local datetime": []byte("dt = 1979-05-27T07:32:00"), |
| 159 | "datetime with tz": []byte("dt = 1979-05-27T07:32:00-08:00"), |
| 160 | "multiline basic string": []byte("m = '''not used'''\n"), |
| 161 | } |
| 162 | |
| 163 | reader, err := toml.TOML.NewReader(parsing.DefaultReaderOptions()) |
| 164 | if err != nil { |
| 165 | t.Fatalf("unexpected error creating reader: %v", err) |
| 166 | } |
| 167 | writer, err := toml.TOML.NewWriter(parsing.DefaultWriterOptions()) |
| 168 | if err != nil { |
| 169 | t.Fatalf("unexpected error creating writer: %v", err) |
| 170 | } |
| 171 | |
| 172 | for name, src := range cases { |
| 173 | src := src |
| 174 | name := name |
| 175 | t.Run(name, func(t *testing.T) { |
| 176 | v, err := reader.Read(src) |
| 177 | if err != nil { |
| 178 | t.Fatalf("reader error for %s: %v", name, err) |
| 179 | } |
| 180 | |
| 181 | out, err := writer.Write(v) |
| 182 | if err != nil { |
| 183 | t.Fatalf("writer error for %s: %v", name, err) |
| 184 | } |
| 185 | |
| 186 | v2, err := reader.Read(out) |
| 187 | if err != nil { |
| 188 | t.Fatalf("reader error for generated output %s: %v", name, err) |
| 189 | } |
| 190 | |
| 191 | res, err := v.Equal(v2) |
| 192 | if err != nil { |
| 193 | t.Fatalf("compare error for %s: %v", name, err) |
| 194 | } |
| 195 | b, err := res.BoolValue() |
| 196 | if err != nil { |
| 197 | t.Fatalf("bool extraction error for %s: %v", name, err) |
nothing calls this directly
no test coverage detected