...

Source file src/github.com/jedib0t/go-pretty/v6/text/wrap_test.go

Documentation: github.com/jedib0t/go-pretty/v6/text

     1  package text
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func ExampleWrapHard() {
    12  	str := `The quick brown fox jumped over the lazy dog.
    13  
    14  A big crocodile died empty-fanged, gulping horribly in jerking kicking little
    15  motions. Nonchalant old Peter Quinn ruthlessly shot the under-water vermin with
    16  Xavier yelling Zap!`
    17  	strWrapped := WrapHard(str, 30)
    18  	for idx, line := range strings.Split(strWrapped, "\n") {
    19  		fmt.Printf("Line #%02d: '%s'\n", idx+1, line)
    20  	}
    21  
    22  	// Output: Line #01: 'The quick brown fox jumped ove'
    23  	// Line #02: 'r the lazy dog.'
    24  	// Line #03: ''
    25  	// Line #04: 'A big crocodile died empty-fan'
    26  	// Line #05: 'ged, gulping horribly in jerki'
    27  	// Line #06: 'ng kicking little motions. Non'
    28  	// Line #07: 'chalant old Peter Quinn ruthle'
    29  	// Line #08: 'ssly shot the under-water verm'
    30  	// Line #09: 'in with Xavier yelling Zap!'
    31  }
    32  
    33  func TestWrapHard(t *testing.T) {
    34  	assert.Equal(t, "", WrapHard("Ghost", 0))
    35  	assert.Equal(t, "G\nh\no\ns\nt", WrapHard("Ghost", 1))
    36  	assert.Equal(t, "Gh\nos\nt", WrapHard("Ghost", 2))
    37  	assert.Equal(t, "Gho\nst", WrapHard("Ghost", 3))
    38  	assert.Equal(t, "Ghos\nt", WrapHard("Ghost", 4))
    39  	assert.Equal(t, "Ghost", WrapHard("Ghost", 5))
    40  	assert.Equal(t, "Ghost", WrapHard("Ghost", 6))
    41  	assert.Equal(t, "Jo\nn \nSn\now", WrapHard("Jon\nSnow", 2))
    42  	assert.Equal(t, "Jo\nn \nSn\now", WrapHard("Jon\nSnow\n", 2))
    43  	assert.Equal(t, "Jon\nSno\nw", WrapHard("Jon\nSnow\n", 3))
    44  	assert.Equal(t, "Jon i\ns a S\nnow", WrapHard("Jon is a Snow", 5))
    45  	assert.Equal(t, "\x1b[33mJon\x1b[0m\nSno\nw", WrapHard("\x1b[33mJon\x1b[0m\nSnow", 3))
    46  	assert.Equal(t, "\x1b[33mJon\x1b[0m\nSno\nw", WrapHard("\x1b[33mJon\x1b[0m\nSnow\n", 3))
    47  	assert.Equal(t, "\x1b[33mJon\x1b[0m\n\x1b[33mSno\x1b[0m\n\x1b[33mw\x1b[0m", WrapHard("\x1b[33mJon Snow\x1b[0m", 3))
    48  	assert.Equal(t, "\x1b[33mJon\x1b[0m\n\x1b[33mSno\x1b[0m\n\x1b[33mw\x1b[0m", WrapHard("\x1b[33mJon Snow\n", 3))
    49  	assert.Equal(t, "\x1b[33mJon\x1b[0m\n\x1b[33mSno\x1b[0m\n\x1b[33mw \x1b[0m", WrapHard("\x1b[33mJon Snow\n\x1b[0m", 3))
    50  
    51  	complexIn := "+---+------+-------+------+\n| 1 | Arya | Stark | 3000 |\n+---+------+-------+------+"
    52  	assert.Equal(t, complexIn, WrapHard(complexIn, 27))
    53  }
    54  
    55  func ExampleWrapSoft() {
    56  	str := `The quick brown fox jumped over the lazy dog.
    57  
    58  A big crocodile died empty-fanged, gulping horribly in jerking kicking little
    59  motions. Nonchalant old Peter Quinn ruthlessly shot the under-water vermin with
    60  Xavier yelling Zap!`
    61  	strWrapped := WrapSoft(str, 30)
    62  	for idx, line := range strings.Split(strWrapped, "\n") {
    63  		fmt.Printf("Line #%02d: '%s'\n", idx+1, line)
    64  	}
    65  
    66  	// Output: Line #01: 'The quick brown fox jumped    '
    67  	// Line #02: 'over the lazy dog.'
    68  	// Line #03: ''
    69  	// Line #04: 'A big crocodile died          '
    70  	// Line #05: 'empty-fanged, gulping horribly'
    71  	// Line #06: 'in jerking kicking little     '
    72  	// Line #07: 'motions. Nonchalant old Peter '
    73  	// Line #08: 'Quinn ruthlessly shot the     '
    74  	// Line #09: 'under-water vermin with Xavier'
    75  	// Line #10: 'yelling Zap!'
    76  }
    77  
    78  func TestWrapSoft(t *testing.T) {
    79  	assert.Equal(t, "", WrapSoft("Ghost", 0))
    80  	assert.Equal(t, "G\nh\no\ns\nt", WrapSoft("Ghost", 1))
    81  	assert.Equal(t, "Gh\nos\nt", WrapSoft("Ghost", 2))
    82  	assert.Equal(t, "Gho\nst", WrapSoft("Ghost", 3))
    83  	assert.Equal(t, "Ghos\nt", WrapSoft("Ghost", 4))
    84  	assert.Equal(t, "Ghost", WrapSoft("Ghost", 5))
    85  	assert.Equal(t, "Ghost", WrapSoft("Ghost", 6))
    86  	assert.Equal(t, "Jo\nn \nSn\now", WrapSoft("Jon\nSnow", 2))
    87  	assert.Equal(t, "Jo\nn \nSn\now", WrapSoft("Jon\nSnow\n", 2))
    88  	assert.Equal(t, "Jon\nSno\nw", WrapSoft("Jon\nSnow\n", 3))
    89  	assert.Equal(t, "Jon \nSnow", WrapSoft("Jon\nSnow", 4))
    90  	assert.Equal(t, "Jon \nSnow", WrapSoft("Jon\nSnow\n", 4))
    91  	assert.Equal(t, "Jon  \nis a \nSnow", WrapSoft("Jon is a Snow", 5))
    92  	assert.Equal(t, "\x1b[33mJon\x1b[0m\nSno\nw", WrapSoft("\x1b[33mJon\x1b[0m\nSnow", 3))
    93  	assert.Equal(t, "\x1b[33mJon\x1b[0m\nSno\nw", WrapSoft("\x1b[33mJon\x1b[0m\nSnow\n", 3))
    94  	assert.Equal(t, "\x1b[33mJon\x1b[0m\n\x1b[33mSno\x1b[0m\n\x1b[33mw\x1b[0m", WrapSoft("\x1b[33mJon Snow\x1b[0m", 3))
    95  	assert.Equal(t, "\x1b[33mJon\x1b[0m\n\x1b[33mSno\x1b[0m\n\x1b[33mw\x1b[0m", WrapSoft("\x1b[33mJon Snow\n", 3))
    96  	assert.Equal(t, "\x1b[33mJon\x1b[0m\n\x1b[33mSno\x1b[0m\n\x1b[33mw \x1b[0m", WrapSoft("\x1b[33mJon Snow\n\x1b[0m", 3))
    97  
    98  	complexIn := "+---+------+-------+------+\n| 1 | Arya | Stark | 3000 |\n+---+------+-------+------+"
    99  	assert.Equal(t, complexIn, WrapSoft(complexIn, 27))
   100  
   101  	assert.Equal(t, "\x1b[33mJon \x1b[0m\n\x1b[33mSnow\x1b[0m", WrapSoft("\x1b[33mJon Snow\x1b[0m", 4))
   102  	assert.Equal(t, "\x1b[33mJon \x1b[0m\n\x1b[33mSnow\x1b[0m\n\x1b[33m???\x1b[0m", WrapSoft("\x1b[33mJon Snow???\x1b[0m", 4))
   103  }
   104  
   105  func ExampleWrapText() {
   106  	str := `The quick brown fox jumped over the lazy dog.
   107  
   108  A big crocodile died empty-fanged, gulping horribly in jerking kicking little
   109  motions. Nonchalant old Peter Quinn ruthlessly shot the under-water vermin with
   110  Xavier yelling Zap!`
   111  	strWrapped := WrapText(str, 30)
   112  	for idx, line := range strings.Split(strWrapped, "\n") {
   113  		fmt.Printf("Line #%02d: '%s'\n", idx+1, line)
   114  	}
   115  
   116  	// Output: Line #01: 'The quick brown fox jumped ove'
   117  	// Line #02: 'r the lazy dog.'
   118  	// Line #03: ''
   119  	// Line #04: 'A big crocodile died empty-fan'
   120  	// Line #05: 'ged, gulping horribly in jerki'
   121  	// Line #06: 'ng kicking little'
   122  	// Line #07: 'motions. Nonchalant old Peter '
   123  	// Line #08: 'Quinn ruthlessly shot the unde'
   124  	// Line #09: 'r-water vermin with'
   125  	// Line #10: 'Xavier yelling Zap!'
   126  }
   127  
   128  func TestWrapText(t *testing.T) {
   129  	assert.Equal(t, "", WrapText("Ghost", 0))
   130  	assert.Equal(t, "G\nh\no\ns\nt", WrapText("Ghost", 1))
   131  	assert.Equal(t, "Gh\nos\nt", WrapText("Ghost", 2))
   132  	assert.Equal(t, "Gho\nst", WrapText("Ghost", 3))
   133  	assert.Equal(t, "Ghos\nt", WrapText("Ghost", 4))
   134  	assert.Equal(t, "Ghost", WrapText("Ghost", 5))
   135  	assert.Equal(t, "Ghost", WrapText("Ghost", 6))
   136  	assert.Equal(t, "Jo\nn\nSn\now", WrapText("Jon\nSnow", 2))
   137  	assert.Equal(t, "Jo\nn\nSn\now\n", WrapText("Jon\nSnow\n", 2))
   138  	assert.Equal(t, "Jon\nSno\nw\n", WrapText("Jon\nSnow\n", 3))
   139  	assert.Equal(t, "\x1b[33mJon\x1b[0m\nSno\nw", WrapText("\x1b[33mJon\x1b[0m\nSnow", 3))
   140  	assert.Equal(t, "\x1b[33mJon\x1b[0m\nSno\nw\n", WrapText("\x1b[33mJon\x1b[0m\nSnow\n", 3))
   141  	assert.Equal(t, "\x1b[33mJon\x1b[0m\n\x1b[33m Sn\x1b[0m\n\x1b[33mow\x1b[0m", WrapText("\x1b[33mJon Snow\x1b[0m", 3))
   142  	assert.Equal(t, "\x1b[33mJon\x1b[0m\n\x1b[33m Sn\x1b[0m\n\x1b[33mow\x1b[0m\n\x1b[33m\x1b[0m", WrapText("\x1b[33mJon Snow\n", 3))
   143  	assert.Equal(t, "\x1b[33mJon\x1b[0m\n\x1b[33m Sn\x1b[0m\n\x1b[33mow\x1b[0m\n\x1b[33m\x1b[0m", WrapText("\x1b[33mJon Snow\n\x1b[0m", 3))
   144  
   145  	complexIn := "+---+------+-------+------+\n| 1 | Arya | Stark | 3000 |\n+---+------+-------+------+"
   146  	assert.Equal(t, complexIn, WrapText(complexIn, 27))
   147  }
   148  

View as plain text