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  }