-
Notifications
You must be signed in to change notification settings - Fork 0
/
profit_test.go
133 lines (112 loc) · 2.44 KB
/
profit_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package profit
import (
"testing"
"github.com/stretchr/testify/assert"
)
// TestProfitable tests that the trade data
// returns a set of profitable trades
func TestProfitable(t *testing.T) {
i := []int{
10, 7, 5, 8, 11, 9,
}
profitableTrades := [][]int{
[]int{10, 11},
[]int{7, 8},
[]int{7, 11},
[]int{7, 9},
[]int{5, 8},
[]int{5, 11},
[]int{5, 9},
[]int{8, 11},
[]int{8, 9},
}
assert.Equal(t, profitableTrades, ProfitableTrades(i), "The slices should match")
}
// BenchmarkProfitable1 benchmark tests for Profitable
func BenchmarkProfitable1(b *testing.B) {
i := []int{
10, 7, 5, 8, 11, 9,
}
ProfitableTrades(i)
}
// BenchmarkProfitable2 benchmark tests for Profitable with some more data
func BenchmarkProfitable2(b *testing.B) {
i := []int{
10, 7, 5, 8, 11, 9, 10, 7, 5, 8, 11, 9,
}
ProfitableTrades(i)
}
func TestMaxProfit(t *testing.T) {
profitable := [][]int{
[]int{10, 11},
[]int{7, 8},
[]int{7, 11},
[]int{7, 9},
[]int{5, 8},
[]int{5, 11},
[]int{5, 9},
[]int{8, 11},
[]int{8, 9},
}
assert.Equal(t, 11-5, MaxProfit(profitable), "Max profit should be 11-5")
}
// TestMaxProfitFromProfitable tests MaxProfit using the Profitable data
func TestMaxProfitFromProfitable(t *testing.T) {
i := []int{
10, 7, 5, 8, 11, 9,
}
assert.Equal(t, 11-5, MaxProfit(ProfitableTrades(i)), "Max profit should be 11-5")
}
// BenchmarkMaxProfit1 benchmark tests for MaxProfit
func BenchmarkMaxProfit1(b *testing.B) {
i := [][]int{
[]int{10, 11},
[]int{7, 8},
[]int{7, 11},
[]int{7, 9},
[]int{5, 8},
[]int{5, 11},
[]int{5, 9},
[]int{8, 11},
[]int{8, 9},
}
MaxProfit(i)
}
// BenchmarkMaxProfit1 benchmark tests for MaxProfit with more data
func BenchmarkMaxProfit2(b *testing.B) {
i := [][]int{
[]int{10, 11},
[]int{7, 8},
[]int{7, 11},
[]int{7, 9},
[]int{5, 8},
[]int{5, 11},
[]int{5, 9},
[]int{8, 11},
[]int{8, 9},
[]int{10, 11},
[]int{7, 8},
[]int{7, 11},
[]int{7, 9},
[]int{5, 8},
[]int{5, 11},
[]int{5, 9},
[]int{8, 11},
[]int{8, 9},
}
MaxProfit(i)
}
// BenchmarkMaxProfitWithProfitable benchmark tests for MaxProfit using Profitable input
func BenchmarkMaxProfitWithProfitable(b *testing.B) {
i := []int{
10, 7, 5, 8, 11, 9,
}
MaxProfit(ProfitableTrades(i))
}
// TestTotalMaxProfit tests the total profit on all possible trades
func TestTotalMaxProfit(t *testing.T) {
i := []int{
10, 7, 5, 8, 11, 9,
}
assert.Equal(t, 25, TotalMaxProfit(ProfitableTrades(i)))
}