(t *testing.T)
| 81 | } |
| 82 | |
| 83 | func TestDashToken_SetAppend(t *testing.T) { |
| 84 | t.Parallel() |
| 85 | |
| 86 | t.Run("append into slice nested in a map (in place)", func(t *testing.T) { |
| 87 | doc := map[string]any{"arr": []any{1, 2}} |
| 88 | p, err := New("/arr/-") |
| 89 | require.NoError(t, err) |
| 90 | |
| 91 | out, err := p.Set(doc, 3) |
| 92 | require.NoError(t, err) |
| 93 | |
| 94 | // returned doc is the same map reference |
| 95 | assert.Equal(t, doc, out) |
| 96 | |
| 97 | // map's slice was rebound in place |
| 98 | arr, ok := doc["arr"].([]any) |
| 99 | require.True(t, ok) |
| 100 | assert.Equal(t, []any{1, 2, 3}, arr) |
| 101 | }) |
| 102 | |
| 103 | t.Run("append into top-level slice passed by value (return value is source of truth)", func(t *testing.T) { |
| 104 | doc := []int{1, 2} |
| 105 | p, err := New("/-") |
| 106 | require.NoError(t, err) |
| 107 | |
| 108 | out, err := p.Set(doc, 3) |
| 109 | require.NoError(t, err) |
| 110 | |
| 111 | // returned doc has the appended element |
| 112 | outSlice, ok := out.([]int) |
| 113 | require.True(t, ok) |
| 114 | assert.Equal(t, []int{1, 2, 3}, outSlice) |
| 115 | }) |
| 116 | |
| 117 | t.Run("append into top-level *[]T (in place)", func(t *testing.T) { |
| 118 | doc := []int{1, 2} |
| 119 | p, err := New("/-") |
| 120 | require.NoError(t, err) |
| 121 | |
| 122 | _, err = p.Set(&doc, 3) |
| 123 | require.NoError(t, err) |
| 124 | |
| 125 | // caller's slice variable now has the appended element |
| 126 | assert.Equal(t, []int{1, 2, 3}, doc) |
| 127 | }) |
| 128 | |
| 129 | t.Run("append into struct slice field reached via pointer (in place)", func(t *testing.T) { |
| 130 | type holder struct { |
| 131 | Arr []int `json:"arr"` |
| 132 | } |
| 133 | doc := &holder{Arr: []int{1, 2}} |
| 134 | p, err := New("/arr/-") |
| 135 | require.NoError(t, err) |
| 136 | |
| 137 | _, err = p.Set(doc, 3) |
| 138 | require.NoError(t, err) |
| 139 | |
| 140 | assert.Equal(t, []int{1, 2, 3}, doc.Arr) |
nothing calls this directly
no test coverage detected
searching dependent graphs…