50 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
|  | package tools | ||
|  | 
 | ||
|  | import ( | ||
|  | 	"bytes" | ||
|  | 	"encoding/json" | ||
|  | 	"errors" | ||
|  | 	"testing" | ||
|  | 	"time" | ||
|  | 
 | ||
|  | 	"github.com/stretchr/testify/assert" | ||
|  | ) | ||
|  | 
 | ||
|  | func TestWriteBuffer(t *testing.T) { | ||
|  | 	when := time.Now() | ||
|  | 	tests := []struct { | ||
|  | 		name  string | ||
|  | 		value any | ||
|  | 		out   string | ||
|  | 		err   error | ||
|  | 	}{ | ||
|  | 		{"nil", nil, "", nil}, | ||
|  | 		{"string", "hi", "hi", nil}, | ||
|  | 		{"bytes", []byte{104, 105}, "hi", nil}, | ||
|  | 		{"byte", byte(104), "h", nil}, | ||
|  | 		{"rune", 'h', "h", nil}, | ||
|  | 		{"int", 42, "42", nil}, | ||
|  | 		{"int64", int64(42), "42", nil}, | ||
|  | 		{"float", 42.13, "42.13", nil}, | ||
|  | 		{"bool", false, "false", nil}, | ||
|  | 		{"json.Number", json.Number("42.13"), "42.13", nil}, | ||
|  | 		{"json.RawMessage", json.RawMessage("{}"), "{}", nil}, | ||
|  | 		{"time", when, when.Format(time.RFC3339), nil}, | ||
|  | 		{"struct", struct{}{}, "", errors.New("Unsupported type struct {}")}, | ||
|  | 	} | ||
|  | 
 | ||
|  | 	for _, tt := range tests { | ||
|  | 		t.Run(tt.name, getWriteTestRunner(tt.value, tt.out, tt.err)) | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | func getWriteTestRunner(value any, out string, err error) func(*testing.T) { | ||
|  | 	return func(t *testing.T) { | ||
|  | 		buff := &bytes.Buffer{} | ||
|  | 		n, er := WriteValue(buff, value) | ||
|  | 		assert.Equal(t, len(out), n) | ||
|  | 		assert.Equal(t, err, er) | ||
|  | 		assert.Equal(t, out, buff.String()) | ||
|  | 	} | ||
|  | } |