nswrap/ast/position_test.go
2019-06-11 12:38:22 -04:00

129 lines
2.8 KiB
Go

package ast
import (
"reflect"
"testing"
)
func TestNewPositionFromString(t *testing.T) {
tests := map[string]Position{
`col:30`: {
File: "",
Line: 0,
Column: 30,
LineEnd: 0,
ColumnEnd: 0,
},
`col:47, col:57`: {
File: "",
Line: 0,
Column: 47,
LineEnd: 0,
ColumnEnd: 57,
},
`/usr/include/sys/cdefs.h:313:68`: {
File: "/usr/include/sys/cdefs.h",
Line: 313,
Column: 68,
LineEnd: 0,
ColumnEnd: 0,
},
`/usr/include/AvailabilityInternal.h:21697:88, col:124`: {
File: "/usr/include/AvailabilityInternal.h",
Line: 21697,
Column: 88,
LineEnd: 0,
ColumnEnd: 124,
},
`line:275:50, col:99`: {
File: "",
Line: 275,
Column: 50,
LineEnd: 0,
ColumnEnd: 99,
},
`line:11:5, line:12:21`: {
File: "",
Line: 11,
Column: 5,
LineEnd: 12,
ColumnEnd: 21,
},
`col:54, line:358:1`: {
File: "",
Line: 0,
Column: 54,
LineEnd: 358,
ColumnEnd: 1,
},
`/usr/include/secure/_stdio.h:42:1, line:43:32`: {
File: "/usr/include/secure/_stdio.h",
Line: 42,
Column: 1,
LineEnd: 43,
ColumnEnd: 32,
},
`line:244:5`: {
File: "",
Line: 244,
Column: 5,
LineEnd: 0,
ColumnEnd: 0,
},
`<invalid sloc>`: {
File: "",
Line: 0,
Column: 0,
LineEnd: 0,
ColumnEnd: 0,
},
`/usr/include/sys/stdio.h:39:1, /usr/include/AvailabilityInternal.h:21697:126`: {
File: "/usr/include/sys/stdio.h",
Line: 39,
Column: 1,
LineEnd: 0,
ColumnEnd: 0,
},
`col:1, /usr/include/sys/cdefs.h:351:63`: {
File: "",
Line: 0,
Column: 1,
LineEnd: 0,
ColumnEnd: 0,
},
}
for testName, expectedPos := range tests {
t.Run(testName, func(t *testing.T) {
pos := NewPositionFromString(testName)
if pos.File != expectedPos.File {
t.Errorf("TestNewPositionFromString: File: %#v != %#v", pos.File, expectedPos.File)
}
if pos.Line != expectedPos.Line {
t.Errorf("TestNewPositionFromString: Line: %#v != %#v", pos.Line, expectedPos.Line)
}
if pos.Column != expectedPos.Column {
t.Errorf("TestNewPositionFromString: Column: %#v != %#v", pos.Column, expectedPos.Column)
}
})
}
}
func TestTrackPositions(t *testing.T) {
TrackPositions = false
t.Run("TrackPositions1", func(t *testing.T) {
pos := NewPositionFromString("line:120:1, col:16")
if !reflect.DeepEqual(pos, Position{}) {
t.Errorf("TrackPositions = false but NewPositionFromString did not return Position{}\n")
}
})
t.Run("TrackPositions2", func(t *testing.T) {
addr := ParseAddress("0x7fdef0862430")
if addr != 0 {
t.Errorf("TrackPositions = false but ParseAddress did not return 0\n")
}
})
TrackPositions = true
}