github.com/exercism/v2-configlet@v3.9.2+incompatible/ui/printer_test.go (about) 1 package ui 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 var printTests = []struct { 11 in []interface{} 12 out string 13 desc string 14 }{ 15 { 16 []interface{}{"this is a message"}, 17 "-> this is a message\n", 18 "prints single string", 19 }, 20 { 21 []interface{}{"this", "is", "a", "message"}, 22 "-> this is a message\n", 23 "prints multiple strings", 24 }, 25 } 26 27 func TestPrint(t *testing.T) { 28 var buf bytes.Buffer 29 originalOut := Out 30 Out = &buf 31 defer func() { Out = originalOut }() 32 for _, tt := range printTests { 33 Print(tt.in...) 34 assert.Equal(t, tt.out, buf.String()) 35 buf.Reset() 36 } 37 } 38 39 var printErrorTests = []struct { 40 in []interface{} 41 out string 42 desc string 43 }{ 44 { 45 []interface{}{"this is an error"}, 46 "-> this is an error\n", 47 "prints single string error", 48 }, 49 { 50 []interface{}{"this", "is", "an", "error"}, 51 "-> this is an error\n", 52 "prints multiple strings error", 53 }, 54 } 55 56 func TestPrintError(t *testing.T) { 57 var buf bytes.Buffer 58 originalOut := Out 59 Out = &buf 60 defer func() { Out = originalOut }() 61 for _, tt := range printErrorTests { 62 Print(tt.in...) 63 assert.Equal(t, tt.out, buf.String()) 64 buf.Reset() 65 } 66 }