|
4 | 4 | "encoding/json" |
5 | 5 | "fmt" |
6 | 6 | "math/big" |
| 7 | + "strconv" |
7 | 8 | "testing" |
8 | 9 |
|
9 | 10 | it "github.com/iden3/go-circuits/v2/testing" |
@@ -137,60 +138,96 @@ func TestLinkedMultiQueryInputs_PrepareInputs_Error(t *testing.T) { |
137 | 138 | } |
138 | 139 |
|
139 | 140 | func TestLinkedMultiQueryPubSignals_CircuitUnmarshal(t *testing.T) { |
140 | | - out := new(LinkedMultiQueryPubSignals) |
141 | | - err := out.PubSignalsUnmarshal([]byte( |
142 | | - `[ |
143 | | - "443", |
144 | | - "1", |
| 141 | + outs := map[int][]string{ |
| 142 | + 3: { |
| 143 | + "11587660915189382633314527098062647837126752531205087409048618395969242885016", |
| 144 | + "0", |
| 145 | + "0", |
| 146 | + "0", |
| 147 | + "0", |
| 148 | + "9458417390459068300741864705379630488534450155484493792325907355745201035449", |
| 149 | + "10864698602219511323750171112812294233505545576258213541845435681330532958075", |
| 150 | + "5365138871441717895206514697230448654236988235704905467582456422975445794731", |
| 151 | + }, |
| 152 | + 5: { |
| 153 | + "20336008450539684768013573494073798243349685857640613070314041678185349736439", |
145 | 154 | "1", |
146 | | - "2", |
147 | | - "3", |
148 | | - "4", |
149 | | - "5", |
150 | 155 | "0", |
151 | 156 | "0", |
152 | 157 | "0", |
153 | 158 | "0", |
154 | 159 | "0", |
155 | | - "100", |
156 | | - "200", |
157 | | - "300", |
158 | | - "400", |
159 | | - "500", |
| 160 | + "3326382892536126749483088946048689911243394580824744244053752370464747528203", |
| 161 | + "9907132056133666096701539062450765284880813426582692863734448403438789333698", |
| 162 | + "13362042977965885903820557513534065802896288300017199700677633721405805677442", |
| 163 | + "13362042977965885903820557513534065802896288300017199700677633721405805677442", |
| 164 | + "13362042977965885903820557513534065802896288300017199700677633721405805677442", |
| 165 | + }, |
| 166 | + 10: { |
| 167 | + "11587660915189382633314527098062647837126752531205087409048618395969242885016", |
160 | 168 | "0", |
161 | 169 | "0", |
162 | 170 | "0", |
163 | 171 | "0", |
164 | | - "0" |
165 | | - ]`)) |
166 | | - require.NoError(t, err) |
167 | | - |
168 | | - operatorOutput := make([]*big.Int, 10) |
169 | | - circuitQueryHash := make([]*big.Int, 10) |
170 | | - valueArrSize := make([]int, 10) |
171 | | - for i := 1; i <= 10; i++ { |
172 | | - indx := i - 1 |
173 | | - operatorOutput[indx] = big.NewInt((int64(i))) |
174 | | - circuitQueryHash[indx] = big.NewInt(int64(i * 100)) |
175 | | - valueArrSize[indx] = 1 |
176 | | - if i > 5 { |
177 | | - operatorOutput[indx] = big.NewInt(0) |
178 | | - circuitQueryHash[indx] = big.NewInt(0) |
179 | | - valueArrSize[indx] = 0 |
180 | | - } |
| 172 | + "0", |
| 173 | + "0", |
| 174 | + "0", |
| 175 | + "0", |
| 176 | + "0", |
| 177 | + "0", |
| 178 | + "0", |
| 179 | + "9458417390459068300741864705379630488534450155484493792325907355745201035449", |
| 180 | + "10864698602219511323750171112812294233505545576258213541845435681330532958075", |
| 181 | + "5365138871441717895206514697230448654236988235704905467582456422975445794731", |
| 182 | + "6552534440600411908158043655342660449140617599402291128616319085888035740680", |
| 183 | + "6552534440600411908158043655342660449140617599402291128616319085888035740680", |
| 184 | + "6552534440600411908158043655342660449140617599402291128616319085888035740680", |
| 185 | + "6552534440600411908158043655342660449140617599402291128616319085888035740680", |
| 186 | + "6552534440600411908158043655342660449140617599402291128616319085888035740680", |
| 187 | + "6552534440600411908158043655342660449140617599402291128616319085888035740680", |
| 188 | + "6552534440600411908158043655342660449140617599402291128616319085888035740680", |
| 189 | + }, |
181 | 190 | } |
182 | 191 |
|
183 | | - exp := LinkedMultiQueryPubSignals{ |
184 | | - LinkID: big.NewInt(443), |
185 | | - Merklized: 1, |
186 | | - OperatorOutput: operatorOutput, |
187 | | - CircuitQueryHash: circuitQueryHash, |
| 192 | + for queriesCount, out := range outs { |
| 193 | + t.Run(fmt.Sprintf("LinkedMultiQueryPubSignals_CircuitUnmarshal_%d", queriesCount), func(t *testing.T) { |
| 194 | + ao := &LinkedMultiQueryPubSignals{ |
| 195 | + QueryLength: queriesCount, |
| 196 | + } |
| 197 | + |
| 198 | + jsonData, err := json.Marshal(out) |
| 199 | + require.NoError(t, err) |
| 200 | + |
| 201 | + err = ao.PubSignalsUnmarshal(jsonData) |
| 202 | + require.NoError(t, err) |
| 203 | + |
| 204 | + // Check linkID (out[0]) |
| 205 | + expectedLinkID, ok := big.NewInt(0).SetString(out[0], 10) |
| 206 | + require.True(t, ok, "failed to parse linkID") |
| 207 | + require.Equal(t, expectedLinkID, ao.LinkID) |
| 208 | + |
| 209 | + // Check merklized (out[1]) |
| 210 | + expectedMerklized, err := strconv.Atoi(out[1]) |
| 211 | + require.NoError(t, err) |
| 212 | + require.Equal(t, expectedMerklized, ao.Merklized) |
| 213 | + |
| 214 | + // Check operatorOutput (out.slice(2, 2 + queriesCount)) |
| 215 | + expectedOperatorOutput := make([]*big.Int, queriesCount) |
| 216 | + for i := 0; i < queriesCount; i++ { |
| 217 | + val, ok := big.NewInt(0).SetString(out[2+i], 10) |
| 218 | + require.True(t, ok, fmt.Sprintf("failed to parse operatorOutput[%d]", i)) |
| 219 | + expectedOperatorOutput[i] = val |
| 220 | + } |
| 221 | + require.Equal(t, expectedOperatorOutput, ao.OperatorOutput) |
| 222 | + |
| 223 | + // Check circuitQueryHash (out.slice(2 + queriesCount, 2 + queriesCount * 2)) |
| 224 | + expectedCircuitQueryHash := make([]*big.Int, queriesCount) |
| 225 | + for i := 0; i < queriesCount; i++ { |
| 226 | + val, ok := big.NewInt(0).SetString(out[2+queriesCount+i], 10) |
| 227 | + require.True(t, ok, fmt.Sprintf("failed to parse circuitQueryHash[%d]", i)) |
| 228 | + expectedCircuitQueryHash[i] = val |
| 229 | + } |
| 230 | + require.Equal(t, expectedCircuitQueryHash, ao.CircuitQueryHash) |
| 231 | + }) |
188 | 232 | } |
189 | | - |
190 | | - jsonOut, err := json.Marshal(out) |
191 | | - require.NoError(t, err) |
192 | | - jsonExp, err := json.Marshal(exp) |
193 | | - require.NoError(t, err) |
194 | | - |
195 | | - require.JSONEq(t, string(jsonExp), string(jsonOut)) |
196 | 233 | } |
0 commit comments