github.com/altipla-consulting/ravendb-go-client@v0.1.3/util_test.go (about)

     1  package ravendb
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/stretchr/testify/assert"
     6  	"io/ioutil"
     7  	"os"
     8  	"strings"
     9  	"testing"
    10  )
    11  
    12  func TestFirstNonNilString(t *testing.T) {
    13  	tests := [][]string{
    14  		{"", "", ""},
    15  		{"", "foo", "foo"},
    16  		{"foo", "", "foo"},
    17  		{"foo", "bar", "foo"},
    18  	}
    19  
    20  	strToPtr := func(s string) *string {
    21  		if s == "" {
    22  			return nil
    23  		}
    24  		return &s
    25  	}
    26  	for _, test := range tests {
    27  		s1 := strToPtr(test[0])
    28  		s2 := strToPtr(test[1])
    29  		got := firstNonNilString(s1, s2)
    30  		exp := strToPtr(test[2])
    31  		if got == nil || exp == nil {
    32  			assert.Nil(t, got)
    33  			assert.Nil(t, exp)
    34  		} else {
    35  			assert.Equal(t, *exp, *got)
    36  		}
    37  	}
    38  }
    39  
    40  func TestMin(t *testing.T) {
    41  	tests := [][]int{
    42  		{0, 0, 0},
    43  		{1, 0, 0},
    44  		{0, 1, 0},
    45  		{-1, 1, -1},
    46  		{-1, -3, -3},
    47  		{3, 8, 3},
    48  	}
    49  	for _, test := range tests {
    50  		got := min(test[0], test[1])
    51  		exp := test[2]
    52  		assert.Equal(t, exp, got, "test: %#v", test)
    53  	}
    54  }
    55  
    56  func TestFirstNonZero(t *testing.T) {
    57  	tests := [][]int{
    58  		{0, 0, 0},
    59  		{1, 0, 1},
    60  		{0, 1, 1},
    61  		{0, -81, -81},
    62  		{5, -11, 5},
    63  	}
    64  	for _, test := range tests {
    65  		got := firstNonZero(test[0], test[1])
    66  		exp := test[2]
    67  		assert.Equal(t, exp, got)
    68  	}
    69  }
    70  
    71  func TestBuilderWriteInt(t *testing.T) {
    72  	tests := []int{-123, -1, 0, 1, 123}
    73  	for _, test := range tests {
    74  		b := &strings.Builder{}
    75  		builderWriteInt(b, test)
    76  		got := b.String()
    77  		exp := fmt.Sprintf("%d", test)
    78  		assert.Equal(t, exp, got, "test: %d", test)
    79  	}
    80  }
    81  
    82  func TestPanicIf(t *testing.T) {
    83  	defer func() {
    84  		if err := recover(); err == nil {
    85  			assert.Fail(t, "expected to panic")
    86  		} else {
    87  			assert.Equal(t, err.(error).Error(), "should fail")
    88  		}
    89  	}()
    90  	panicIf(true, "should fail")
    91  }
    92  
    93  func TestDbg(t *testing.T) {
    94  	stdoutSaved := os.Stdout
    95  	verboseSaved := LogVerbose
    96  	path := "util_test_tmp.txt"
    97  	f, err := os.Create(path)
    98  	assert.NoError(t, err)
    99  	os.Stdout = f
   100  	LogVerbose = true
   101  
   102  	dbg("v: %d\n", 5)
   103  
   104  	os.Stdout = stdoutSaved
   105  	LogVerbose = verboseSaved
   106  	err = f.Close()
   107  	assert.NoError(t, err)
   108  
   109  	d, err := ioutil.ReadFile(path)
   110  	assert.NoError(t, err)
   111  	s := string(d)
   112  	assert.Equal(t, s, "v: 5\n")
   113  	_ = os.Remove(path)
   114  }