// Copyright (c) 2026 Petr BalvĂ­n (https://petrbalvin.org) // SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0 package tomlfile import ( "os" "path/filepath" "strings" "testing" "sourcedock.dev/petrbalvin/interpres/v2" ) func TestWriteAndReload(t *testing.T) { path := filepath.Join(t.TempDir(), "sub", "data.toml") if err := Write(path, "users", []map[string]any{ {"username": "admin", "role": "admin"}, }); err != nil { t.Fatalf("Write: %v", err) } info, err := os.Stat(path) if err != nil { t.Fatalf("stat: %v", err) } if info.Mode().Perm() != 0o600 { t.Fatalf("mode = %v", info.Mode().Perm()) } raw, err := os.ReadFile(path) if err != nil { t.Fatalf("read: %v", err) } if !strings.Contains(string(raw), "[[users]]") { t.Fatalf("content = %s", raw) } parsed, err := interpres.ParseMap(raw) if err != nil { t.Fatalf("parse: %v", err) } tables := Tables(parsed["users"]) if len(tables) != 1 || tables[0]["username"] != "admin" { t.Fatalf("tables = %v", tables) } } func TestTablesShapes(t *testing.T) { if Tables(nil) != nil { t.Fatal("nil input should yield nil") } if got := Tables("nope"); got != nil { t.Fatalf("got = %v", got) } fromAny := Tables([]any{map[string]any{"a": 1}, "skip"}) if len(fromAny) != 1 || fromAny[0]["a"] != 1 { t.Fatalf("fromAny = %v", fromAny) } fromMaps := Tables([]map[string]any{{"b": 2}}) if len(fromMaps) != 1 || fromMaps[0]["b"] != 2 { t.Fatalf("fromMaps = %v", fromMaps) } } func TestStringsShapes(t *testing.T) { if Strings(nil) != nil { t.Fatal("nil input should yield nil") } if Strings(42) != nil { t.Fatal("non-array input should yield nil") } got := Strings([]any{"a", 1, "b"}) if len(got) != 3 || got[0] != "a" || got[2] != "b" { t.Fatalf("got = %v", got) } if direct := Strings([]string{"x"}); len(direct) != 1 || direct[0] != "x" { t.Fatalf("direct = %v", direct) } }