github.com/mithrandie/csvq@v1.18.1/lib/doc/writer_test.go (about) 1 package doc 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/mithrandie/csvq/lib/file" 8 "github.com/mithrandie/csvq/lib/option" 9 ) 10 11 func TestWriter_String(t *testing.T) { 12 environment, _ := option.NewEnvironment(context.Background(), file.DefaultWaitTimeout, file.DefaultRetryDelay) 13 14 flags, _ := option.NewFlags(environment) 15 palette, _ := option.NewPalette(environment) 16 screenWidth := 75 17 18 w := NewWriter(screenWidth, flags, palette) 19 w.MaxWidth = 20 20 21 w.Write("aaa") 22 w.BeginBlock() 23 w.NewLine() 24 w.Write("bbb") 25 w.WriteSpaces(4) 26 w.Write("bbb") 27 w.BeginBlock() 28 w.NewLine() 29 w.Write("ccc") 30 w.BeginBlock() 31 w.NewLine() 32 w.Write("ddd") 33 w.EndBlock() 34 w.NewLine() 35 w.Write("ccc") 36 w.ClearBlock() 37 w.NewLine() 38 w.Write("aaa") 39 w.BeginBlock() 40 w.NewLine() 41 w.Write("bbbbbbbbbb") 42 w.Write(", ") 43 w.Write("bbbbbbbbbb") 44 w.Write(", ") 45 w.Write("bbbbbbbbbbbbbbbbbbbbbbbb") 46 w.WriteWithoutLineBreak(", ") 47 w.ClearBlock() 48 w.NewLine() 49 w.Write("aaa") 50 w.BeginBlock() 51 w.NewLine() 52 w.Write("key: ") 53 w.BeginSubBlock() 54 w.Write("bbbbbbb") 55 w.WriteWithoutLineBreak(", ") 56 w.Write("bbbbbbb") 57 w.EndSubBlock() 58 w.NewLine() 59 w.Write("bbbbbbb") 60 61 expect := "" + 62 " aaa\n" + 63 " bbb bbb\n" + 64 " ccc\n" + 65 " ddd\n" + 66 " ccc\n" + 67 " aaa\n" + 68 " bbbbbbbbbb, \n" + 69 " bbbbbbbbbb, \n" + 70 " bbbbbbbbbbbbbbbbbbbbbbbb, \n" + 71 " aaa\n" + 72 " key: bbbbbbb, \n" + 73 " bbbbbbb\n" + 74 " bbbbbbb" 75 result := w.String() 76 77 if result != expect { 78 t.Errorf("result = %s, want %s", result, expect) 79 } 80 81 w = NewWriter(screenWidth, flags, palette) 82 w.MaxWidth = 20 83 84 w.Title1 = "title" 85 86 w.Write("aaa") 87 w.BeginBlock() 88 w.NewLine() 89 w.Write("bbbbbbbbbb") 90 w.Write(", ") 91 w.Write("bbbbbbbbbb") 92 w.Write(", ") 93 w.Write("bbbbbbbbbbbbbbbbbbbbbbbbb") 94 w.WriteWithoutLineBreak(", ") 95 w.NewLine() 96 w.WriteWithAutoLineBreak("aaaaa bbbbb ccccc\n > ddddd \n eeeee") 97 w.NewLine() 98 w.WriteWithAutoLineBreak("```\naaaaa bbbbb\n```\nccccc") 99 100 expect = "" + 101 " title\n" + 102 "--------------------\n" + 103 " aaa\n" + 104 " bbbbbbbbbb, \n" + 105 " bbbbbbbbbb, \n" + 106 " bbbbbbbbbbbbbbbbbbbbbbbbb, \n" + 107 " aaaaa bbbbb\n" + 108 " ccccc\n" + 109 " ddddd\n" + 110 " eeeee\n" + 111 " aaaaa bbbbb\n" + 112 " ccccc" + 113 "" 114 result = w.String() 115 116 if result != expect { 117 t.Errorf("result = %s, want %s", result, expect) 118 } 119 120 w = NewWriter(screenWidth, flags, palette) 121 w.MaxWidth = 20 122 123 w.Title1 = "title" 124 125 w.Write("aaa") 126 127 expect = "" + 128 " title\n" + 129 "-------\n" + 130 " aaa" 131 result = w.String() 132 133 if result != expect { 134 t.Errorf("result = %s, want %s", result, expect) 135 } 136 137 palette.Enable() 138 139 w = NewWriter(screenWidth, flags, palette) 140 w.MaxWidth = 20 141 142 w.Title1 = "title1" 143 w.Title2 = "title2" 144 w.Title2Effect = option.IdentifierEffect 145 146 w.Write("aaa") 147 w.BeginBlock() 148 w.NewLine() 149 w.WriteColor("bbbbbbbbbb", option.StringEffect) 150 w.Write(", ") 151 w.Write("bbbbbbbbbb") 152 153 expect = "" + 154 " title1 \x1b[36;1mtitle2\x1b[0m\n" + 155 "------------------\n" + 156 " aaa\n" + 157 " \x1b[32mbbbbbbbbbb\x1b[0m, \n" + 158 " bbbbbbbbbb" 159 result = w.String() 160 161 if result != expect { 162 t.Errorf("result = %s, want %s", result, expect) 163 } 164 }