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  }