...

Text file src/golang.conradwood.net/go-easyops/utils/text_positionfinder_test.go~

Documentation: golang.conradwood.net/go-easyops/utils

     1package utils
     2
     3import (
     4	"bytes"
     5	"strings"
     6	"testing"
     7)
     8
     9func TestPosFinderLine2(t *testing.T) {
    10	testval := `
    11line1
    12line2
    13line3
    14line4
    15`
    16	new_testval := `
    17line1
    18line2
    19line2b
    20line3
    21line4
    22`
    23
    24	ct := []byte(testval)
    25	nct := []byte(new_testval)
    26	pf := NewPositionFinder(ct).(*positionFinder)
    27	x := pf.Content()
    28	if !bytes.Equal(x, ct) {
    29		t.Fatalf("content mismatch before any modification")
    30	}
    31	if !pf.FindLineContaining("line2") {
    32		t.Fatalf("failed to find pattern")
    33	}
    34	pf.AddLine("line2b")
    35	expect_content(t, nct, pf)
    36}
    37
    38func TestPosFinderLine0(t *testing.T) {
    39	testval := `
    40line1
    41line2
    42line3
    43line4
    44`
    45	new_testval := `
    46line0
    47line1
    48line2
    49line3
    50line4
    51`
    52
    53	ct := []byte(testval)
    54	nct := []byte(new_testval)
    55	pf := NewPositionFinder(ct).(*positionFinder)
    56	x := pf.Content()
    57	if !bytes.Equal(x, ct) {
    58		t.Fatalf("content mismatch before any modification")
    59	}
    60	pf.AddLine("line0")
    61	expect_content(t, nct, pf)
    62}
    63
    64func TestPosFinderLine5(t *testing.T) {
    65	testval := `
    66line1
    67line2
    68line3
    69line4
    70`
    71	new_testval := `
    72line1
    73line2
    74line3
    75line4
    76line4b
    77`
    78
    79	ct := []byte(testval)
    80	nct := []byte(new_testval)
    81	pf := NewPositionFinder(ct).(*positionFinder)
    82	x := pf.Content()
    83	if !bytes.Equal(x, ct) {
    84		t.Fatalf("content mismatch before any modification")
    85	}
    86	if !pf.FindLineContaining("line4") {
    87		t.Fatalf("failed to find pattern")
    88	}
    89	pf.AddLine("line4b")
    90	expect_content(t, nct, pf)
    91}
    92
    93func TestPosFinderMultiLine(t *testing.T) {
    94	testval := `
    95line1
    96line2
    97line3
    98line4
    99`
   100	new_testval := `
   101line1
   102line2
   103line2b
   104line3
   105line4
   106`
   107
   108	ct := []byte(testval)
   109	nct := []byte(new_testval)
   110	pf := NewPositionFinder(ct).(*positionFinder)
   111	x := pf.Content()
   112	if !bytes.Equal(x, ct) {
   113		t.Fatalf("content mismatch before any modification")
   114	}
   115	pf.FindLineContaining("line")
   116	pf.FindLineContaining("line")
   117	pf.AddLine("line2b")
   118	expect_content(t, nct, pf)
   119}
   120
   121func expect_content(t *testing.T, ct []byte, pf *positionFinder) {
   122	if bytes.Equal(ct, pf.Content()) {
   123		return
   124	}
   125	lines_expected := strings.Split(string(ct), "\n")
   126	lines_got := strings.Split(string(pf.Content()), "\n")
   127	max_lines := len(lines_expected)
   128	if len(lines_got) > max_lines {
   129		max_lines = len(lines_got)
   130	}
   131	ta := &Table{}
   132	ta.AddHeaders("got", "expected")
   133	for i := 0; i < max_lines; i++ {
   134		l1 := ""
   135		l2 := ""
   136		if i < len(lines_got) {
   137			l1 = lines_got[i]
   138		}
   139		if i < len(lines_expected) {
   140			l2 = lines_expected[i]
   141		}
   142		ta.AddString(l1)
   143		ta.AddString(l2)
   144		ta.NewRow()
   145	}
   146	t.Errorf("modification produced incorrect result")
   147	t.Logf("\n" + ta.ToPrettyString())
   148	//	t.Logf("New Content:\n%s\n", string(pf.Content()))
   149}

View as plain text