Skip to content

Commit 4071c9e

Browse files
committed
test: improved test coverage
* refactored to remove unreachable (untestable) code * added tests for edge cases Signed-off-by: Frédéric BIDON <fredbi@yahoo.com>
1 parent d94283a commit 4071c9e

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

pointer.go

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -166,33 +166,36 @@ func (p *Pointer) set(node, data any, nameProvider *jsonname.NameProvider) error
166166
)
167167
}
168168

169+
l := len(p.referenceTokens)
170+
169171
// full document when empty
170-
if len(p.referenceTokens) == 0 {
172+
if l == 0 {
171173
return nil
172174
}
173175

174176
if nameProvider == nil {
175177
nameProvider = jsonname.DefaultJSONNameProvider
176178
}
177179

178-
lastI := len(p.referenceTokens) - 1
179-
for i, token := range p.referenceTokens {
180-
isLastToken := i == lastI
181-
decodedToken := Unescape(token)
180+
var decodedToken string
181+
lastIndex := l - 1
182182

183-
if isLastToken {
184-
return setSingleImpl(node, data, decodedToken, nameProvider)
185-
}
183+
if lastIndex > 0 { // skip if we only have one token in pointer
184+
for _, token := range p.referenceTokens[:lastIndex] {
185+
decodedToken = Unescape(token)
186+
next, err := p.resolveNodeForToken(node, decodedToken, nameProvider)
187+
if err != nil {
188+
return err
189+
}
186190

187-
next, err := p.resolveNodeForToken(node, decodedToken, nameProvider)
188-
if err != nil {
189-
return err
191+
node = next
190192
}
191-
192-
node = next
193193
}
194194

195-
return nil
195+
// last token
196+
decodedToken = Unescape(p.referenceTokens[lastIndex])
197+
198+
return setSingleImpl(node, data, decodedToken, nameProvider)
196199
}
197200

198201
func (p *Pointer) resolveNodeForToken(node any, decodedToken string, nameProvider *jsonname.NameProvider) (next any, err error) {

pointer_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ func TestFullDocument(t *testing.T) {
114114
require.True(t, ok)
115115

116116
asArray, ok := foos.([]any)
117+
require.True(t, ok)
117118
require.Len(t, asArray, 2)
118119

119120
foo := asArray[0]

0 commit comments

Comments
 (0)