github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/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 }