package json import ( "fmt" "strconv" "testing" ) func TestNavigationContextString(t *testing.T) { src := ` { "version": 1, "resource": { "null_resource": { "baz": { "id": "foo" }, "boz": [ { "ov": { } } ] } } } ` file, diags := Parse([]byte(src), "test.json") if len(diags) != 0 { fmt.Printf("offset %d\n", diags[0].Subject.Start.Byte) t.Errorf("Unexpected diagnostics: %s", diags) } if file == nil { t.Fatalf("Got nil file") } nav := file.Nav.(navigation) tests := []struct { Offset int Want string }{ {0, ``}, {8, ``}, {36, `resource`}, {60, `resource.null_resource`}, {89, `resource.null_resource.baz`}, {141, `resource.null_resource.boz`}, } for _, test := range tests { t.Run(strconv.Itoa(test.Offset), func(t *testing.T) { got := nav.ContextString(test.Offset) if got != test.Want { t.Errorf("wrong result\ngot: %s\nwant: %s", got, test.Want) } }) } }