@@ -83,6 +83,102 @@ func TestGetInterleavedRanking(t *testing.T) {
83
83
}
84
84
}
85
85
86
+ func TestGetCredit (t * testing.T ) {
87
+
88
+ cases := []struct {
89
+ rankingIdx int
90
+ itemId interface {}
91
+ idToPlacements []map [interface {}]int
92
+ creditLabel int
93
+ isSameRankingIdx bool
94
+ expected float64
95
+ }{
96
+ {
97
+ rankingIdx : 1 ,
98
+ itemId : "item1" ,
99
+ idToPlacements : []map [interface {}]int {
100
+ {"item1" : 1 , "item2" : 2 , "item3" : 3 },
101
+ {"item1" : 3 , "item2" : 1 , "item3" : 2 },
102
+ {"item1" : 2 , "item2" : 1 , "item3" : 3 },
103
+ },
104
+ creditLabel : 0 ,
105
+ isSameRankingIdx : false ,
106
+ expected : 0.3333333333333333 ,
107
+ },
108
+ {
109
+ rankingIdx : 1 ,
110
+ itemId : "item1" ,
111
+ idToPlacements : []map [interface {}]int {
112
+ {"item1" : 1 , "item2" : 2 , "item3" : 3 },
113
+ {"item1" : 3 , "item2" : 1 , "item3" : 2 },
114
+ {"item1" : 2 , "item2" : 1 , "item3" : 3 },
115
+ },
116
+ creditLabel : 1 ,
117
+ isSameRankingIdx : false ,
118
+ expected : - 2.0 ,
119
+ },
120
+ {
121
+ rankingIdx : 0 ,
122
+ itemId : "item2" ,
123
+ idToPlacements : []map [interface {}]int {
124
+ {"item1" : 1 , "item3" : 3 },
125
+ {"item1" : 3 , "item2" : 1 , "item3" : 2 },
126
+ {"item1" : 2 , "item2" : 1 , "item3" : 3 },
127
+ },
128
+ creditLabel : 1 ,
129
+ isSameRankingIdx : false ,
130
+ expected : - 3.0 ,
131
+ },
132
+ {
133
+ rankingIdx : 1 ,
134
+ itemId : "item2" ,
135
+ idToPlacements : []map [interface {}]int {
136
+ {"item1" : 1 , "item3" : 3 },
137
+ {"item1" : 3 , "item2" : 1 , "item3" : 2 },
138
+ {"item1" : 2 , "item2" : 1 , "item3" : 3 },
139
+ },
140
+ creditLabel : 1 ,
141
+ isSameRankingIdx : false ,
142
+ expected : 0.0 ,
143
+ },
144
+ {
145
+ rankingIdx : 0 ,
146
+ itemId : "item2" ,
147
+ idToPlacements : []map [interface {}]int {
148
+ {"item1" : 1 , "item2" : 2 , "item3" : 3 },
149
+ {"item1" : 3 , "item2" : 1 , "item3" : 2 },
150
+ {"item1" : 2 , "item2" : 1 , "item3" : 3 },
151
+ },
152
+ creditLabel : 3 ,
153
+ isSameRankingIdx : false ,
154
+ expected : 0 ,
155
+ },
156
+ {
157
+ rankingIdx : 0 ,
158
+ itemId : "item2" ,
159
+ idToPlacements : []map [interface {}]int {
160
+ {"item1" : 1 , "item2" : 2 , "item3" : 3 },
161
+ {"item1" : 3 , "item2" : 1 , "item3" : 2 },
162
+ {"item1" : 2 , "item2" : 1 , "item3" : 3 },
163
+ },
164
+ creditLabel : 3 ,
165
+ isSameRankingIdx : true ,
166
+ expected : 1 ,
167
+ },
168
+ }
169
+
170
+ for n , tc := range cases {
171
+ tcc := tc
172
+ o := & om.OptimizedMultiLeaving {
173
+ CreditLabel : tc .creditLabel ,
174
+ }
175
+ t .Run (fmt .Sprintf ("%d-th unit test" , n ), func (t * testing.T ) {
176
+ actual := o .GetCredit (tcc .rankingIdx , tcc .itemId , tcc .idToPlacements , tcc .creditLabel , tcc .isSameRankingIdx )
177
+ assert .Equal (t , tcc .expected , actual )
178
+ })
179
+ }
180
+ }
181
+
86
182
func TestPrefixConstraintSampling (t * testing.T ) {
87
183
o := & om.OptimizedMultiLeaving {}
88
184
0 commit comments