github.com/Konstantin8105/c4go@v0.0.0-20240505174241-768bb1c65a51/ast/position_test.go (about) 1 package ast 2 3 import ( 4 "testing" 5 ) 6 7 func TestNewPositionFromString(t *testing.T) { 8 tests := map[string]Position{ 9 `col:30`: { 10 File: "", 11 Line: 0, 12 Column: 30, 13 LineEnd: 0, 14 ColumnEnd: 0, 15 }, 16 `col:47, col:57`: { 17 File: "", 18 Line: 0, 19 Column: 47, 20 LineEnd: 0, 21 ColumnEnd: 57, 22 }, 23 `/usr/include/sys/cdefs.h:313:68`: { 24 File: "/usr/include/sys/cdefs.h", 25 Line: 313, 26 Column: 68, 27 LineEnd: 0, 28 ColumnEnd: 0, 29 }, 30 `C:\usr\include\sys\cdefs.h:313:68`: { 31 File: `C:\usr\include\sys\cdefs.h`, 32 Line: 313, 33 Column: 68, 34 LineEnd: 0, 35 ColumnEnd: 0, 36 }, 37 `/usr/include/AvailabilityInternal.h:21697:88, col:124`: { 38 File: "/usr/include/AvailabilityInternal.h", 39 Line: 21697, 40 Column: 88, 41 LineEnd: 0, 42 ColumnEnd: 124, 43 }, 44 `C:\usr\include\AvailabilityInternal.h:21697:88, col:124`: { 45 File: `C:\usr\include\AvailabilityInternal.h`, 46 Line: 21697, 47 Column: 88, 48 LineEnd: 0, 49 ColumnEnd: 124, 50 }, 51 `line:275:50, col:99`: { 52 File: "", 53 Line: 275, 54 Column: 50, 55 LineEnd: 0, 56 ColumnEnd: 99, 57 }, 58 `line:11:5, line:12:21`: { 59 File: "", 60 Line: 11, 61 Column: 5, 62 LineEnd: 12, 63 ColumnEnd: 21, 64 }, 65 `col:54, line:358:1`: { 66 File: "", 67 Line: 0, 68 Column: 54, 69 LineEnd: 358, 70 ColumnEnd: 1, 71 }, 72 `/usr/include/secure/_stdio.h:42:1, line:43:32`: { 73 File: "/usr/include/secure/_stdio.h", 74 Line: 42, 75 Column: 1, 76 LineEnd: 43, 77 ColumnEnd: 32, 78 }, 79 `C:\usr\include\secure\_stdio.h:42:1, line:43:32`: { 80 File: `C:\usr\include\secure\_stdio.h`, 81 Line: 42, 82 Column: 1, 83 LineEnd: 43, 84 ColumnEnd: 32, 85 }, 86 `line:244:5`: { 87 File: "", 88 Line: 244, 89 Column: 5, 90 LineEnd: 0, 91 ColumnEnd: 0, 92 }, 93 `<invalid sloc>`: { 94 File: "", 95 Line: 0, 96 Column: 0, 97 LineEnd: 0, 98 ColumnEnd: 0, 99 }, 100 `/usr/include/sys/stdio.h:39:1, /usr/include/AvailabilityInternal.h:21697:126`: { 101 File: "/usr/include/sys/stdio.h", 102 Line: 39, 103 Column: 1, 104 LineEnd: 0, 105 ColumnEnd: 0, 106 }, 107 `C:\usr\include\sys\stdio.h:39:1, C:\usr\include\AvailabilityInternal.h:21697:126`: { 108 File: `C:\usr\include\sys\stdio.h`, 109 Line: 39, 110 Column: 1, 111 LineEnd: 0, 112 ColumnEnd: 0, 113 }, 114 `C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\math.h:39:1, C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\AvailabilityInternal.h:21697:126`: { 115 File: `C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\math.h`, 116 Line: 39, 117 Column: 1, 118 LineEnd: 0, 119 ColumnEnd: 0, 120 }, 121 `col:1, /usr/include/sys/cdefs.h:351:63`: { 122 File: "", 123 Line: 0, 124 Column: 1, 125 LineEnd: 0, 126 ColumnEnd: 0, 127 }, 128 `col:1, C:\usr\include\sys\cdefs.h:351:63`: { 129 File: "", 130 Line: 0, 131 Column: 1, 132 LineEnd: 0, 133 ColumnEnd: 0, 134 }, 135 } 136 137 for testName, expectedPos := range tests { 138 t.Run(testName, func(t *testing.T) { 139 pos := NewPositionFromString(testName) 140 if pos.File != expectedPos.File { 141 t.Errorf("TestNewPositionFromString: File: %#v != %#v", pos.File, expectedPos.File) 142 } 143 if pos.Line != expectedPos.Line { 144 t.Errorf("TestNewPositionFromString: Line: %#v != %#v", pos.Line, expectedPos.Line) 145 } 146 if pos.Column != expectedPos.Column { 147 t.Errorf("TestNewPositionFromString: Column: %#v != %#v", pos.Column, expectedPos.Column) 148 } 149 }) 150 } 151 }