Covered rjreader and removed the error for rjr.unreadByte function in getJSONOffsetLine

This commit is contained in:
porosnicuadrian
2020-11-18 15:58:14 +02:00
committed by Dan Christian Bogos
parent 880dfe48dc
commit 6d20bd182d
2 changed files with 101 additions and 9 deletions

View File

@@ -356,10 +356,9 @@ func (rjr *rjReader) getJSONOffsetLine(offset int64) (line, character int64) {
character++
return nil
}
rerr := rjr.UnreadByte()
if rerr != nil {
return rerr
}
// Unread byte return error only if rjr.indx is small or equal to 0
// The value is greater than 0 so it's safe to not check the error
rjr.UnreadByte()
}
}
return nil
@@ -410,10 +409,9 @@ func (rjr *rjReader) getJSONOffsetLine(offset int64) (line, character int64) {
break
}
} else {
rerr := rjr.UnreadByte()
if rerr != nil {
break
}
// Unread byte return error only if rjr.indx is small or equal to 0
// The value is greater than 0 so it's safe to not check the error
rjr.UnreadByte()
}
}
}

View File

@@ -478,5 +478,99 @@ func TestGetErrorLine2(t *testing.T) {
} else if expChar != character {
t.Errorf("Expected line %v received:%v", expChar, character)
}
}
func TestGetJSONOffsetLineFuncError(t *testing.T) {
rjr := NewRjReaderFromBytes([]byte("{}"))
rjr.indx = 7
var eLine, eCharachter int64 = 1, 0
if line, character := rjr.getJSONOffsetLine(int64(3)); line != eLine && character != eCharachter {
fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character)
}
}
func TestGetJSONOffsetLineReadStringEOF(t *testing.T) {
rjr := NewRjReaderFromBytes([]byte(`{","}`))
rjr.indx = 3
var eLine, eCharachter int64 = 1, 0
if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter {
fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character)
}
}
func TestGetJSONOffsetLineReadString1(t *testing.T) {
rjr := NewRjReaderFromBytes([]byte(`{,}, {val1, val2}`))
rjr.indx = 0
var eLine, eCharachter int64 = 1, 0
if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter {
fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character)
}
}
func TestGetJSONOffsetLineReadStringNilError1(t *testing.T) {
rjr := NewRjReaderFromBytes([]byte(`"
", {,}, {val1, val2}`))
rjr.indx = 0
var eLine, eCharachter int64 = 1, 0
if line, character := rjr.getJSONOffsetLine(int64(3)); line != eLine && character != eCharachter {
fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character)
}
}
func TestGetJSONOffsetLineReadLineCommentEOF(t *testing.T) {
rjr := NewRjReaderFromBytes([]byte(`random/`))
rjr.indx = 6
var eLine, eCharachter int64 = 1, 0
if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter {
fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character)
}
}
func TestGetJSONOffsetLineReadLineCommentEOF1(t *testing.T) {
rjr := NewRjReaderFromBytes([]byte(`random//`))
rjr.indx = 6
var eLine, eCharachter int64 = 1, 0
if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter {
fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character)
}
}
func TestGetJSONOffsetLineReadCommentEOF(t *testing.T) {
rjr := NewRjReaderFromBytes([]byte(`random/*`))
rjr.indx = 5
var eLine, eCharachter int64 = 1, 0
if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter {
fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character)
}
}
func TestGetJSONOffsetLineReadCommentInvalidEnding(t *testing.T) {
rjr := NewRjReaderFromBytes([]byte(`random/*
**`))
rjr.indx = 5
var eLine, eCharachter int64 = 3, 2
if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter {
fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character)
}
}
func TestGetJSONOffsetLineReadComment1(t *testing.T) {
rjr := NewRjReaderFromBytes([]byte(`/*
**`))
rjr.indx = 0
var eLine, eCharachter int64 = 3, 2
if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter {
fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character)
}
}
func TestGetJSONOffsetLineInvalidComment2(t *testing.T) {
rjr := NewRjReaderFromBytes([]byte(`/noComm`))
rjr.indx = 0
var eLine, eCharachter int64 = 1, 5
if line, character := rjr.getJSONOffsetLine(int64(5)); line != eLine && character != eCharachter {
fmt.Printf("Expected %+v and %+v, received %+v and %+v", eLine, eCharachter, line, character)
}
}