github.com/jmigpin/editor@v1.6.0/util/parseutil/util_test.go (about)

     1  package parseutil
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/jmigpin/editor/util/iout/iorw"
     7  )
     8  
     9  func TestDetectVar(t *testing.T) {
    10  	str := "aaaa$b $cd $e"
    11  	if !DetectEnvVar(str, "b") {
    12  		t.Fatal()
    13  	}
    14  	if !DetectEnvVar(str, "cd") {
    15  		t.Fatal()
    16  	}
    17  	if !DetectEnvVar(str, "e") {
    18  		t.Fatal()
    19  	}
    20  
    21  	str2 := "$a"
    22  	if !DetectEnvVar(str2, "a") {
    23  		t.Fatal()
    24  	}
    25  }
    26  
    27  func TestAddEscapes(t *testing.T) {
    28  	s := "a \\b"
    29  	s2 := AddEscapes(s, '\\', " \\")
    30  	if s2 != "a\\ \\\\b" {
    31  		t.Fatal()
    32  	}
    33  	s3 := RemoveEscapes(s2, '\\')
    34  	if s3 != s {
    35  		t.Fatal()
    36  	}
    37  }
    38  
    39  func TestIndexLineColumn1(t *testing.T) {
    40  	s := "123\n123\n123"
    41  	rd := iorw.NewStringReaderAt(s)
    42  	l, c, err := IndexLineColumn(rd, 0)
    43  	if err != nil {
    44  		t.Fatal(err)
    45  	}
    46  	i, err := LineColumnIndex(rd, l, c)
    47  	if err != nil {
    48  		t.Fatal(err)
    49  	}
    50  	if i != 0 {
    51  		t.Fatal(i, rd.Max())
    52  	}
    53  }
    54  func TestIndexLineColumn2(t *testing.T) {
    55  	s := "123\n123\n123"
    56  	rd := iorw.NewStringReaderAt(s)
    57  	l, c, err := IndexLineColumn(rd, rd.Max())
    58  	if err != nil {
    59  		t.Fatal(err)
    60  	}
    61  	i, err := LineColumnIndex(rd, l, c)
    62  	if err != nil {
    63  		t.Fatal(err)
    64  	}
    65  	if i != rd.Max() {
    66  		t.Fatal(i, rd.Max())
    67  	}
    68  }
    69  
    70  func TestLineColumnIndex1(t *testing.T) {
    71  	s := "123\n123\n123"
    72  	rw := iorw.NewStringReaderAt(s)
    73  	i, err := LineColumnIndex(rw, 3, 10)
    74  	if err != nil {
    75  		t.Fatal(err)
    76  	}
    77  	if i != 8 { // beginning of line
    78  		t.Fatal(i, rw.Max())
    79  	}
    80  }