1 package funk
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 )
8
9 func TestMaxWithArrayNumericInput(t *testing.T) {
10
11 d1 := []int{8, 3, 4, 44, 0}
12 n1 := []int{}
13 d2 := []int8{3, 3, 5, 9, 1}
14 n2 := []int8{}
15 d3 := []int16{4, 5, 4, 33, 2}
16 n3 := []int16{}
17 d4 := []int32{5, 3, 21, 15, 3}
18 n4 := []int32{}
19 d5 := []int64{9, 3, 9, 1, 2}
20 n5 := []int64{}
21
22 r1 := MaxInt(d1)
23 r2 := MaxInt8(d2)
24 r3 := MaxInt16(d3)
25 r4 := MaxInt32(d4)
26 r5 := MaxInt64(d5)
27
28 assert.Equal(t, int(44), r1, "It should return the max value in array")
29 assert.Panics(t, func() { MaxInt(n1) }, "It should panic")
30 assert.Equal(t, int8(9), r2, "It should return the max value in array")
31 assert.Panics(t, func() { MaxInt8(n2) }, "It should panic")
32 assert.Equal(t, int16(33), r3, "It should return the max value in array")
33 assert.Panics(t, func() { MaxInt16(n3) }, "It should panic")
34 assert.Equal(t, int32(21), r4, "It should return the max value in array")
35 assert.Panics(t, func() { MaxInt32(n4) }, "It should panic")
36 assert.Equal(t, int64(9), r5, "It should return the max value in array")
37 assert.Panics(t, func() { MaxInt64(n5) }, "It should panic")
38
39 }
40
41 func TestMaxWithArrayFloatInput(t *testing.T) {
42
43 d1 := []float64{2, 38.3, 4, 4.4, 4}
44 n1 := []float64{}
45 d2 := []float32{2.9, 1.3, 4.23, 4.4, 7.7}
46 n2 := []float32{}
47
48 r1 := MaxFloat64(d1)
49 r2 := MaxFloat32(d2)
50
51 assert.Equal(t, float64(38.3), r1, "It should return the max value in array")
52 assert.Panics(t, func() { MaxFloat64(n1) }, "It should panic")
53 assert.Equal(t, float32(7.7), r2, "It should return the max value in array")
54 assert.Panics(t, func() { MaxFloat32(n2) }, "It should panic")
55 }
56
57 func TestMaxWithArrayInputWithStrings(t *testing.T) {
58
59 d1 := []string{"abc", "abd", "cbd"}
60 d2 := []string{"abc", "abd", "abe"}
61 d3 := []string{"abc", "foo", " "}
62 d4 := []string{"abc", "abc", "aaa"}
63 n1 := []string{}
64
65 r1 := MaxString(d1)
66 r2 := MaxString(d2)
67 r3 := MaxString(d3)
68 r4 := MaxString(d4)
69
70 assert.Equal(t, "cbd", r1, "It should print cbd because its first char is max in the list")
71 assert.Equal(t, "abe", r2, "It should print abe because its first different char is max in the list")
72 assert.Equal(t, "foo", r3, "It should print foo because its first different char is max in the list")
73 assert.Equal(t, "abc", r4, "It should print abc because its first different char is max in the list")
74 assert.Panics(t, func() { MaxString(n1) }, "It should panic")
75 }
76
View as plain text