1
2
3 package test
4
5 import "testing"
6
7 type IntegerConstraint interface {
8 int | uint | int8 | uint8 | int16 | uint16 | int32 | uint32 | int64 | uint64
9 }
10
11 type TestCase[T IntegerConstraint] struct {
12 cmp1, cmp2 func(a, b T) bool
13 combine func(x, y bool) bool
14 targetFunc func(a, b, c, d T) bool
15 cmp1Expr, cmp2Expr, logicalExpr string
16 }
17
18 type BoundaryValues[T IntegerConstraint] struct {
19 base T
20 variants [3]T
21 }
22
23 func generateTestCases[T IntegerConstraint]() []TestCase[T] {
24 return []TestCase[T]{
25 {
26 cmp1: func(a, b T) bool { return a == b },
27 cmp2: func(a, b T) bool { return a == b },
28 combine: func(x, y bool) bool { return (x) && (y) },
29 targetFunc: func(a, b, c, d T) bool {
30 if (a == b) && (c == d) {
31 return true
32 }
33 return false
34 },
35 cmp1Expr: "a == b",
36 cmp2Expr: "c == d",
37 logicalExpr: "(a == b) && (c == d)",
38 },
39 {
40 cmp1: func(a, b T) bool { return a == b },
41 cmp2: func(a, b T) bool { return a == b },
42 combine: func(x, y bool) bool { return (x) && !(y) },
43 targetFunc: func(a, b, c, d T) bool {
44 if (a == b) && !(c == d) {
45 return true
46 }
47 return false
48 },
49 cmp1Expr: "a == b",
50 cmp2Expr: "c == d",
51 logicalExpr: "(a == b) && !(c == d)",
52 },
53 {
54 cmp1: func(a, b T) bool { return a == b },
55 cmp2: func(a, b T) bool { return a == b },
56 combine: func(x, y bool) bool { return !(x) && (y) },
57 targetFunc: func(a, b, c, d T) bool {
58 if !(a == b) && (c == d) {
59 return true
60 }
61 return false
62 },
63 cmp1Expr: "a == b",
64 cmp2Expr: "c == d",
65 logicalExpr: "!(a == b) && (c == d)",
66 },
67 {
68 cmp1: func(a, b T) bool { return a == b },
69 cmp2: func(a, b T) bool { return a == b },
70 combine: func(x, y bool) bool { return !(x) && !(y) },
71 targetFunc: func(a, b, c, d T) bool {
72 if !(a == b) && !(c == d) {
73 return true
74 }
75 return false
76 },
77 cmp1Expr: "a == b",
78 cmp2Expr: "c == d",
79 logicalExpr: "!(a == b) && !(c == d)",
80 },
81 {
82 cmp1: func(a, b T) bool { return a == b },
83 cmp2: func(a, b T) bool { return a == b },
84 combine: func(x, y bool) bool { return (x) || (y) },
85 targetFunc: func(a, b, c, d T) bool {
86 if (a == b) || (c == d) {
87 return true
88 }
89 return false
90 },
91 cmp1Expr: "a == b",
92 cmp2Expr: "c == d",
93 logicalExpr: "(a == b) || (c == d)",
94 },
95 {
96 cmp1: func(a, b T) bool { return a == b },
97 cmp2: func(a, b T) bool { return a == b },
98 combine: func(x, y bool) bool { return (x) || !(y) },
99 targetFunc: func(a, b, c, d T) bool {
100 if (a == b) || !(c == d) {
101 return true
102 }
103 return false
104 },
105 cmp1Expr: "a == b",
106 cmp2Expr: "c == d",
107 logicalExpr: "(a == b) || !(c == d)",
108 },
109 {
110 cmp1: func(a, b T) bool { return a == b },
111 cmp2: func(a, b T) bool { return a == b },
112 combine: func(x, y bool) bool { return !(x) || (y) },
113 targetFunc: func(a, b, c, d T) bool {
114 if !(a == b) || (c == d) {
115 return true
116 }
117 return false
118 },
119 cmp1Expr: "a == b",
120 cmp2Expr: "c == d",
121 logicalExpr: "!(a == b) || (c == d)",
122 },
123 {
124 cmp1: func(a, b T) bool { return a == b },
125 cmp2: func(a, b T) bool { return a == b },
126 combine: func(x, y bool) bool { return !(x) || !(y) },
127 targetFunc: func(a, b, c, d T) bool {
128 if !(a == b) || !(c == d) {
129 return true
130 }
131 return false
132 },
133 cmp1Expr: "a == b",
134 cmp2Expr: "c == d",
135 logicalExpr: "!(a == b) || !(c == d)",
136 },
137 {
138 cmp1: func(a, b T) bool { return a == b },
139 cmp2: func(a, b T) bool { return a <= b },
140 combine: func(x, y bool) bool { return (x) && (y) },
141 targetFunc: func(a, b, c, d T) bool {
142 if (a == b) && (c <= d) {
143 return true
144 }
145 return false
146 },
147 cmp1Expr: "a == b",
148 cmp2Expr: "c <= d",
149 logicalExpr: "(a == b) && (c <= d)",
150 },
151 {
152 cmp1: func(a, b T) bool { return a == b },
153 cmp2: func(a, b T) bool { return a <= b },
154 combine: func(x, y bool) bool { return (x) && !(y) },
155 targetFunc: func(a, b, c, d T) bool {
156 if (a == b) && !(c <= d) {
157 return true
158 }
159 return false
160 },
161 cmp1Expr: "a == b",
162 cmp2Expr: "c <= d",
163 logicalExpr: "(a == b) && !(c <= d)",
164 },
165 {
166 cmp1: func(a, b T) bool { return a == b },
167 cmp2: func(a, b T) bool { return a <= b },
168 combine: func(x, y bool) bool { return !(x) && (y) },
169 targetFunc: func(a, b, c, d T) bool {
170 if !(a == b) && (c <= d) {
171 return true
172 }
173 return false
174 },
175 cmp1Expr: "a == b",
176 cmp2Expr: "c <= d",
177 logicalExpr: "!(a == b) && (c <= d)",
178 },
179 {
180 cmp1: func(a, b T) bool { return a == b },
181 cmp2: func(a, b T) bool { return a <= b },
182 combine: func(x, y bool) bool { return !(x) && !(y) },
183 targetFunc: func(a, b, c, d T) bool {
184 if !(a == b) && !(c <= d) {
185 return true
186 }
187 return false
188 },
189 cmp1Expr: "a == b",
190 cmp2Expr: "c <= d",
191 logicalExpr: "!(a == b) && !(c <= d)",
192 },
193 {
194 cmp1: func(a, b T) bool { return a == b },
195 cmp2: func(a, b T) bool { return a <= b },
196 combine: func(x, y bool) bool { return (x) || (y) },
197 targetFunc: func(a, b, c, d T) bool {
198 if (a == b) || (c <= d) {
199 return true
200 }
201 return false
202 },
203 cmp1Expr: "a == b",
204 cmp2Expr: "c <= d",
205 logicalExpr: "(a == b) || (c <= d)",
206 },
207 {
208 cmp1: func(a, b T) bool { return a == b },
209 cmp2: func(a, b T) bool { return a <= b },
210 combine: func(x, y bool) bool { return (x) || !(y) },
211 targetFunc: func(a, b, c, d T) bool {
212 if (a == b) || !(c <= d) {
213 return true
214 }
215 return false
216 },
217 cmp1Expr: "a == b",
218 cmp2Expr: "c <= d",
219 logicalExpr: "(a == b) || !(c <= d)",
220 },
221 {
222 cmp1: func(a, b T) bool { return a == b },
223 cmp2: func(a, b T) bool { return a <= b },
224 combine: func(x, y bool) bool { return !(x) || (y) },
225 targetFunc: func(a, b, c, d T) bool {
226 if !(a == b) || (c <= d) {
227 return true
228 }
229 return false
230 },
231 cmp1Expr: "a == b",
232 cmp2Expr: "c <= d",
233 logicalExpr: "!(a == b) || (c <= d)",
234 },
235 {
236 cmp1: func(a, b T) bool { return a == b },
237 cmp2: func(a, b T) bool { return a <= b },
238 combine: func(x, y bool) bool { return !(x) || !(y) },
239 targetFunc: func(a, b, c, d T) bool {
240 if !(a == b) || !(c <= d) {
241 return true
242 }
243 return false
244 },
245 cmp1Expr: "a == b",
246 cmp2Expr: "c <= d",
247 logicalExpr: "!(a == b) || !(c <= d)",
248 },
249 {
250 cmp1: func(a, b T) bool { return a == b },
251 cmp2: func(a, b T) bool { return a < b },
252 combine: func(x, y bool) bool { return (x) && (y) },
253 targetFunc: func(a, b, c, d T) bool {
254 if (a == b) && (c < d) {
255 return true
256 }
257 return false
258 },
259 cmp1Expr: "a == b",
260 cmp2Expr: "c < d",
261 logicalExpr: "(a == b) && (c < d)",
262 },
263 {
264 cmp1: func(a, b T) bool { return a == b },
265 cmp2: func(a, b T) bool { return a < b },
266 combine: func(x, y bool) bool { return (x) && !(y) },
267 targetFunc: func(a, b, c, d T) bool {
268 if (a == b) && !(c < d) {
269 return true
270 }
271 return false
272 },
273 cmp1Expr: "a == b",
274 cmp2Expr: "c < d",
275 logicalExpr: "(a == b) && !(c < d)",
276 },
277 {
278 cmp1: func(a, b T) bool { return a == b },
279 cmp2: func(a, b T) bool { return a < b },
280 combine: func(x, y bool) bool { return !(x) && (y) },
281 targetFunc: func(a, b, c, d T) bool {
282 if !(a == b) && (c < d) {
283 return true
284 }
285 return false
286 },
287 cmp1Expr: "a == b",
288 cmp2Expr: "c < d",
289 logicalExpr: "!(a == b) && (c < d)",
290 },
291 {
292 cmp1: func(a, b T) bool { return a == b },
293 cmp2: func(a, b T) bool { return a < b },
294 combine: func(x, y bool) bool { return !(x) && !(y) },
295 targetFunc: func(a, b, c, d T) bool {
296 if !(a == b) && !(c < d) {
297 return true
298 }
299 return false
300 },
301 cmp1Expr: "a == b",
302 cmp2Expr: "c < d",
303 logicalExpr: "!(a == b) && !(c < d)",
304 },
305 {
306 cmp1: func(a, b T) bool { return a == b },
307 cmp2: func(a, b T) bool { return a < b },
308 combine: func(x, y bool) bool { return (x) || (y) },
309 targetFunc: func(a, b, c, d T) bool {
310 if (a == b) || (c < d) {
311 return true
312 }
313 return false
314 },
315 cmp1Expr: "a == b",
316 cmp2Expr: "c < d",
317 logicalExpr: "(a == b) || (c < d)",
318 },
319 {
320 cmp1: func(a, b T) bool { return a == b },
321 cmp2: func(a, b T) bool { return a < b },
322 combine: func(x, y bool) bool { return (x) || !(y) },
323 targetFunc: func(a, b, c, d T) bool {
324 if (a == b) || !(c < d) {
325 return true
326 }
327 return false
328 },
329 cmp1Expr: "a == b",
330 cmp2Expr: "c < d",
331 logicalExpr: "(a == b) || !(c < d)",
332 },
333 {
334 cmp1: func(a, b T) bool { return a == b },
335 cmp2: func(a, b T) bool { return a < b },
336 combine: func(x, y bool) bool { return !(x) || (y) },
337 targetFunc: func(a, b, c, d T) bool {
338 if !(a == b) || (c < d) {
339 return true
340 }
341 return false
342 },
343 cmp1Expr: "a == b",
344 cmp2Expr: "c < d",
345 logicalExpr: "!(a == b) || (c < d)",
346 },
347 {
348 cmp1: func(a, b T) bool { return a == b },
349 cmp2: func(a, b T) bool { return a < b },
350 combine: func(x, y bool) bool { return !(x) || !(y) },
351 targetFunc: func(a, b, c, d T) bool {
352 if !(a == b) || !(c < d) {
353 return true
354 }
355 return false
356 },
357 cmp1Expr: "a == b",
358 cmp2Expr: "c < d",
359 logicalExpr: "!(a == b) || !(c < d)",
360 },
361 {
362 cmp1: func(a, b T) bool { return a == b },
363 cmp2: func(a, b T) bool { return a != b },
364 combine: func(x, y bool) bool { return (x) && (y) },
365 targetFunc: func(a, b, c, d T) bool {
366 if (a == b) && (c != d) {
367 return true
368 }
369 return false
370 },
371 cmp1Expr: "a == b",
372 cmp2Expr: "c != d",
373 logicalExpr: "(a == b) && (c != d)",
374 },
375 {
376 cmp1: func(a, b T) bool { return a == b },
377 cmp2: func(a, b T) bool { return a != b },
378 combine: func(x, y bool) bool { return (x) && !(y) },
379 targetFunc: func(a, b, c, d T) bool {
380 if (a == b) && !(c != d) {
381 return true
382 }
383 return false
384 },
385 cmp1Expr: "a == b",
386 cmp2Expr: "c != d",
387 logicalExpr: "(a == b) && !(c != d)",
388 },
389 {
390 cmp1: func(a, b T) bool { return a == b },
391 cmp2: func(a, b T) bool { return a != b },
392 combine: func(x, y bool) bool { return !(x) && (y) },
393 targetFunc: func(a, b, c, d T) bool {
394 if !(a == b) && (c != d) {
395 return true
396 }
397 return false
398 },
399 cmp1Expr: "a == b",
400 cmp2Expr: "c != d",
401 logicalExpr: "!(a == b) && (c != d)",
402 },
403 {
404 cmp1: func(a, b T) bool { return a == b },
405 cmp2: func(a, b T) bool { return a != b },
406 combine: func(x, y bool) bool { return !(x) && !(y) },
407 targetFunc: func(a, b, c, d T) bool {
408 if !(a == b) && !(c != d) {
409 return true
410 }
411 return false
412 },
413 cmp1Expr: "a == b",
414 cmp2Expr: "c != d",
415 logicalExpr: "!(a == b) && !(c != d)",
416 },
417 {
418 cmp1: func(a, b T) bool { return a == b },
419 cmp2: func(a, b T) bool { return a != b },
420 combine: func(x, y bool) bool { return (x) || (y) },
421 targetFunc: func(a, b, c, d T) bool {
422 if (a == b) || (c != d) {
423 return true
424 }
425 return false
426 },
427 cmp1Expr: "a == b",
428 cmp2Expr: "c != d",
429 logicalExpr: "(a == b) || (c != d)",
430 },
431 {
432 cmp1: func(a, b T) bool { return a == b },
433 cmp2: func(a, b T) bool { return a != b },
434 combine: func(x, y bool) bool { return (x) || !(y) },
435 targetFunc: func(a, b, c, d T) bool {
436 if (a == b) || !(c != d) {
437 return true
438 }
439 return false
440 },
441 cmp1Expr: "a == b",
442 cmp2Expr: "c != d",
443 logicalExpr: "(a == b) || !(c != d)",
444 },
445 {
446 cmp1: func(a, b T) bool { return a == b },
447 cmp2: func(a, b T) bool { return a != b },
448 combine: func(x, y bool) bool { return !(x) || (y) },
449 targetFunc: func(a, b, c, d T) bool {
450 if !(a == b) || (c != d) {
451 return true
452 }
453 return false
454 },
455 cmp1Expr: "a == b",
456 cmp2Expr: "c != d",
457 logicalExpr: "!(a == b) || (c != d)",
458 },
459 {
460 cmp1: func(a, b T) bool { return a == b },
461 cmp2: func(a, b T) bool { return a != b },
462 combine: func(x, y bool) bool { return !(x) || !(y) },
463 targetFunc: func(a, b, c, d T) bool {
464 if !(a == b) || !(c != d) {
465 return true
466 }
467 return false
468 },
469 cmp1Expr: "a == b",
470 cmp2Expr: "c != d",
471 logicalExpr: "!(a == b) || !(c != d)",
472 },
473 {
474 cmp1: func(a, b T) bool { return a == b },
475 cmp2: func(a, b T) bool { return a >= b },
476 combine: func(x, y bool) bool { return (x) && (y) },
477 targetFunc: func(a, b, c, d T) bool {
478 if (a == b) && (c >= d) {
479 return true
480 }
481 return false
482 },
483 cmp1Expr: "a == b",
484 cmp2Expr: "c >= d",
485 logicalExpr: "(a == b) && (c >= d)",
486 },
487 {
488 cmp1: func(a, b T) bool { return a == b },
489 cmp2: func(a, b T) bool { return a >= b },
490 combine: func(x, y bool) bool { return (x) && !(y) },
491 targetFunc: func(a, b, c, d T) bool {
492 if (a == b) && !(c >= d) {
493 return true
494 }
495 return false
496 },
497 cmp1Expr: "a == b",
498 cmp2Expr: "c >= d",
499 logicalExpr: "(a == b) && !(c >= d)",
500 },
501 {
502 cmp1: func(a, b T) bool { return a == b },
503 cmp2: func(a, b T) bool { return a >= b },
504 combine: func(x, y bool) bool { return !(x) && (y) },
505 targetFunc: func(a, b, c, d T) bool {
506 if !(a == b) && (c >= d) {
507 return true
508 }
509 return false
510 },
511 cmp1Expr: "a == b",
512 cmp2Expr: "c >= d",
513 logicalExpr: "!(a == b) && (c >= d)",
514 },
515 {
516 cmp1: func(a, b T) bool { return a == b },
517 cmp2: func(a, b T) bool { return a >= b },
518 combine: func(x, y bool) bool { return !(x) && !(y) },
519 targetFunc: func(a, b, c, d T) bool {
520 if !(a == b) && !(c >= d) {
521 return true
522 }
523 return false
524 },
525 cmp1Expr: "a == b",
526 cmp2Expr: "c >= d",
527 logicalExpr: "!(a == b) && !(c >= d)",
528 },
529 {
530 cmp1: func(a, b T) bool { return a == b },
531 cmp2: func(a, b T) bool { return a >= b },
532 combine: func(x, y bool) bool { return (x) || (y) },
533 targetFunc: func(a, b, c, d T) bool {
534 if (a == b) || (c >= d) {
535 return true
536 }
537 return false
538 },
539 cmp1Expr: "a == b",
540 cmp2Expr: "c >= d",
541 logicalExpr: "(a == b) || (c >= d)",
542 },
543 {
544 cmp1: func(a, b T) bool { return a == b },
545 cmp2: func(a, b T) bool { return a >= b },
546 combine: func(x, y bool) bool { return (x) || !(y) },
547 targetFunc: func(a, b, c, d T) bool {
548 if (a == b) || !(c >= d) {
549 return true
550 }
551 return false
552 },
553 cmp1Expr: "a == b",
554 cmp2Expr: "c >= d",
555 logicalExpr: "(a == b) || !(c >= d)",
556 },
557 {
558 cmp1: func(a, b T) bool { return a == b },
559 cmp2: func(a, b T) bool { return a >= b },
560 combine: func(x, y bool) bool { return !(x) || (y) },
561 targetFunc: func(a, b, c, d T) bool {
562 if !(a == b) || (c >= d) {
563 return true
564 }
565 return false
566 },
567 cmp1Expr: "a == b",
568 cmp2Expr: "c >= d",
569 logicalExpr: "!(a == b) || (c >= d)",
570 },
571 {
572 cmp1: func(a, b T) bool { return a == b },
573 cmp2: func(a, b T) bool { return a >= b },
574 combine: func(x, y bool) bool { return !(x) || !(y) },
575 targetFunc: func(a, b, c, d T) bool {
576 if !(a == b) || !(c >= d) {
577 return true
578 }
579 return false
580 },
581 cmp1Expr: "a == b",
582 cmp2Expr: "c >= d",
583 logicalExpr: "!(a == b) || !(c >= d)",
584 },
585 {
586 cmp1: func(a, b T) bool { return a == b },
587 cmp2: func(a, b T) bool { return a > b },
588 combine: func(x, y bool) bool { return (x) && (y) },
589 targetFunc: func(a, b, c, d T) bool {
590 if (a == b) && (c > d) {
591 return true
592 }
593 return false
594 },
595 cmp1Expr: "a == b",
596 cmp2Expr: "c > d",
597 logicalExpr: "(a == b) && (c > d)",
598 },
599 {
600 cmp1: func(a, b T) bool { return a == b },
601 cmp2: func(a, b T) bool { return a > b },
602 combine: func(x, y bool) bool { return (x) && !(y) },
603 targetFunc: func(a, b, c, d T) bool {
604 if (a == b) && !(c > d) {
605 return true
606 }
607 return false
608 },
609 cmp1Expr: "a == b",
610 cmp2Expr: "c > d",
611 logicalExpr: "(a == b) && !(c > d)",
612 },
613 {
614 cmp1: func(a, b T) bool { return a == b },
615 cmp2: func(a, b T) bool { return a > b },
616 combine: func(x, y bool) bool { return !(x) && (y) },
617 targetFunc: func(a, b, c, d T) bool {
618 if !(a == b) && (c > d) {
619 return true
620 }
621 return false
622 },
623 cmp1Expr: "a == b",
624 cmp2Expr: "c > d",
625 logicalExpr: "!(a == b) && (c > d)",
626 },
627 {
628 cmp1: func(a, b T) bool { return a == b },
629 cmp2: func(a, b T) bool { return a > b },
630 combine: func(x, y bool) bool { return !(x) && !(y) },
631 targetFunc: func(a, b, c, d T) bool {
632 if !(a == b) && !(c > d) {
633 return true
634 }
635 return false
636 },
637 cmp1Expr: "a == b",
638 cmp2Expr: "c > d",
639 logicalExpr: "!(a == b) && !(c > d)",
640 },
641 {
642 cmp1: func(a, b T) bool { return a == b },
643 cmp2: func(a, b T) bool { return a > b },
644 combine: func(x, y bool) bool { return (x) || (y) },
645 targetFunc: func(a, b, c, d T) bool {
646 if (a == b) || (c > d) {
647 return true
648 }
649 return false
650 },
651 cmp1Expr: "a == b",
652 cmp2Expr: "c > d",
653 logicalExpr: "(a == b) || (c > d)",
654 },
655 {
656 cmp1: func(a, b T) bool { return a == b },
657 cmp2: func(a, b T) bool { return a > b },
658 combine: func(x, y bool) bool { return (x) || !(y) },
659 targetFunc: func(a, b, c, d T) bool {
660 if (a == b) || !(c > d) {
661 return true
662 }
663 return false
664 },
665 cmp1Expr: "a == b",
666 cmp2Expr: "c > d",
667 logicalExpr: "(a == b) || !(c > d)",
668 },
669 {
670 cmp1: func(a, b T) bool { return a == b },
671 cmp2: func(a, b T) bool { return a > b },
672 combine: func(x, y bool) bool { return !(x) || (y) },
673 targetFunc: func(a, b, c, d T) bool {
674 if !(a == b) || (c > d) {
675 return true
676 }
677 return false
678 },
679 cmp1Expr: "a == b",
680 cmp2Expr: "c > d",
681 logicalExpr: "!(a == b) || (c > d)",
682 },
683 {
684 cmp1: func(a, b T) bool { return a == b },
685 cmp2: func(a, b T) bool { return a > b },
686 combine: func(x, y bool) bool { return !(x) || !(y) },
687 targetFunc: func(a, b, c, d T) bool {
688 if !(a == b) || !(c > d) {
689 return true
690 }
691 return false
692 },
693 cmp1Expr: "a == b",
694 cmp2Expr: "c > d",
695 logicalExpr: "!(a == b) || !(c > d)",
696 },
697 {
698 cmp1: func(a, b T) bool { return a <= b },
699 cmp2: func(a, b T) bool { return a == b },
700 combine: func(x, y bool) bool { return (x) && (y) },
701 targetFunc: func(a, b, c, d T) bool {
702 if (a <= b) && (c == d) {
703 return true
704 }
705 return false
706 },
707 cmp1Expr: "a <= b",
708 cmp2Expr: "c == d",
709 logicalExpr: "(a <= b) && (c == d)",
710 },
711 {
712 cmp1: func(a, b T) bool { return a <= b },
713 cmp2: func(a, b T) bool { return a == b },
714 combine: func(x, y bool) bool { return (x) && !(y) },
715 targetFunc: func(a, b, c, d T) bool {
716 if (a <= b) && !(c == d) {
717 return true
718 }
719 return false
720 },
721 cmp1Expr: "a <= b",
722 cmp2Expr: "c == d",
723 logicalExpr: "(a <= b) && !(c == d)",
724 },
725 {
726 cmp1: func(a, b T) bool { return a <= b },
727 cmp2: func(a, b T) bool { return a == b },
728 combine: func(x, y bool) bool { return !(x) && (y) },
729 targetFunc: func(a, b, c, d T) bool {
730 if !(a <= b) && (c == d) {
731 return true
732 }
733 return false
734 },
735 cmp1Expr: "a <= b",
736 cmp2Expr: "c == d",
737 logicalExpr: "!(a <= b) && (c == d)",
738 },
739 {
740 cmp1: func(a, b T) bool { return a <= b },
741 cmp2: func(a, b T) bool { return a == b },
742 combine: func(x, y bool) bool { return !(x) && !(y) },
743 targetFunc: func(a, b, c, d T) bool {
744 if !(a <= b) && !(c == d) {
745 return true
746 }
747 return false
748 },
749 cmp1Expr: "a <= b",
750 cmp2Expr: "c == d",
751 logicalExpr: "!(a <= b) && !(c == d)",
752 },
753 {
754 cmp1: func(a, b T) bool { return a <= b },
755 cmp2: func(a, b T) bool { return a == b },
756 combine: func(x, y bool) bool { return (x) || (y) },
757 targetFunc: func(a, b, c, d T) bool {
758 if (a <= b) || (c == d) {
759 return true
760 }
761 return false
762 },
763 cmp1Expr: "a <= b",
764 cmp2Expr: "c == d",
765 logicalExpr: "(a <= b) || (c == d)",
766 },
767 {
768 cmp1: func(a, b T) bool { return a <= b },
769 cmp2: func(a, b T) bool { return a == b },
770 combine: func(x, y bool) bool { return (x) || !(y) },
771 targetFunc: func(a, b, c, d T) bool {
772 if (a <= b) || !(c == d) {
773 return true
774 }
775 return false
776 },
777 cmp1Expr: "a <= b",
778 cmp2Expr: "c == d",
779 logicalExpr: "(a <= b) || !(c == d)",
780 },
781 {
782 cmp1: func(a, b T) bool { return a <= b },
783 cmp2: func(a, b T) bool { return a == b },
784 combine: func(x, y bool) bool { return !(x) || (y) },
785 targetFunc: func(a, b, c, d T) bool {
786 if !(a <= b) || (c == d) {
787 return true
788 }
789 return false
790 },
791 cmp1Expr: "a <= b",
792 cmp2Expr: "c == d",
793 logicalExpr: "!(a <= b) || (c == d)",
794 },
795 {
796 cmp1: func(a, b T) bool { return a <= b },
797 cmp2: func(a, b T) bool { return a == b },
798 combine: func(x, y bool) bool { return !(x) || !(y) },
799 targetFunc: func(a, b, c, d T) bool {
800 if !(a <= b) || !(c == d) {
801 return true
802 }
803 return false
804 },
805 cmp1Expr: "a <= b",
806 cmp2Expr: "c == d",
807 logicalExpr: "!(a <= b) || !(c == d)",
808 },
809 {
810 cmp1: func(a, b T) bool { return a <= b },
811 cmp2: func(a, b T) bool { return a <= b },
812 combine: func(x, y bool) bool { return (x) && (y) },
813 targetFunc: func(a, b, c, d T) bool {
814 if (a <= b) && (c <= d) {
815 return true
816 }
817 return false
818 },
819 cmp1Expr: "a <= b",
820 cmp2Expr: "c <= d",
821 logicalExpr: "(a <= b) && (c <= d)",
822 },
823 {
824 cmp1: func(a, b T) bool { return a <= b },
825 cmp2: func(a, b T) bool { return a <= b },
826 combine: func(x, y bool) bool { return (x) && !(y) },
827 targetFunc: func(a, b, c, d T) bool {
828 if (a <= b) && !(c <= d) {
829 return true
830 }
831 return false
832 },
833 cmp1Expr: "a <= b",
834 cmp2Expr: "c <= d",
835 logicalExpr: "(a <= b) && !(c <= d)",
836 },
837 {
838 cmp1: func(a, b T) bool { return a <= b },
839 cmp2: func(a, b T) bool { return a <= b },
840 combine: func(x, y bool) bool { return !(x) && (y) },
841 targetFunc: func(a, b, c, d T) bool {
842 if !(a <= b) && (c <= d) {
843 return true
844 }
845 return false
846 },
847 cmp1Expr: "a <= b",
848 cmp2Expr: "c <= d",
849 logicalExpr: "!(a <= b) && (c <= d)",
850 },
851 {
852 cmp1: func(a, b T) bool { return a <= b },
853 cmp2: func(a, b T) bool { return a <= b },
854 combine: func(x, y bool) bool { return !(x) && !(y) },
855 targetFunc: func(a, b, c, d T) bool {
856 if !(a <= b) && !(c <= d) {
857 return true
858 }
859 return false
860 },
861 cmp1Expr: "a <= b",
862 cmp2Expr: "c <= d",
863 logicalExpr: "!(a <= b) && !(c <= d)",
864 },
865 {
866 cmp1: func(a, b T) bool { return a <= b },
867 cmp2: func(a, b T) bool { return a <= b },
868 combine: func(x, y bool) bool { return (x) || (y) },
869 targetFunc: func(a, b, c, d T) bool {
870 if (a <= b) || (c <= d) {
871 return true
872 }
873 return false
874 },
875 cmp1Expr: "a <= b",
876 cmp2Expr: "c <= d",
877 logicalExpr: "(a <= b) || (c <= d)",
878 },
879 {
880 cmp1: func(a, b T) bool { return a <= b },
881 cmp2: func(a, b T) bool { return a <= b },
882 combine: func(x, y bool) bool { return (x) || !(y) },
883 targetFunc: func(a, b, c, d T) bool {
884 if (a <= b) || !(c <= d) {
885 return true
886 }
887 return false
888 },
889 cmp1Expr: "a <= b",
890 cmp2Expr: "c <= d",
891 logicalExpr: "(a <= b) || !(c <= d)",
892 },
893 {
894 cmp1: func(a, b T) bool { return a <= b },
895 cmp2: func(a, b T) bool { return a <= b },
896 combine: func(x, y bool) bool { return !(x) || (y) },
897 targetFunc: func(a, b, c, d T) bool {
898 if !(a <= b) || (c <= d) {
899 return true
900 }
901 return false
902 },
903 cmp1Expr: "a <= b",
904 cmp2Expr: "c <= d",
905 logicalExpr: "!(a <= b) || (c <= d)",
906 },
907 {
908 cmp1: func(a, b T) bool { return a <= b },
909 cmp2: func(a, b T) bool { return a <= b },
910 combine: func(x, y bool) bool { return !(x) || !(y) },
911 targetFunc: func(a, b, c, d T) bool {
912 if !(a <= b) || !(c <= d) {
913 return true
914 }
915 return false
916 },
917 cmp1Expr: "a <= b",
918 cmp2Expr: "c <= d",
919 logicalExpr: "!(a <= b) || !(c <= d)",
920 },
921 {
922 cmp1: func(a, b T) bool { return a <= b },
923 cmp2: func(a, b T) bool { return a < b },
924 combine: func(x, y bool) bool { return (x) && (y) },
925 targetFunc: func(a, b, c, d T) bool {
926 if (a <= b) && (c < d) {
927 return true
928 }
929 return false
930 },
931 cmp1Expr: "a <= b",
932 cmp2Expr: "c < d",
933 logicalExpr: "(a <= b) && (c < d)",
934 },
935 {
936 cmp1: func(a, b T) bool { return a <= b },
937 cmp2: func(a, b T) bool { return a < b },
938 combine: func(x, y bool) bool { return (x) && !(y) },
939 targetFunc: func(a, b, c, d T) bool {
940 if (a <= b) && !(c < d) {
941 return true
942 }
943 return false
944 },
945 cmp1Expr: "a <= b",
946 cmp2Expr: "c < d",
947 logicalExpr: "(a <= b) && !(c < d)",
948 },
949 {
950 cmp1: func(a, b T) bool { return a <= b },
951 cmp2: func(a, b T) bool { return a < b },
952 combine: func(x, y bool) bool { return !(x) && (y) },
953 targetFunc: func(a, b, c, d T) bool {
954 if !(a <= b) && (c < d) {
955 return true
956 }
957 return false
958 },
959 cmp1Expr: "a <= b",
960 cmp2Expr: "c < d",
961 logicalExpr: "!(a <= b) && (c < d)",
962 },
963 {
964 cmp1: func(a, b T) bool { return a <= b },
965 cmp2: func(a, b T) bool { return a < b },
966 combine: func(x, y bool) bool { return !(x) && !(y) },
967 targetFunc: func(a, b, c, d T) bool {
968 if !(a <= b) && !(c < d) {
969 return true
970 }
971 return false
972 },
973 cmp1Expr: "a <= b",
974 cmp2Expr: "c < d",
975 logicalExpr: "!(a <= b) && !(c < d)",
976 },
977 {
978 cmp1: func(a, b T) bool { return a <= b },
979 cmp2: func(a, b T) bool { return a < b },
980 combine: func(x, y bool) bool { return (x) || (y) },
981 targetFunc: func(a, b, c, d T) bool {
982 if (a <= b) || (c < d) {
983 return true
984 }
985 return false
986 },
987 cmp1Expr: "a <= b",
988 cmp2Expr: "c < d",
989 logicalExpr: "(a <= b) || (c < d)",
990 },
991 {
992 cmp1: func(a, b T) bool { return a <= b },
993 cmp2: func(a, b T) bool { return a < b },
994 combine: func(x, y bool) bool { return (x) || !(y) },
995 targetFunc: func(a, b, c, d T) bool {
996 if (a <= b) || !(c < d) {
997 return true
998 }
999 return false
1000 },
1001 cmp1Expr: "a <= b",
1002 cmp2Expr: "c < d",
1003 logicalExpr: "(a <= b) || !(c < d)",
1004 },
1005 {
1006 cmp1: func(a, b T) bool { return a <= b },
1007 cmp2: func(a, b T) bool { return a < b },
1008 combine: func(x, y bool) bool { return !(x) || (y) },
1009 targetFunc: func(a, b, c, d T) bool {
1010 if !(a <= b) || (c < d) {
1011 return true
1012 }
1013 return false
1014 },
1015 cmp1Expr: "a <= b",
1016 cmp2Expr: "c < d",
1017 logicalExpr: "!(a <= b) || (c < d)",
1018 },
1019 {
1020 cmp1: func(a, b T) bool { return a <= b },
1021 cmp2: func(a, b T) bool { return a < b },
1022 combine: func(x, y bool) bool { return !(x) || !(y) },
1023 targetFunc: func(a, b, c, d T) bool {
1024 if !(a <= b) || !(c < d) {
1025 return true
1026 }
1027 return false
1028 },
1029 cmp1Expr: "a <= b",
1030 cmp2Expr: "c < d",
1031 logicalExpr: "!(a <= b) || !(c < d)",
1032 },
1033 {
1034 cmp1: func(a, b T) bool { return a <= b },
1035 cmp2: func(a, b T) bool { return a != b },
1036 combine: func(x, y bool) bool { return (x) && (y) },
1037 targetFunc: func(a, b, c, d T) bool {
1038 if (a <= b) && (c != d) {
1039 return true
1040 }
1041 return false
1042 },
1043 cmp1Expr: "a <= b",
1044 cmp2Expr: "c != d",
1045 logicalExpr: "(a <= b) && (c != d)",
1046 },
1047 {
1048 cmp1: func(a, b T) bool { return a <= b },
1049 cmp2: func(a, b T) bool { return a != b },
1050 combine: func(x, y bool) bool { return (x) && !(y) },
1051 targetFunc: func(a, b, c, d T) bool {
1052 if (a <= b) && !(c != d) {
1053 return true
1054 }
1055 return false
1056 },
1057 cmp1Expr: "a <= b",
1058 cmp2Expr: "c != d",
1059 logicalExpr: "(a <= b) && !(c != d)",
1060 },
1061 {
1062 cmp1: func(a, b T) bool { return a <= b },
1063 cmp2: func(a, b T) bool { return a != b },
1064 combine: func(x, y bool) bool { return !(x) && (y) },
1065 targetFunc: func(a, b, c, d T) bool {
1066 if !(a <= b) && (c != d) {
1067 return true
1068 }
1069 return false
1070 },
1071 cmp1Expr: "a <= b",
1072 cmp2Expr: "c != d",
1073 logicalExpr: "!(a <= b) && (c != d)",
1074 },
1075 {
1076 cmp1: func(a, b T) bool { return a <= b },
1077 cmp2: func(a, b T) bool { return a != b },
1078 combine: func(x, y bool) bool { return !(x) && !(y) },
1079 targetFunc: func(a, b, c, d T) bool {
1080 if !(a <= b) && !(c != d) {
1081 return true
1082 }
1083 return false
1084 },
1085 cmp1Expr: "a <= b",
1086 cmp2Expr: "c != d",
1087 logicalExpr: "!(a <= b) && !(c != d)",
1088 },
1089 {
1090 cmp1: func(a, b T) bool { return a <= b },
1091 cmp2: func(a, b T) bool { return a != b },
1092 combine: func(x, y bool) bool { return (x) || (y) },
1093 targetFunc: func(a, b, c, d T) bool {
1094 if (a <= b) || (c != d) {
1095 return true
1096 }
1097 return false
1098 },
1099 cmp1Expr: "a <= b",
1100 cmp2Expr: "c != d",
1101 logicalExpr: "(a <= b) || (c != d)",
1102 },
1103 {
1104 cmp1: func(a, b T) bool { return a <= b },
1105 cmp2: func(a, b T) bool { return a != b },
1106 combine: func(x, y bool) bool { return (x) || !(y) },
1107 targetFunc: func(a, b, c, d T) bool {
1108 if (a <= b) || !(c != d) {
1109 return true
1110 }
1111 return false
1112 },
1113 cmp1Expr: "a <= b",
1114 cmp2Expr: "c != d",
1115 logicalExpr: "(a <= b) || !(c != d)",
1116 },
1117 {
1118 cmp1: func(a, b T) bool { return a <= b },
1119 cmp2: func(a, b T) bool { return a != b },
1120 combine: func(x, y bool) bool { return !(x) || (y) },
1121 targetFunc: func(a, b, c, d T) bool {
1122 if !(a <= b) || (c != d) {
1123 return true
1124 }
1125 return false
1126 },
1127 cmp1Expr: "a <= b",
1128 cmp2Expr: "c != d",
1129 logicalExpr: "!(a <= b) || (c != d)",
1130 },
1131 {
1132 cmp1: func(a, b T) bool { return a <= b },
1133 cmp2: func(a, b T) bool { return a != b },
1134 combine: func(x, y bool) bool { return !(x) || !(y) },
1135 targetFunc: func(a, b, c, d T) bool {
1136 if !(a <= b) || !(c != d) {
1137 return true
1138 }
1139 return false
1140 },
1141 cmp1Expr: "a <= b",
1142 cmp2Expr: "c != d",
1143 logicalExpr: "!(a <= b) || !(c != d)",
1144 },
1145 {
1146 cmp1: func(a, b T) bool { return a <= b },
1147 cmp2: func(a, b T) bool { return a >= b },
1148 combine: func(x, y bool) bool { return (x) && (y) },
1149 targetFunc: func(a, b, c, d T) bool {
1150 if (a <= b) && (c >= d) {
1151 return true
1152 }
1153 return false
1154 },
1155 cmp1Expr: "a <= b",
1156 cmp2Expr: "c >= d",
1157 logicalExpr: "(a <= b) && (c >= d)",
1158 },
1159 {
1160 cmp1: func(a, b T) bool { return a <= b },
1161 cmp2: func(a, b T) bool { return a >= b },
1162 combine: func(x, y bool) bool { return (x) && !(y) },
1163 targetFunc: func(a, b, c, d T) bool {
1164 if (a <= b) && !(c >= d) {
1165 return true
1166 }
1167 return false
1168 },
1169 cmp1Expr: "a <= b",
1170 cmp2Expr: "c >= d",
1171 logicalExpr: "(a <= b) && !(c >= d)",
1172 },
1173 {
1174 cmp1: func(a, b T) bool { return a <= b },
1175 cmp2: func(a, b T) bool { return a >= b },
1176 combine: func(x, y bool) bool { return !(x) && (y) },
1177 targetFunc: func(a, b, c, d T) bool {
1178 if !(a <= b) && (c >= d) {
1179 return true
1180 }
1181 return false
1182 },
1183 cmp1Expr: "a <= b",
1184 cmp2Expr: "c >= d",
1185 logicalExpr: "!(a <= b) && (c >= d)",
1186 },
1187 {
1188 cmp1: func(a, b T) bool { return a <= b },
1189 cmp2: func(a, b T) bool { return a >= b },
1190 combine: func(x, y bool) bool { return !(x) && !(y) },
1191 targetFunc: func(a, b, c, d T) bool {
1192 if !(a <= b) && !(c >= d) {
1193 return true
1194 }
1195 return false
1196 },
1197 cmp1Expr: "a <= b",
1198 cmp2Expr: "c >= d",
1199 logicalExpr: "!(a <= b) && !(c >= d)",
1200 },
1201 {
1202 cmp1: func(a, b T) bool { return a <= b },
1203 cmp2: func(a, b T) bool { return a >= b },
1204 combine: func(x, y bool) bool { return (x) || (y) },
1205 targetFunc: func(a, b, c, d T) bool {
1206 if (a <= b) || (c >= d) {
1207 return true
1208 }
1209 return false
1210 },
1211 cmp1Expr: "a <= b",
1212 cmp2Expr: "c >= d",
1213 logicalExpr: "(a <= b) || (c >= d)",
1214 },
1215 {
1216 cmp1: func(a, b T) bool { return a <= b },
1217 cmp2: func(a, b T) bool { return a >= b },
1218 combine: func(x, y bool) bool { return (x) || !(y) },
1219 targetFunc: func(a, b, c, d T) bool {
1220 if (a <= b) || !(c >= d) {
1221 return true
1222 }
1223 return false
1224 },
1225 cmp1Expr: "a <= b",
1226 cmp2Expr: "c >= d",
1227 logicalExpr: "(a <= b) || !(c >= d)",
1228 },
1229 {
1230 cmp1: func(a, b T) bool { return a <= b },
1231 cmp2: func(a, b T) bool { return a >= b },
1232 combine: func(x, y bool) bool { return !(x) || (y) },
1233 targetFunc: func(a, b, c, d T) bool {
1234 if !(a <= b) || (c >= d) {
1235 return true
1236 }
1237 return false
1238 },
1239 cmp1Expr: "a <= b",
1240 cmp2Expr: "c >= d",
1241 logicalExpr: "!(a <= b) || (c >= d)",
1242 },
1243 {
1244 cmp1: func(a, b T) bool { return a <= b },
1245 cmp2: func(a, b T) bool { return a >= b },
1246 combine: func(x, y bool) bool { return !(x) || !(y) },
1247 targetFunc: func(a, b, c, d T) bool {
1248 if !(a <= b) || !(c >= d) {
1249 return true
1250 }
1251 return false
1252 },
1253 cmp1Expr: "a <= b",
1254 cmp2Expr: "c >= d",
1255 logicalExpr: "!(a <= b) || !(c >= d)",
1256 },
1257 {
1258 cmp1: func(a, b T) bool { return a <= b },
1259 cmp2: func(a, b T) bool { return a > b },
1260 combine: func(x, y bool) bool { return (x) && (y) },
1261 targetFunc: func(a, b, c, d T) bool {
1262 if (a <= b) && (c > d) {
1263 return true
1264 }
1265 return false
1266 },
1267 cmp1Expr: "a <= b",
1268 cmp2Expr: "c > d",
1269 logicalExpr: "(a <= b) && (c > d)",
1270 },
1271 {
1272 cmp1: func(a, b T) bool { return a <= b },
1273 cmp2: func(a, b T) bool { return a > b },
1274 combine: func(x, y bool) bool { return (x) && !(y) },
1275 targetFunc: func(a, b, c, d T) bool {
1276 if (a <= b) && !(c > d) {
1277 return true
1278 }
1279 return false
1280 },
1281 cmp1Expr: "a <= b",
1282 cmp2Expr: "c > d",
1283 logicalExpr: "(a <= b) && !(c > d)",
1284 },
1285 {
1286 cmp1: func(a, b T) bool { return a <= b },
1287 cmp2: func(a, b T) bool { return a > b },
1288 combine: func(x, y bool) bool { return !(x) && (y) },
1289 targetFunc: func(a, b, c, d T) bool {
1290 if !(a <= b) && (c > d) {
1291 return true
1292 }
1293 return false
1294 },
1295 cmp1Expr: "a <= b",
1296 cmp2Expr: "c > d",
1297 logicalExpr: "!(a <= b) && (c > d)",
1298 },
1299 {
1300 cmp1: func(a, b T) bool { return a <= b },
1301 cmp2: func(a, b T) bool { return a > b },
1302 combine: func(x, y bool) bool { return !(x) && !(y) },
1303 targetFunc: func(a, b, c, d T) bool {
1304 if !(a <= b) && !(c > d) {
1305 return true
1306 }
1307 return false
1308 },
1309 cmp1Expr: "a <= b",
1310 cmp2Expr: "c > d",
1311 logicalExpr: "!(a <= b) && !(c > d)",
1312 },
1313 {
1314 cmp1: func(a, b T) bool { return a <= b },
1315 cmp2: func(a, b T) bool { return a > b },
1316 combine: func(x, y bool) bool { return (x) || (y) },
1317 targetFunc: func(a, b, c, d T) bool {
1318 if (a <= b) || (c > d) {
1319 return true
1320 }
1321 return false
1322 },
1323 cmp1Expr: "a <= b",
1324 cmp2Expr: "c > d",
1325 logicalExpr: "(a <= b) || (c > d)",
1326 },
1327 {
1328 cmp1: func(a, b T) bool { return a <= b },
1329 cmp2: func(a, b T) bool { return a > b },
1330 combine: func(x, y bool) bool { return (x) || !(y) },
1331 targetFunc: func(a, b, c, d T) bool {
1332 if (a <= b) || !(c > d) {
1333 return true
1334 }
1335 return false
1336 },
1337 cmp1Expr: "a <= b",
1338 cmp2Expr: "c > d",
1339 logicalExpr: "(a <= b) || !(c > d)",
1340 },
1341 {
1342 cmp1: func(a, b T) bool { return a <= b },
1343 cmp2: func(a, b T) bool { return a > b },
1344 combine: func(x, y bool) bool { return !(x) || (y) },
1345 targetFunc: func(a, b, c, d T) bool {
1346 if !(a <= b) || (c > d) {
1347 return true
1348 }
1349 return false
1350 },
1351 cmp1Expr: "a <= b",
1352 cmp2Expr: "c > d",
1353 logicalExpr: "!(a <= b) || (c > d)",
1354 },
1355 {
1356 cmp1: func(a, b T) bool { return a <= b },
1357 cmp2: func(a, b T) bool { return a > b },
1358 combine: func(x, y bool) bool { return !(x) || !(y) },
1359 targetFunc: func(a, b, c, d T) bool {
1360 if !(a <= b) || !(c > d) {
1361 return true
1362 }
1363 return false
1364 },
1365 cmp1Expr: "a <= b",
1366 cmp2Expr: "c > d",
1367 logicalExpr: "!(a <= b) || !(c > d)",
1368 },
1369 {
1370 cmp1: func(a, b T) bool { return a < b },
1371 cmp2: func(a, b T) bool { return a == b },
1372 combine: func(x, y bool) bool { return (x) && (y) },
1373 targetFunc: func(a, b, c, d T) bool {
1374 if (a < b) && (c == d) {
1375 return true
1376 }
1377 return false
1378 },
1379 cmp1Expr: "a < b",
1380 cmp2Expr: "c == d",
1381 logicalExpr: "(a < b) && (c == d)",
1382 },
1383 {
1384 cmp1: func(a, b T) bool { return a < b },
1385 cmp2: func(a, b T) bool { return a == b },
1386 combine: func(x, y bool) bool { return (x) && !(y) },
1387 targetFunc: func(a, b, c, d T) bool {
1388 if (a < b) && !(c == d) {
1389 return true
1390 }
1391 return false
1392 },
1393 cmp1Expr: "a < b",
1394 cmp2Expr: "c == d",
1395 logicalExpr: "(a < b) && !(c == d)",
1396 },
1397 {
1398 cmp1: func(a, b T) bool { return a < b },
1399 cmp2: func(a, b T) bool { return a == b },
1400 combine: func(x, y bool) bool { return !(x) && (y) },
1401 targetFunc: func(a, b, c, d T) bool {
1402 if !(a < b) && (c == d) {
1403 return true
1404 }
1405 return false
1406 },
1407 cmp1Expr: "a < b",
1408 cmp2Expr: "c == d",
1409 logicalExpr: "!(a < b) && (c == d)",
1410 },
1411 {
1412 cmp1: func(a, b T) bool { return a < b },
1413 cmp2: func(a, b T) bool { return a == b },
1414 combine: func(x, y bool) bool { return !(x) && !(y) },
1415 targetFunc: func(a, b, c, d T) bool {
1416 if !(a < b) && !(c == d) {
1417 return true
1418 }
1419 return false
1420 },
1421 cmp1Expr: "a < b",
1422 cmp2Expr: "c == d",
1423 logicalExpr: "!(a < b) && !(c == d)",
1424 },
1425 {
1426 cmp1: func(a, b T) bool { return a < b },
1427 cmp2: func(a, b T) bool { return a == b },
1428 combine: func(x, y bool) bool { return (x) || (y) },
1429 targetFunc: func(a, b, c, d T) bool {
1430 if (a < b) || (c == d) {
1431 return true
1432 }
1433 return false
1434 },
1435 cmp1Expr: "a < b",
1436 cmp2Expr: "c == d",
1437 logicalExpr: "(a < b) || (c == d)",
1438 },
1439 {
1440 cmp1: func(a, b T) bool { return a < b },
1441 cmp2: func(a, b T) bool { return a == b },
1442 combine: func(x, y bool) bool { return (x) || !(y) },
1443 targetFunc: func(a, b, c, d T) bool {
1444 if (a < b) || !(c == d) {
1445 return true
1446 }
1447 return false
1448 },
1449 cmp1Expr: "a < b",
1450 cmp2Expr: "c == d",
1451 logicalExpr: "(a < b) || !(c == d)",
1452 },
1453 {
1454 cmp1: func(a, b T) bool { return a < b },
1455 cmp2: func(a, b T) bool { return a == b },
1456 combine: func(x, y bool) bool { return !(x) || (y) },
1457 targetFunc: func(a, b, c, d T) bool {
1458 if !(a < b) || (c == d) {
1459 return true
1460 }
1461 return false
1462 },
1463 cmp1Expr: "a < b",
1464 cmp2Expr: "c == d",
1465 logicalExpr: "!(a < b) || (c == d)",
1466 },
1467 {
1468 cmp1: func(a, b T) bool { return a < b },
1469 cmp2: func(a, b T) bool { return a == b },
1470 combine: func(x, y bool) bool { return !(x) || !(y) },
1471 targetFunc: func(a, b, c, d T) bool {
1472 if !(a < b) || !(c == d) {
1473 return true
1474 }
1475 return false
1476 },
1477 cmp1Expr: "a < b",
1478 cmp2Expr: "c == d",
1479 logicalExpr: "!(a < b) || !(c == d)",
1480 },
1481 {
1482 cmp1: func(a, b T) bool { return a < b },
1483 cmp2: func(a, b T) bool { return a <= b },
1484 combine: func(x, y bool) bool { return (x) && (y) },
1485 targetFunc: func(a, b, c, d T) bool {
1486 if (a < b) && (c <= d) {
1487 return true
1488 }
1489 return false
1490 },
1491 cmp1Expr: "a < b",
1492 cmp2Expr: "c <= d",
1493 logicalExpr: "(a < b) && (c <= d)",
1494 },
1495 {
1496 cmp1: func(a, b T) bool { return a < b },
1497 cmp2: func(a, b T) bool { return a <= b },
1498 combine: func(x, y bool) bool { return (x) && !(y) },
1499 targetFunc: func(a, b, c, d T) bool {
1500 if (a < b) && !(c <= d) {
1501 return true
1502 }
1503 return false
1504 },
1505 cmp1Expr: "a < b",
1506 cmp2Expr: "c <= d",
1507 logicalExpr: "(a < b) && !(c <= d)",
1508 },
1509 {
1510 cmp1: func(a, b T) bool { return a < b },
1511 cmp2: func(a, b T) bool { return a <= b },
1512 combine: func(x, y bool) bool { return !(x) && (y) },
1513 targetFunc: func(a, b, c, d T) bool {
1514 if !(a < b) && (c <= d) {
1515 return true
1516 }
1517 return false
1518 },
1519 cmp1Expr: "a < b",
1520 cmp2Expr: "c <= d",
1521 logicalExpr: "!(a < b) && (c <= d)",
1522 },
1523 {
1524 cmp1: func(a, b T) bool { return a < b },
1525 cmp2: func(a, b T) bool { return a <= b },
1526 combine: func(x, y bool) bool { return !(x) && !(y) },
1527 targetFunc: func(a, b, c, d T) bool {
1528 if !(a < b) && !(c <= d) {
1529 return true
1530 }
1531 return false
1532 },
1533 cmp1Expr: "a < b",
1534 cmp2Expr: "c <= d",
1535 logicalExpr: "!(a < b) && !(c <= d)",
1536 },
1537 {
1538 cmp1: func(a, b T) bool { return a < b },
1539 cmp2: func(a, b T) bool { return a <= b },
1540 combine: func(x, y bool) bool { return (x) || (y) },
1541 targetFunc: func(a, b, c, d T) bool {
1542 if (a < b) || (c <= d) {
1543 return true
1544 }
1545 return false
1546 },
1547 cmp1Expr: "a < b",
1548 cmp2Expr: "c <= d",
1549 logicalExpr: "(a < b) || (c <= d)",
1550 },
1551 {
1552 cmp1: func(a, b T) bool { return a < b },
1553 cmp2: func(a, b T) bool { return a <= b },
1554 combine: func(x, y bool) bool { return (x) || !(y) },
1555 targetFunc: func(a, b, c, d T) bool {
1556 if (a < b) || !(c <= d) {
1557 return true
1558 }
1559 return false
1560 },
1561 cmp1Expr: "a < b",
1562 cmp2Expr: "c <= d",
1563 logicalExpr: "(a < b) || !(c <= d)",
1564 },
1565 {
1566 cmp1: func(a, b T) bool { return a < b },
1567 cmp2: func(a, b T) bool { return a <= b },
1568 combine: func(x, y bool) bool { return !(x) || (y) },
1569 targetFunc: func(a, b, c, d T) bool {
1570 if !(a < b) || (c <= d) {
1571 return true
1572 }
1573 return false
1574 },
1575 cmp1Expr: "a < b",
1576 cmp2Expr: "c <= d",
1577 logicalExpr: "!(a < b) || (c <= d)",
1578 },
1579 {
1580 cmp1: func(a, b T) bool { return a < b },
1581 cmp2: func(a, b T) bool { return a <= b },
1582 combine: func(x, y bool) bool { return !(x) || !(y) },
1583 targetFunc: func(a, b, c, d T) bool {
1584 if !(a < b) || !(c <= d) {
1585 return true
1586 }
1587 return false
1588 },
1589 cmp1Expr: "a < b",
1590 cmp2Expr: "c <= d",
1591 logicalExpr: "!(a < b) || !(c <= d)",
1592 },
1593 {
1594 cmp1: func(a, b T) bool { return a < b },
1595 cmp2: func(a, b T) bool { return a < b },
1596 combine: func(x, y bool) bool { return (x) && (y) },
1597 targetFunc: func(a, b, c, d T) bool {
1598 if (a < b) && (c < d) {
1599 return true
1600 }
1601 return false
1602 },
1603 cmp1Expr: "a < b",
1604 cmp2Expr: "c < d",
1605 logicalExpr: "(a < b) && (c < d)",
1606 },
1607 {
1608 cmp1: func(a, b T) bool { return a < b },
1609 cmp2: func(a, b T) bool { return a < b },
1610 combine: func(x, y bool) bool { return (x) && !(y) },
1611 targetFunc: func(a, b, c, d T) bool {
1612 if (a < b) && !(c < d) {
1613 return true
1614 }
1615 return false
1616 },
1617 cmp1Expr: "a < b",
1618 cmp2Expr: "c < d",
1619 logicalExpr: "(a < b) && !(c < d)",
1620 },
1621 {
1622 cmp1: func(a, b T) bool { return a < b },
1623 cmp2: func(a, b T) bool { return a < b },
1624 combine: func(x, y bool) bool { return !(x) && (y) },
1625 targetFunc: func(a, b, c, d T) bool {
1626 if !(a < b) && (c < d) {
1627 return true
1628 }
1629 return false
1630 },
1631 cmp1Expr: "a < b",
1632 cmp2Expr: "c < d",
1633 logicalExpr: "!(a < b) && (c < d)",
1634 },
1635 {
1636 cmp1: func(a, b T) bool { return a < b },
1637 cmp2: func(a, b T) bool { return a < b },
1638 combine: func(x, y bool) bool { return !(x) && !(y) },
1639 targetFunc: func(a, b, c, d T) bool {
1640 if !(a < b) && !(c < d) {
1641 return true
1642 }
1643 return false
1644 },
1645 cmp1Expr: "a < b",
1646 cmp2Expr: "c < d",
1647 logicalExpr: "!(a < b) && !(c < d)",
1648 },
1649 {
1650 cmp1: func(a, b T) bool { return a < b },
1651 cmp2: func(a, b T) bool { return a < b },
1652 combine: func(x, y bool) bool { return (x) || (y) },
1653 targetFunc: func(a, b, c, d T) bool {
1654 if (a < b) || (c < d) {
1655 return true
1656 }
1657 return false
1658 },
1659 cmp1Expr: "a < b",
1660 cmp2Expr: "c < d",
1661 logicalExpr: "(a < b) || (c < d)",
1662 },
1663 {
1664 cmp1: func(a, b T) bool { return a < b },
1665 cmp2: func(a, b T) bool { return a < b },
1666 combine: func(x, y bool) bool { return (x) || !(y) },
1667 targetFunc: func(a, b, c, d T) bool {
1668 if (a < b) || !(c < d) {
1669 return true
1670 }
1671 return false
1672 },
1673 cmp1Expr: "a < b",
1674 cmp2Expr: "c < d",
1675 logicalExpr: "(a < b) || !(c < d)",
1676 },
1677 {
1678 cmp1: func(a, b T) bool { return a < b },
1679 cmp2: func(a, b T) bool { return a < b },
1680 combine: func(x, y bool) bool { return !(x) || (y) },
1681 targetFunc: func(a, b, c, d T) bool {
1682 if !(a < b) || (c < d) {
1683 return true
1684 }
1685 return false
1686 },
1687 cmp1Expr: "a < b",
1688 cmp2Expr: "c < d",
1689 logicalExpr: "!(a < b) || (c < d)",
1690 },
1691 {
1692 cmp1: func(a, b T) bool { return a < b },
1693 cmp2: func(a, b T) bool { return a < b },
1694 combine: func(x, y bool) bool { return !(x) || !(y) },
1695 targetFunc: func(a, b, c, d T) bool {
1696 if !(a < b) || !(c < d) {
1697 return true
1698 }
1699 return false
1700 },
1701 cmp1Expr: "a < b",
1702 cmp2Expr: "c < d",
1703 logicalExpr: "!(a < b) || !(c < d)",
1704 },
1705 {
1706 cmp1: func(a, b T) bool { return a < b },
1707 cmp2: func(a, b T) bool { return a != b },
1708 combine: func(x, y bool) bool { return (x) && (y) },
1709 targetFunc: func(a, b, c, d T) bool {
1710 if (a < b) && (c != d) {
1711 return true
1712 }
1713 return false
1714 },
1715 cmp1Expr: "a < b",
1716 cmp2Expr: "c != d",
1717 logicalExpr: "(a < b) && (c != d)",
1718 },
1719 {
1720 cmp1: func(a, b T) bool { return a < b },
1721 cmp2: func(a, b T) bool { return a != b },
1722 combine: func(x, y bool) bool { return (x) && !(y) },
1723 targetFunc: func(a, b, c, d T) bool {
1724 if (a < b) && !(c != d) {
1725 return true
1726 }
1727 return false
1728 },
1729 cmp1Expr: "a < b",
1730 cmp2Expr: "c != d",
1731 logicalExpr: "(a < b) && !(c != d)",
1732 },
1733 {
1734 cmp1: func(a, b T) bool { return a < b },
1735 cmp2: func(a, b T) bool { return a != b },
1736 combine: func(x, y bool) bool { return !(x) && (y) },
1737 targetFunc: func(a, b, c, d T) bool {
1738 if !(a < b) && (c != d) {
1739 return true
1740 }
1741 return false
1742 },
1743 cmp1Expr: "a < b",
1744 cmp2Expr: "c != d",
1745 logicalExpr: "!(a < b) && (c != d)",
1746 },
1747 {
1748 cmp1: func(a, b T) bool { return a < b },
1749 cmp2: func(a, b T) bool { return a != b },
1750 combine: func(x, y bool) bool { return !(x) && !(y) },
1751 targetFunc: func(a, b, c, d T) bool {
1752 if !(a < b) && !(c != d) {
1753 return true
1754 }
1755 return false
1756 },
1757 cmp1Expr: "a < b",
1758 cmp2Expr: "c != d",
1759 logicalExpr: "!(a < b) && !(c != d)",
1760 },
1761 {
1762 cmp1: func(a, b T) bool { return a < b },
1763 cmp2: func(a, b T) bool { return a != b },
1764 combine: func(x, y bool) bool { return (x) || (y) },
1765 targetFunc: func(a, b, c, d T) bool {
1766 if (a < b) || (c != d) {
1767 return true
1768 }
1769 return false
1770 },
1771 cmp1Expr: "a < b",
1772 cmp2Expr: "c != d",
1773 logicalExpr: "(a < b) || (c != d)",
1774 },
1775 {
1776 cmp1: func(a, b T) bool { return a < b },
1777 cmp2: func(a, b T) bool { return a != b },
1778 combine: func(x, y bool) bool { return (x) || !(y) },
1779 targetFunc: func(a, b, c, d T) bool {
1780 if (a < b) || !(c != d) {
1781 return true
1782 }
1783 return false
1784 },
1785 cmp1Expr: "a < b",
1786 cmp2Expr: "c != d",
1787 logicalExpr: "(a < b) || !(c != d)",
1788 },
1789 {
1790 cmp1: func(a, b T) bool { return a < b },
1791 cmp2: func(a, b T) bool { return a != b },
1792 combine: func(x, y bool) bool { return !(x) || (y) },
1793 targetFunc: func(a, b, c, d T) bool {
1794 if !(a < b) || (c != d) {
1795 return true
1796 }
1797 return false
1798 },
1799 cmp1Expr: "a < b",
1800 cmp2Expr: "c != d",
1801 logicalExpr: "!(a < b) || (c != d)",
1802 },
1803 {
1804 cmp1: func(a, b T) bool { return a < b },
1805 cmp2: func(a, b T) bool { return a != b },
1806 combine: func(x, y bool) bool { return !(x) || !(y) },
1807 targetFunc: func(a, b, c, d T) bool {
1808 if !(a < b) || !(c != d) {
1809 return true
1810 }
1811 return false
1812 },
1813 cmp1Expr: "a < b",
1814 cmp2Expr: "c != d",
1815 logicalExpr: "!(a < b) || !(c != d)",
1816 },
1817 {
1818 cmp1: func(a, b T) bool { return a < b },
1819 cmp2: func(a, b T) bool { return a >= b },
1820 combine: func(x, y bool) bool { return (x) && (y) },
1821 targetFunc: func(a, b, c, d T) bool {
1822 if (a < b) && (c >= d) {
1823 return true
1824 }
1825 return false
1826 },
1827 cmp1Expr: "a < b",
1828 cmp2Expr: "c >= d",
1829 logicalExpr: "(a < b) && (c >= d)",
1830 },
1831 {
1832 cmp1: func(a, b T) bool { return a < b },
1833 cmp2: func(a, b T) bool { return a >= b },
1834 combine: func(x, y bool) bool { return (x) && !(y) },
1835 targetFunc: func(a, b, c, d T) bool {
1836 if (a < b) && !(c >= d) {
1837 return true
1838 }
1839 return false
1840 },
1841 cmp1Expr: "a < b",
1842 cmp2Expr: "c >= d",
1843 logicalExpr: "(a < b) && !(c >= d)",
1844 },
1845 {
1846 cmp1: func(a, b T) bool { return a < b },
1847 cmp2: func(a, b T) bool { return a >= b },
1848 combine: func(x, y bool) bool { return !(x) && (y) },
1849 targetFunc: func(a, b, c, d T) bool {
1850 if !(a < b) && (c >= d) {
1851 return true
1852 }
1853 return false
1854 },
1855 cmp1Expr: "a < b",
1856 cmp2Expr: "c >= d",
1857 logicalExpr: "!(a < b) && (c >= d)",
1858 },
1859 {
1860 cmp1: func(a, b T) bool { return a < b },
1861 cmp2: func(a, b T) bool { return a >= b },
1862 combine: func(x, y bool) bool { return !(x) && !(y) },
1863 targetFunc: func(a, b, c, d T) bool {
1864 if !(a < b) && !(c >= d) {
1865 return true
1866 }
1867 return false
1868 },
1869 cmp1Expr: "a < b",
1870 cmp2Expr: "c >= d",
1871 logicalExpr: "!(a < b) && !(c >= d)",
1872 },
1873 {
1874 cmp1: func(a, b T) bool { return a < b },
1875 cmp2: func(a, b T) bool { return a >= b },
1876 combine: func(x, y bool) bool { return (x) || (y) },
1877 targetFunc: func(a, b, c, d T) bool {
1878 if (a < b) || (c >= d) {
1879 return true
1880 }
1881 return false
1882 },
1883 cmp1Expr: "a < b",
1884 cmp2Expr: "c >= d",
1885 logicalExpr: "(a < b) || (c >= d)",
1886 },
1887 {
1888 cmp1: func(a, b T) bool { return a < b },
1889 cmp2: func(a, b T) bool { return a >= b },
1890 combine: func(x, y bool) bool { return (x) || !(y) },
1891 targetFunc: func(a, b, c, d T) bool {
1892 if (a < b) || !(c >= d) {
1893 return true
1894 }
1895 return false
1896 },
1897 cmp1Expr: "a < b",
1898 cmp2Expr: "c >= d",
1899 logicalExpr: "(a < b) || !(c >= d)",
1900 },
1901 {
1902 cmp1: func(a, b T) bool { return a < b },
1903 cmp2: func(a, b T) bool { return a >= b },
1904 combine: func(x, y bool) bool { return !(x) || (y) },
1905 targetFunc: func(a, b, c, d T) bool {
1906 if !(a < b) || (c >= d) {
1907 return true
1908 }
1909 return false
1910 },
1911 cmp1Expr: "a < b",
1912 cmp2Expr: "c >= d",
1913 logicalExpr: "!(a < b) || (c >= d)",
1914 },
1915 {
1916 cmp1: func(a, b T) bool { return a < b },
1917 cmp2: func(a, b T) bool { return a >= b },
1918 combine: func(x, y bool) bool { return !(x) || !(y) },
1919 targetFunc: func(a, b, c, d T) bool {
1920 if !(a < b) || !(c >= d) {
1921 return true
1922 }
1923 return false
1924 },
1925 cmp1Expr: "a < b",
1926 cmp2Expr: "c >= d",
1927 logicalExpr: "!(a < b) || !(c >= d)",
1928 },
1929 {
1930 cmp1: func(a, b T) bool { return a < b },
1931 cmp2: func(a, b T) bool { return a > b },
1932 combine: func(x, y bool) bool { return (x) && (y) },
1933 targetFunc: func(a, b, c, d T) bool {
1934 if (a < b) && (c > d) {
1935 return true
1936 }
1937 return false
1938 },
1939 cmp1Expr: "a < b",
1940 cmp2Expr: "c > d",
1941 logicalExpr: "(a < b) && (c > d)",
1942 },
1943 {
1944 cmp1: func(a, b T) bool { return a < b },
1945 cmp2: func(a, b T) bool { return a > b },
1946 combine: func(x, y bool) bool { return (x) && !(y) },
1947 targetFunc: func(a, b, c, d T) bool {
1948 if (a < b) && !(c > d) {
1949 return true
1950 }
1951 return false
1952 },
1953 cmp1Expr: "a < b",
1954 cmp2Expr: "c > d",
1955 logicalExpr: "(a < b) && !(c > d)",
1956 },
1957 {
1958 cmp1: func(a, b T) bool { return a < b },
1959 cmp2: func(a, b T) bool { return a > b },
1960 combine: func(x, y bool) bool { return !(x) && (y) },
1961 targetFunc: func(a, b, c, d T) bool {
1962 if !(a < b) && (c > d) {
1963 return true
1964 }
1965 return false
1966 },
1967 cmp1Expr: "a < b",
1968 cmp2Expr: "c > d",
1969 logicalExpr: "!(a < b) && (c > d)",
1970 },
1971 {
1972 cmp1: func(a, b T) bool { return a < b },
1973 cmp2: func(a, b T) bool { return a > b },
1974 combine: func(x, y bool) bool { return !(x) && !(y) },
1975 targetFunc: func(a, b, c, d T) bool {
1976 if !(a < b) && !(c > d) {
1977 return true
1978 }
1979 return false
1980 },
1981 cmp1Expr: "a < b",
1982 cmp2Expr: "c > d",
1983 logicalExpr: "!(a < b) && !(c > d)",
1984 },
1985 {
1986 cmp1: func(a, b T) bool { return a < b },
1987 cmp2: func(a, b T) bool { return a > b },
1988 combine: func(x, y bool) bool { return (x) || (y) },
1989 targetFunc: func(a, b, c, d T) bool {
1990 if (a < b) || (c > d) {
1991 return true
1992 }
1993 return false
1994 },
1995 cmp1Expr: "a < b",
1996 cmp2Expr: "c > d",
1997 logicalExpr: "(a < b) || (c > d)",
1998 },
1999 {
2000 cmp1: func(a, b T) bool { return a < b },
2001 cmp2: func(a, b T) bool { return a > b },
2002 combine: func(x, y bool) bool { return (x) || !(y) },
2003 targetFunc: func(a, b, c, d T) bool {
2004 if (a < b) || !(c > d) {
2005 return true
2006 }
2007 return false
2008 },
2009 cmp1Expr: "a < b",
2010 cmp2Expr: "c > d",
2011 logicalExpr: "(a < b) || !(c > d)",
2012 },
2013 {
2014 cmp1: func(a, b T) bool { return a < b },
2015 cmp2: func(a, b T) bool { return a > b },
2016 combine: func(x, y bool) bool { return !(x) || (y) },
2017 targetFunc: func(a, b, c, d T) bool {
2018 if !(a < b) || (c > d) {
2019 return true
2020 }
2021 return false
2022 },
2023 cmp1Expr: "a < b",
2024 cmp2Expr: "c > d",
2025 logicalExpr: "!(a < b) || (c > d)",
2026 },
2027 {
2028 cmp1: func(a, b T) bool { return a < b },
2029 cmp2: func(a, b T) bool { return a > b },
2030 combine: func(x, y bool) bool { return !(x) || !(y) },
2031 targetFunc: func(a, b, c, d T) bool {
2032 if !(a < b) || !(c > d) {
2033 return true
2034 }
2035 return false
2036 },
2037 cmp1Expr: "a < b",
2038 cmp2Expr: "c > d",
2039 logicalExpr: "!(a < b) || !(c > d)",
2040 },
2041 {
2042 cmp1: func(a, b T) bool { return a != b },
2043 cmp2: func(a, b T) bool { return a == b },
2044 combine: func(x, y bool) bool { return (x) && (y) },
2045 targetFunc: func(a, b, c, d T) bool {
2046 if (a != b) && (c == d) {
2047 return true
2048 }
2049 return false
2050 },
2051 cmp1Expr: "a != b",
2052 cmp2Expr: "c == d",
2053 logicalExpr: "(a != b) && (c == d)",
2054 },
2055 {
2056 cmp1: func(a, b T) bool { return a != b },
2057 cmp2: func(a, b T) bool { return a == b },
2058 combine: func(x, y bool) bool { return (x) && !(y) },
2059 targetFunc: func(a, b, c, d T) bool {
2060 if (a != b) && !(c == d) {
2061 return true
2062 }
2063 return false
2064 },
2065 cmp1Expr: "a != b",
2066 cmp2Expr: "c == d",
2067 logicalExpr: "(a != b) && !(c == d)",
2068 },
2069 {
2070 cmp1: func(a, b T) bool { return a != b },
2071 cmp2: func(a, b T) bool { return a == b },
2072 combine: func(x, y bool) bool { return !(x) && (y) },
2073 targetFunc: func(a, b, c, d T) bool {
2074 if !(a != b) && (c == d) {
2075 return true
2076 }
2077 return false
2078 },
2079 cmp1Expr: "a != b",
2080 cmp2Expr: "c == d",
2081 logicalExpr: "!(a != b) && (c == d)",
2082 },
2083 {
2084 cmp1: func(a, b T) bool { return a != b },
2085 cmp2: func(a, b T) bool { return a == b },
2086 combine: func(x, y bool) bool { return !(x) && !(y) },
2087 targetFunc: func(a, b, c, d T) bool {
2088 if !(a != b) && !(c == d) {
2089 return true
2090 }
2091 return false
2092 },
2093 cmp1Expr: "a != b",
2094 cmp2Expr: "c == d",
2095 logicalExpr: "!(a != b) && !(c == d)",
2096 },
2097 {
2098 cmp1: func(a, b T) bool { return a != b },
2099 cmp2: func(a, b T) bool { return a == b },
2100 combine: func(x, y bool) bool { return (x) || (y) },
2101 targetFunc: func(a, b, c, d T) bool {
2102 if (a != b) || (c == d) {
2103 return true
2104 }
2105 return false
2106 },
2107 cmp1Expr: "a != b",
2108 cmp2Expr: "c == d",
2109 logicalExpr: "(a != b) || (c == d)",
2110 },
2111 {
2112 cmp1: func(a, b T) bool { return a != b },
2113 cmp2: func(a, b T) bool { return a == b },
2114 combine: func(x, y bool) bool { return (x) || !(y) },
2115 targetFunc: func(a, b, c, d T) bool {
2116 if (a != b) || !(c == d) {
2117 return true
2118 }
2119 return false
2120 },
2121 cmp1Expr: "a != b",
2122 cmp2Expr: "c == d",
2123 logicalExpr: "(a != b) || !(c == d)",
2124 },
2125 {
2126 cmp1: func(a, b T) bool { return a != b },
2127 cmp2: func(a, b T) bool { return a == b },
2128 combine: func(x, y bool) bool { return !(x) || (y) },
2129 targetFunc: func(a, b, c, d T) bool {
2130 if !(a != b) || (c == d) {
2131 return true
2132 }
2133 return false
2134 },
2135 cmp1Expr: "a != b",
2136 cmp2Expr: "c == d",
2137 logicalExpr: "!(a != b) || (c == d)",
2138 },
2139 {
2140 cmp1: func(a, b T) bool { return a != b },
2141 cmp2: func(a, b T) bool { return a == b },
2142 combine: func(x, y bool) bool { return !(x) || !(y) },
2143 targetFunc: func(a, b, c, d T) bool {
2144 if !(a != b) || !(c == d) {
2145 return true
2146 }
2147 return false
2148 },
2149 cmp1Expr: "a != b",
2150 cmp2Expr: "c == d",
2151 logicalExpr: "!(a != b) || !(c == d)",
2152 },
2153 {
2154 cmp1: func(a, b T) bool { return a != b },
2155 cmp2: func(a, b T) bool { return a <= b },
2156 combine: func(x, y bool) bool { return (x) && (y) },
2157 targetFunc: func(a, b, c, d T) bool {
2158 if (a != b) && (c <= d) {
2159 return true
2160 }
2161 return false
2162 },
2163 cmp1Expr: "a != b",
2164 cmp2Expr: "c <= d",
2165 logicalExpr: "(a != b) && (c <= d)",
2166 },
2167 {
2168 cmp1: func(a, b T) bool { return a != b },
2169 cmp2: func(a, b T) bool { return a <= b },
2170 combine: func(x, y bool) bool { return (x) && !(y) },
2171 targetFunc: func(a, b, c, d T) bool {
2172 if (a != b) && !(c <= d) {
2173 return true
2174 }
2175 return false
2176 },
2177 cmp1Expr: "a != b",
2178 cmp2Expr: "c <= d",
2179 logicalExpr: "(a != b) && !(c <= d)",
2180 },
2181 {
2182 cmp1: func(a, b T) bool { return a != b },
2183 cmp2: func(a, b T) bool { return a <= b },
2184 combine: func(x, y bool) bool { return !(x) && (y) },
2185 targetFunc: func(a, b, c, d T) bool {
2186 if !(a != b) && (c <= d) {
2187 return true
2188 }
2189 return false
2190 },
2191 cmp1Expr: "a != b",
2192 cmp2Expr: "c <= d",
2193 logicalExpr: "!(a != b) && (c <= d)",
2194 },
2195 {
2196 cmp1: func(a, b T) bool { return a != b },
2197 cmp2: func(a, b T) bool { return a <= b },
2198 combine: func(x, y bool) bool { return !(x) && !(y) },
2199 targetFunc: func(a, b, c, d T) bool {
2200 if !(a != b) && !(c <= d) {
2201 return true
2202 }
2203 return false
2204 },
2205 cmp1Expr: "a != b",
2206 cmp2Expr: "c <= d",
2207 logicalExpr: "!(a != b) && !(c <= d)",
2208 },
2209 {
2210 cmp1: func(a, b T) bool { return a != b },
2211 cmp2: func(a, b T) bool { return a <= b },
2212 combine: func(x, y bool) bool { return (x) || (y) },
2213 targetFunc: func(a, b, c, d T) bool {
2214 if (a != b) || (c <= d) {
2215 return true
2216 }
2217 return false
2218 },
2219 cmp1Expr: "a != b",
2220 cmp2Expr: "c <= d",
2221 logicalExpr: "(a != b) || (c <= d)",
2222 },
2223 {
2224 cmp1: func(a, b T) bool { return a != b },
2225 cmp2: func(a, b T) bool { return a <= b },
2226 combine: func(x, y bool) bool { return (x) || !(y) },
2227 targetFunc: func(a, b, c, d T) bool {
2228 if (a != b) || !(c <= d) {
2229 return true
2230 }
2231 return false
2232 },
2233 cmp1Expr: "a != b",
2234 cmp2Expr: "c <= d",
2235 logicalExpr: "(a != b) || !(c <= d)",
2236 },
2237 {
2238 cmp1: func(a, b T) bool { return a != b },
2239 cmp2: func(a, b T) bool { return a <= b },
2240 combine: func(x, y bool) bool { return !(x) || (y) },
2241 targetFunc: func(a, b, c, d T) bool {
2242 if !(a != b) || (c <= d) {
2243 return true
2244 }
2245 return false
2246 },
2247 cmp1Expr: "a != b",
2248 cmp2Expr: "c <= d",
2249 logicalExpr: "!(a != b) || (c <= d)",
2250 },
2251 {
2252 cmp1: func(a, b T) bool { return a != b },
2253 cmp2: func(a, b T) bool { return a <= b },
2254 combine: func(x, y bool) bool { return !(x) || !(y) },
2255 targetFunc: func(a, b, c, d T) bool {
2256 if !(a != b) || !(c <= d) {
2257 return true
2258 }
2259 return false
2260 },
2261 cmp1Expr: "a != b",
2262 cmp2Expr: "c <= d",
2263 logicalExpr: "!(a != b) || !(c <= d)",
2264 },
2265 {
2266 cmp1: func(a, b T) bool { return a != b },
2267 cmp2: func(a, b T) bool { return a < b },
2268 combine: func(x, y bool) bool { return (x) && (y) },
2269 targetFunc: func(a, b, c, d T) bool {
2270 if (a != b) && (c < d) {
2271 return true
2272 }
2273 return false
2274 },
2275 cmp1Expr: "a != b",
2276 cmp2Expr: "c < d",
2277 logicalExpr: "(a != b) && (c < d)",
2278 },
2279 {
2280 cmp1: func(a, b T) bool { return a != b },
2281 cmp2: func(a, b T) bool { return a < b },
2282 combine: func(x, y bool) bool { return (x) && !(y) },
2283 targetFunc: func(a, b, c, d T) bool {
2284 if (a != b) && !(c < d) {
2285 return true
2286 }
2287 return false
2288 },
2289 cmp1Expr: "a != b",
2290 cmp2Expr: "c < d",
2291 logicalExpr: "(a != b) && !(c < d)",
2292 },
2293 {
2294 cmp1: func(a, b T) bool { return a != b },
2295 cmp2: func(a, b T) bool { return a < b },
2296 combine: func(x, y bool) bool { return !(x) && (y) },
2297 targetFunc: func(a, b, c, d T) bool {
2298 if !(a != b) && (c < d) {
2299 return true
2300 }
2301 return false
2302 },
2303 cmp1Expr: "a != b",
2304 cmp2Expr: "c < d",
2305 logicalExpr: "!(a != b) && (c < d)",
2306 },
2307 {
2308 cmp1: func(a, b T) bool { return a != b },
2309 cmp2: func(a, b T) bool { return a < b },
2310 combine: func(x, y bool) bool { return !(x) && !(y) },
2311 targetFunc: func(a, b, c, d T) bool {
2312 if !(a != b) && !(c < d) {
2313 return true
2314 }
2315 return false
2316 },
2317 cmp1Expr: "a != b",
2318 cmp2Expr: "c < d",
2319 logicalExpr: "!(a != b) && !(c < d)",
2320 },
2321 {
2322 cmp1: func(a, b T) bool { return a != b },
2323 cmp2: func(a, b T) bool { return a < b },
2324 combine: func(x, y bool) bool { return (x) || (y) },
2325 targetFunc: func(a, b, c, d T) bool {
2326 if (a != b) || (c < d) {
2327 return true
2328 }
2329 return false
2330 },
2331 cmp1Expr: "a != b",
2332 cmp2Expr: "c < d",
2333 logicalExpr: "(a != b) || (c < d)",
2334 },
2335 {
2336 cmp1: func(a, b T) bool { return a != b },
2337 cmp2: func(a, b T) bool { return a < b },
2338 combine: func(x, y bool) bool { return (x) || !(y) },
2339 targetFunc: func(a, b, c, d T) bool {
2340 if (a != b) || !(c < d) {
2341 return true
2342 }
2343 return false
2344 },
2345 cmp1Expr: "a != b",
2346 cmp2Expr: "c < d",
2347 logicalExpr: "(a != b) || !(c < d)",
2348 },
2349 {
2350 cmp1: func(a, b T) bool { return a != b },
2351 cmp2: func(a, b T) bool { return a < b },
2352 combine: func(x, y bool) bool { return !(x) || (y) },
2353 targetFunc: func(a, b, c, d T) bool {
2354 if !(a != b) || (c < d) {
2355 return true
2356 }
2357 return false
2358 },
2359 cmp1Expr: "a != b",
2360 cmp2Expr: "c < d",
2361 logicalExpr: "!(a != b) || (c < d)",
2362 },
2363 {
2364 cmp1: func(a, b T) bool { return a != b },
2365 cmp2: func(a, b T) bool { return a < b },
2366 combine: func(x, y bool) bool { return !(x) || !(y) },
2367 targetFunc: func(a, b, c, d T) bool {
2368 if !(a != b) || !(c < d) {
2369 return true
2370 }
2371 return false
2372 },
2373 cmp1Expr: "a != b",
2374 cmp2Expr: "c < d",
2375 logicalExpr: "!(a != b) || !(c < d)",
2376 },
2377 {
2378 cmp1: func(a, b T) bool { return a != b },
2379 cmp2: func(a, b T) bool { return a != b },
2380 combine: func(x, y bool) bool { return (x) && (y) },
2381 targetFunc: func(a, b, c, d T) bool {
2382 if (a != b) && (c != d) {
2383 return true
2384 }
2385 return false
2386 },
2387 cmp1Expr: "a != b",
2388 cmp2Expr: "c != d",
2389 logicalExpr: "(a != b) && (c != d)",
2390 },
2391 {
2392 cmp1: func(a, b T) bool { return a != b },
2393 cmp2: func(a, b T) bool { return a != b },
2394 combine: func(x, y bool) bool { return (x) && !(y) },
2395 targetFunc: func(a, b, c, d T) bool {
2396 if (a != b) && !(c != d) {
2397 return true
2398 }
2399 return false
2400 },
2401 cmp1Expr: "a != b",
2402 cmp2Expr: "c != d",
2403 logicalExpr: "(a != b) && !(c != d)",
2404 },
2405 {
2406 cmp1: func(a, b T) bool { return a != b },
2407 cmp2: func(a, b T) bool { return a != b },
2408 combine: func(x, y bool) bool { return !(x) && (y) },
2409 targetFunc: func(a, b, c, d T) bool {
2410 if !(a != b) && (c != d) {
2411 return true
2412 }
2413 return false
2414 },
2415 cmp1Expr: "a != b",
2416 cmp2Expr: "c != d",
2417 logicalExpr: "!(a != b) && (c != d)",
2418 },
2419 {
2420 cmp1: func(a, b T) bool { return a != b },
2421 cmp2: func(a, b T) bool { return a != b },
2422 combine: func(x, y bool) bool { return !(x) && !(y) },
2423 targetFunc: func(a, b, c, d T) bool {
2424 if !(a != b) && !(c != d) {
2425 return true
2426 }
2427 return false
2428 },
2429 cmp1Expr: "a != b",
2430 cmp2Expr: "c != d",
2431 logicalExpr: "!(a != b) && !(c != d)",
2432 },
2433 {
2434 cmp1: func(a, b T) bool { return a != b },
2435 cmp2: func(a, b T) bool { return a != b },
2436 combine: func(x, y bool) bool { return (x) || (y) },
2437 targetFunc: func(a, b, c, d T) bool {
2438 if (a != b) || (c != d) {
2439 return true
2440 }
2441 return false
2442 },
2443 cmp1Expr: "a != b",
2444 cmp2Expr: "c != d",
2445 logicalExpr: "(a != b) || (c != d)",
2446 },
2447 {
2448 cmp1: func(a, b T) bool { return a != b },
2449 cmp2: func(a, b T) bool { return a != b },
2450 combine: func(x, y bool) bool { return (x) || !(y) },
2451 targetFunc: func(a, b, c, d T) bool {
2452 if (a != b) || !(c != d) {
2453 return true
2454 }
2455 return false
2456 },
2457 cmp1Expr: "a != b",
2458 cmp2Expr: "c != d",
2459 logicalExpr: "(a != b) || !(c != d)",
2460 },
2461 {
2462 cmp1: func(a, b T) bool { return a != b },
2463 cmp2: func(a, b T) bool { return a != b },
2464 combine: func(x, y bool) bool { return !(x) || (y) },
2465 targetFunc: func(a, b, c, d T) bool {
2466 if !(a != b) || (c != d) {
2467 return true
2468 }
2469 return false
2470 },
2471 cmp1Expr: "a != b",
2472 cmp2Expr: "c != d",
2473 logicalExpr: "!(a != b) || (c != d)",
2474 },
2475 {
2476 cmp1: func(a, b T) bool { return a != b },
2477 cmp2: func(a, b T) bool { return a != b },
2478 combine: func(x, y bool) bool { return !(x) || !(y) },
2479 targetFunc: func(a, b, c, d T) bool {
2480 if !(a != b) || !(c != d) {
2481 return true
2482 }
2483 return false
2484 },
2485 cmp1Expr: "a != b",
2486 cmp2Expr: "c != d",
2487 logicalExpr: "!(a != b) || !(c != d)",
2488 },
2489 {
2490 cmp1: func(a, b T) bool { return a != b },
2491 cmp2: func(a, b T) bool { return a >= b },
2492 combine: func(x, y bool) bool { return (x) && (y) },
2493 targetFunc: func(a, b, c, d T) bool {
2494 if (a != b) && (c >= d) {
2495 return true
2496 }
2497 return false
2498 },
2499 cmp1Expr: "a != b",
2500 cmp2Expr: "c >= d",
2501 logicalExpr: "(a != b) && (c >= d)",
2502 },
2503 {
2504 cmp1: func(a, b T) bool { return a != b },
2505 cmp2: func(a, b T) bool { return a >= b },
2506 combine: func(x, y bool) bool { return (x) && !(y) },
2507 targetFunc: func(a, b, c, d T) bool {
2508 if (a != b) && !(c >= d) {
2509 return true
2510 }
2511 return false
2512 },
2513 cmp1Expr: "a != b",
2514 cmp2Expr: "c >= d",
2515 logicalExpr: "(a != b) && !(c >= d)",
2516 },
2517 {
2518 cmp1: func(a, b T) bool { return a != b },
2519 cmp2: func(a, b T) bool { return a >= b },
2520 combine: func(x, y bool) bool { return !(x) && (y) },
2521 targetFunc: func(a, b, c, d T) bool {
2522 if !(a != b) && (c >= d) {
2523 return true
2524 }
2525 return false
2526 },
2527 cmp1Expr: "a != b",
2528 cmp2Expr: "c >= d",
2529 logicalExpr: "!(a != b) && (c >= d)",
2530 },
2531 {
2532 cmp1: func(a, b T) bool { return a != b },
2533 cmp2: func(a, b T) bool { return a >= b },
2534 combine: func(x, y bool) bool { return !(x) && !(y) },
2535 targetFunc: func(a, b, c, d T) bool {
2536 if !(a != b) && !(c >= d) {
2537 return true
2538 }
2539 return false
2540 },
2541 cmp1Expr: "a != b",
2542 cmp2Expr: "c >= d",
2543 logicalExpr: "!(a != b) && !(c >= d)",
2544 },
2545 {
2546 cmp1: func(a, b T) bool { return a != b },
2547 cmp2: func(a, b T) bool { return a >= b },
2548 combine: func(x, y bool) bool { return (x) || (y) },
2549 targetFunc: func(a, b, c, d T) bool {
2550 if (a != b) || (c >= d) {
2551 return true
2552 }
2553 return false
2554 },
2555 cmp1Expr: "a != b",
2556 cmp2Expr: "c >= d",
2557 logicalExpr: "(a != b) || (c >= d)",
2558 },
2559 {
2560 cmp1: func(a, b T) bool { return a != b },
2561 cmp2: func(a, b T) bool { return a >= b },
2562 combine: func(x, y bool) bool { return (x) || !(y) },
2563 targetFunc: func(a, b, c, d T) bool {
2564 if (a != b) || !(c >= d) {
2565 return true
2566 }
2567 return false
2568 },
2569 cmp1Expr: "a != b",
2570 cmp2Expr: "c >= d",
2571 logicalExpr: "(a != b) || !(c >= d)",
2572 },
2573 {
2574 cmp1: func(a, b T) bool { return a != b },
2575 cmp2: func(a, b T) bool { return a >= b },
2576 combine: func(x, y bool) bool { return !(x) || (y) },
2577 targetFunc: func(a, b, c, d T) bool {
2578 if !(a != b) || (c >= d) {
2579 return true
2580 }
2581 return false
2582 },
2583 cmp1Expr: "a != b",
2584 cmp2Expr: "c >= d",
2585 logicalExpr: "!(a != b) || (c >= d)",
2586 },
2587 {
2588 cmp1: func(a, b T) bool { return a != b },
2589 cmp2: func(a, b T) bool { return a >= b },
2590 combine: func(x, y bool) bool { return !(x) || !(y) },
2591 targetFunc: func(a, b, c, d T) bool {
2592 if !(a != b) || !(c >= d) {
2593 return true
2594 }
2595 return false
2596 },
2597 cmp1Expr: "a != b",
2598 cmp2Expr: "c >= d",
2599 logicalExpr: "!(a != b) || !(c >= d)",
2600 },
2601 {
2602 cmp1: func(a, b T) bool { return a != b },
2603 cmp2: func(a, b T) bool { return a > b },
2604 combine: func(x, y bool) bool { return (x) && (y) },
2605 targetFunc: func(a, b, c, d T) bool {
2606 if (a != b) && (c > d) {
2607 return true
2608 }
2609 return false
2610 },
2611 cmp1Expr: "a != b",
2612 cmp2Expr: "c > d",
2613 logicalExpr: "(a != b) && (c > d)",
2614 },
2615 {
2616 cmp1: func(a, b T) bool { return a != b },
2617 cmp2: func(a, b T) bool { return a > b },
2618 combine: func(x, y bool) bool { return (x) && !(y) },
2619 targetFunc: func(a, b, c, d T) bool {
2620 if (a != b) && !(c > d) {
2621 return true
2622 }
2623 return false
2624 },
2625 cmp1Expr: "a != b",
2626 cmp2Expr: "c > d",
2627 logicalExpr: "(a != b) && !(c > d)",
2628 },
2629 {
2630 cmp1: func(a, b T) bool { return a != b },
2631 cmp2: func(a, b T) bool { return a > b },
2632 combine: func(x, y bool) bool { return !(x) && (y) },
2633 targetFunc: func(a, b, c, d T) bool {
2634 if !(a != b) && (c > d) {
2635 return true
2636 }
2637 return false
2638 },
2639 cmp1Expr: "a != b",
2640 cmp2Expr: "c > d",
2641 logicalExpr: "!(a != b) && (c > d)",
2642 },
2643 {
2644 cmp1: func(a, b T) bool { return a != b },
2645 cmp2: func(a, b T) bool { return a > b },
2646 combine: func(x, y bool) bool { return !(x) && !(y) },
2647 targetFunc: func(a, b, c, d T) bool {
2648 if !(a != b) && !(c > d) {
2649 return true
2650 }
2651 return false
2652 },
2653 cmp1Expr: "a != b",
2654 cmp2Expr: "c > d",
2655 logicalExpr: "!(a != b) && !(c > d)",
2656 },
2657 {
2658 cmp1: func(a, b T) bool { return a != b },
2659 cmp2: func(a, b T) bool { return a > b },
2660 combine: func(x, y bool) bool { return (x) || (y) },
2661 targetFunc: func(a, b, c, d T) bool {
2662 if (a != b) || (c > d) {
2663 return true
2664 }
2665 return false
2666 },
2667 cmp1Expr: "a != b",
2668 cmp2Expr: "c > d",
2669 logicalExpr: "(a != b) || (c > d)",
2670 },
2671 {
2672 cmp1: func(a, b T) bool { return a != b },
2673 cmp2: func(a, b T) bool { return a > b },
2674 combine: func(x, y bool) bool { return (x) || !(y) },
2675 targetFunc: func(a, b, c, d T) bool {
2676 if (a != b) || !(c > d) {
2677 return true
2678 }
2679 return false
2680 },
2681 cmp1Expr: "a != b",
2682 cmp2Expr: "c > d",
2683 logicalExpr: "(a != b) || !(c > d)",
2684 },
2685 {
2686 cmp1: func(a, b T) bool { return a != b },
2687 cmp2: func(a, b T) bool { return a > b },
2688 combine: func(x, y bool) bool { return !(x) || (y) },
2689 targetFunc: func(a, b, c, d T) bool {
2690 if !(a != b) || (c > d) {
2691 return true
2692 }
2693 return false
2694 },
2695 cmp1Expr: "a != b",
2696 cmp2Expr: "c > d",
2697 logicalExpr: "!(a != b) || (c > d)",
2698 },
2699 {
2700 cmp1: func(a, b T) bool { return a != b },
2701 cmp2: func(a, b T) bool { return a > b },
2702 combine: func(x, y bool) bool { return !(x) || !(y) },
2703 targetFunc: func(a, b, c, d T) bool {
2704 if !(a != b) || !(c > d) {
2705 return true
2706 }
2707 return false
2708 },
2709 cmp1Expr: "a != b",
2710 cmp2Expr: "c > d",
2711 logicalExpr: "!(a != b) || !(c > d)",
2712 },
2713 {
2714 cmp1: func(a, b T) bool { return a >= b },
2715 cmp2: func(a, b T) bool { return a == b },
2716 combine: func(x, y bool) bool { return (x) && (y) },
2717 targetFunc: func(a, b, c, d T) bool {
2718 if (a >= b) && (c == d) {
2719 return true
2720 }
2721 return false
2722 },
2723 cmp1Expr: "a >= b",
2724 cmp2Expr: "c == d",
2725 logicalExpr: "(a >= b) && (c == d)",
2726 },
2727 {
2728 cmp1: func(a, b T) bool { return a >= b },
2729 cmp2: func(a, b T) bool { return a == b },
2730 combine: func(x, y bool) bool { return (x) && !(y) },
2731 targetFunc: func(a, b, c, d T) bool {
2732 if (a >= b) && !(c == d) {
2733 return true
2734 }
2735 return false
2736 },
2737 cmp1Expr: "a >= b",
2738 cmp2Expr: "c == d",
2739 logicalExpr: "(a >= b) && !(c == d)",
2740 },
2741 {
2742 cmp1: func(a, b T) bool { return a >= b },
2743 cmp2: func(a, b T) bool { return a == b },
2744 combine: func(x, y bool) bool { return !(x) && (y) },
2745 targetFunc: func(a, b, c, d T) bool {
2746 if !(a >= b) && (c == d) {
2747 return true
2748 }
2749 return false
2750 },
2751 cmp1Expr: "a >= b",
2752 cmp2Expr: "c == d",
2753 logicalExpr: "!(a >= b) && (c == d)",
2754 },
2755 {
2756 cmp1: func(a, b T) bool { return a >= b },
2757 cmp2: func(a, b T) bool { return a == b },
2758 combine: func(x, y bool) bool { return !(x) && !(y) },
2759 targetFunc: func(a, b, c, d T) bool {
2760 if !(a >= b) && !(c == d) {
2761 return true
2762 }
2763 return false
2764 },
2765 cmp1Expr: "a >= b",
2766 cmp2Expr: "c == d",
2767 logicalExpr: "!(a >= b) && !(c == d)",
2768 },
2769 {
2770 cmp1: func(a, b T) bool { return a >= b },
2771 cmp2: func(a, b T) bool { return a == b },
2772 combine: func(x, y bool) bool { return (x) || (y) },
2773 targetFunc: func(a, b, c, d T) bool {
2774 if (a >= b) || (c == d) {
2775 return true
2776 }
2777 return false
2778 },
2779 cmp1Expr: "a >= b",
2780 cmp2Expr: "c == d",
2781 logicalExpr: "(a >= b) || (c == d)",
2782 },
2783 {
2784 cmp1: func(a, b T) bool { return a >= b },
2785 cmp2: func(a, b T) bool { return a == b },
2786 combine: func(x, y bool) bool { return (x) || !(y) },
2787 targetFunc: func(a, b, c, d T) bool {
2788 if (a >= b) || !(c == d) {
2789 return true
2790 }
2791 return false
2792 },
2793 cmp1Expr: "a >= b",
2794 cmp2Expr: "c == d",
2795 logicalExpr: "(a >= b) || !(c == d)",
2796 },
2797 {
2798 cmp1: func(a, b T) bool { return a >= b },
2799 cmp2: func(a, b T) bool { return a == b },
2800 combine: func(x, y bool) bool { return !(x) || (y) },
2801 targetFunc: func(a, b, c, d T) bool {
2802 if !(a >= b) || (c == d) {
2803 return true
2804 }
2805 return false
2806 },
2807 cmp1Expr: "a >= b",
2808 cmp2Expr: "c == d",
2809 logicalExpr: "!(a >= b) || (c == d)",
2810 },
2811 {
2812 cmp1: func(a, b T) bool { return a >= b },
2813 cmp2: func(a, b T) bool { return a == b },
2814 combine: func(x, y bool) bool { return !(x) || !(y) },
2815 targetFunc: func(a, b, c, d T) bool {
2816 if !(a >= b) || !(c == d) {
2817 return true
2818 }
2819 return false
2820 },
2821 cmp1Expr: "a >= b",
2822 cmp2Expr: "c == d",
2823 logicalExpr: "!(a >= b) || !(c == d)",
2824 },
2825 {
2826 cmp1: func(a, b T) bool { return a >= b },
2827 cmp2: func(a, b T) bool { return a <= b },
2828 combine: func(x, y bool) bool { return (x) && (y) },
2829 targetFunc: func(a, b, c, d T) bool {
2830 if (a >= b) && (c <= d) {
2831 return true
2832 }
2833 return false
2834 },
2835 cmp1Expr: "a >= b",
2836 cmp2Expr: "c <= d",
2837 logicalExpr: "(a >= b) && (c <= d)",
2838 },
2839 {
2840 cmp1: func(a, b T) bool { return a >= b },
2841 cmp2: func(a, b T) bool { return a <= b },
2842 combine: func(x, y bool) bool { return (x) && !(y) },
2843 targetFunc: func(a, b, c, d T) bool {
2844 if (a >= b) && !(c <= d) {
2845 return true
2846 }
2847 return false
2848 },
2849 cmp1Expr: "a >= b",
2850 cmp2Expr: "c <= d",
2851 logicalExpr: "(a >= b) && !(c <= d)",
2852 },
2853 {
2854 cmp1: func(a, b T) bool { return a >= b },
2855 cmp2: func(a, b T) bool { return a <= b },
2856 combine: func(x, y bool) bool { return !(x) && (y) },
2857 targetFunc: func(a, b, c, d T) bool {
2858 if !(a >= b) && (c <= d) {
2859 return true
2860 }
2861 return false
2862 },
2863 cmp1Expr: "a >= b",
2864 cmp2Expr: "c <= d",
2865 logicalExpr: "!(a >= b) && (c <= d)",
2866 },
2867 {
2868 cmp1: func(a, b T) bool { return a >= b },
2869 cmp2: func(a, b T) bool { return a <= b },
2870 combine: func(x, y bool) bool { return !(x) && !(y) },
2871 targetFunc: func(a, b, c, d T) bool {
2872 if !(a >= b) && !(c <= d) {
2873 return true
2874 }
2875 return false
2876 },
2877 cmp1Expr: "a >= b",
2878 cmp2Expr: "c <= d",
2879 logicalExpr: "!(a >= b) && !(c <= d)",
2880 },
2881 {
2882 cmp1: func(a, b T) bool { return a >= b },
2883 cmp2: func(a, b T) bool { return a <= b },
2884 combine: func(x, y bool) bool { return (x) || (y) },
2885 targetFunc: func(a, b, c, d T) bool {
2886 if (a >= b) || (c <= d) {
2887 return true
2888 }
2889 return false
2890 },
2891 cmp1Expr: "a >= b",
2892 cmp2Expr: "c <= d",
2893 logicalExpr: "(a >= b) || (c <= d)",
2894 },
2895 {
2896 cmp1: func(a, b T) bool { return a >= b },
2897 cmp2: func(a, b T) bool { return a <= b },
2898 combine: func(x, y bool) bool { return (x) || !(y) },
2899 targetFunc: func(a, b, c, d T) bool {
2900 if (a >= b) || !(c <= d) {
2901 return true
2902 }
2903 return false
2904 },
2905 cmp1Expr: "a >= b",
2906 cmp2Expr: "c <= d",
2907 logicalExpr: "(a >= b) || !(c <= d)",
2908 },
2909 {
2910 cmp1: func(a, b T) bool { return a >= b },
2911 cmp2: func(a, b T) bool { return a <= b },
2912 combine: func(x, y bool) bool { return !(x) || (y) },
2913 targetFunc: func(a, b, c, d T) bool {
2914 if !(a >= b) || (c <= d) {
2915 return true
2916 }
2917 return false
2918 },
2919 cmp1Expr: "a >= b",
2920 cmp2Expr: "c <= d",
2921 logicalExpr: "!(a >= b) || (c <= d)",
2922 },
2923 {
2924 cmp1: func(a, b T) bool { return a >= b },
2925 cmp2: func(a, b T) bool { return a <= b },
2926 combine: func(x, y bool) bool { return !(x) || !(y) },
2927 targetFunc: func(a, b, c, d T) bool {
2928 if !(a >= b) || !(c <= d) {
2929 return true
2930 }
2931 return false
2932 },
2933 cmp1Expr: "a >= b",
2934 cmp2Expr: "c <= d",
2935 logicalExpr: "!(a >= b) || !(c <= d)",
2936 },
2937 {
2938 cmp1: func(a, b T) bool { return a >= b },
2939 cmp2: func(a, b T) bool { return a < b },
2940 combine: func(x, y bool) bool { return (x) && (y) },
2941 targetFunc: func(a, b, c, d T) bool {
2942 if (a >= b) && (c < d) {
2943 return true
2944 }
2945 return false
2946 },
2947 cmp1Expr: "a >= b",
2948 cmp2Expr: "c < d",
2949 logicalExpr: "(a >= b) && (c < d)",
2950 },
2951 {
2952 cmp1: func(a, b T) bool { return a >= b },
2953 cmp2: func(a, b T) bool { return a < b },
2954 combine: func(x, y bool) bool { return (x) && !(y) },
2955 targetFunc: func(a, b, c, d T) bool {
2956 if (a >= b) && !(c < d) {
2957 return true
2958 }
2959 return false
2960 },
2961 cmp1Expr: "a >= b",
2962 cmp2Expr: "c < d",
2963 logicalExpr: "(a >= b) && !(c < d)",
2964 },
2965 {
2966 cmp1: func(a, b T) bool { return a >= b },
2967 cmp2: func(a, b T) bool { return a < b },
2968 combine: func(x, y bool) bool { return !(x) && (y) },
2969 targetFunc: func(a, b, c, d T) bool {
2970 if !(a >= b) && (c < d) {
2971 return true
2972 }
2973 return false
2974 },
2975 cmp1Expr: "a >= b",
2976 cmp2Expr: "c < d",
2977 logicalExpr: "!(a >= b) && (c < d)",
2978 },
2979 {
2980 cmp1: func(a, b T) bool { return a >= b },
2981 cmp2: func(a, b T) bool { return a < b },
2982 combine: func(x, y bool) bool { return !(x) && !(y) },
2983 targetFunc: func(a, b, c, d T) bool {
2984 if !(a >= b) && !(c < d) {
2985 return true
2986 }
2987 return false
2988 },
2989 cmp1Expr: "a >= b",
2990 cmp2Expr: "c < d",
2991 logicalExpr: "!(a >= b) && !(c < d)",
2992 },
2993 {
2994 cmp1: func(a, b T) bool { return a >= b },
2995 cmp2: func(a, b T) bool { return a < b },
2996 combine: func(x, y bool) bool { return (x) || (y) },
2997 targetFunc: func(a, b, c, d T) bool {
2998 if (a >= b) || (c < d) {
2999 return true
3000 }
3001 return false
3002 },
3003 cmp1Expr: "a >= b",
3004 cmp2Expr: "c < d",
3005 logicalExpr: "(a >= b) || (c < d)",
3006 },
3007 {
3008 cmp1: func(a, b T) bool { return a >= b },
3009 cmp2: func(a, b T) bool { return a < b },
3010 combine: func(x, y bool) bool { return (x) || !(y) },
3011 targetFunc: func(a, b, c, d T) bool {
3012 if (a >= b) || !(c < d) {
3013 return true
3014 }
3015 return false
3016 },
3017 cmp1Expr: "a >= b",
3018 cmp2Expr: "c < d",
3019 logicalExpr: "(a >= b) || !(c < d)",
3020 },
3021 {
3022 cmp1: func(a, b T) bool { return a >= b },
3023 cmp2: func(a, b T) bool { return a < b },
3024 combine: func(x, y bool) bool { return !(x) || (y) },
3025 targetFunc: func(a, b, c, d T) bool {
3026 if !(a >= b) || (c < d) {
3027 return true
3028 }
3029 return false
3030 },
3031 cmp1Expr: "a >= b",
3032 cmp2Expr: "c < d",
3033 logicalExpr: "!(a >= b) || (c < d)",
3034 },
3035 {
3036 cmp1: func(a, b T) bool { return a >= b },
3037 cmp2: func(a, b T) bool { return a < b },
3038 combine: func(x, y bool) bool { return !(x) || !(y) },
3039 targetFunc: func(a, b, c, d T) bool {
3040 if !(a >= b) || !(c < d) {
3041 return true
3042 }
3043 return false
3044 },
3045 cmp1Expr: "a >= b",
3046 cmp2Expr: "c < d",
3047 logicalExpr: "!(a >= b) || !(c < d)",
3048 },
3049 {
3050 cmp1: func(a, b T) bool { return a >= b },
3051 cmp2: func(a, b T) bool { return a != b },
3052 combine: func(x, y bool) bool { return (x) && (y) },
3053 targetFunc: func(a, b, c, d T) bool {
3054 if (a >= b) && (c != d) {
3055 return true
3056 }
3057 return false
3058 },
3059 cmp1Expr: "a >= b",
3060 cmp2Expr: "c != d",
3061 logicalExpr: "(a >= b) && (c != d)",
3062 },
3063 {
3064 cmp1: func(a, b T) bool { return a >= b },
3065 cmp2: func(a, b T) bool { return a != b },
3066 combine: func(x, y bool) bool { return (x) && !(y) },
3067 targetFunc: func(a, b, c, d T) bool {
3068 if (a >= b) && !(c != d) {
3069 return true
3070 }
3071 return false
3072 },
3073 cmp1Expr: "a >= b",
3074 cmp2Expr: "c != d",
3075 logicalExpr: "(a >= b) && !(c != d)",
3076 },
3077 {
3078 cmp1: func(a, b T) bool { return a >= b },
3079 cmp2: func(a, b T) bool { return a != b },
3080 combine: func(x, y bool) bool { return !(x) && (y) },
3081 targetFunc: func(a, b, c, d T) bool {
3082 if !(a >= b) && (c != d) {
3083 return true
3084 }
3085 return false
3086 },
3087 cmp1Expr: "a >= b",
3088 cmp2Expr: "c != d",
3089 logicalExpr: "!(a >= b) && (c != d)",
3090 },
3091 {
3092 cmp1: func(a, b T) bool { return a >= b },
3093 cmp2: func(a, b T) bool { return a != b },
3094 combine: func(x, y bool) bool { return !(x) && !(y) },
3095 targetFunc: func(a, b, c, d T) bool {
3096 if !(a >= b) && !(c != d) {
3097 return true
3098 }
3099 return false
3100 },
3101 cmp1Expr: "a >= b",
3102 cmp2Expr: "c != d",
3103 logicalExpr: "!(a >= b) && !(c != d)",
3104 },
3105 {
3106 cmp1: func(a, b T) bool { return a >= b },
3107 cmp2: func(a, b T) bool { return a != b },
3108 combine: func(x, y bool) bool { return (x) || (y) },
3109 targetFunc: func(a, b, c, d T) bool {
3110 if (a >= b) || (c != d) {
3111 return true
3112 }
3113 return false
3114 },
3115 cmp1Expr: "a >= b",
3116 cmp2Expr: "c != d",
3117 logicalExpr: "(a >= b) || (c != d)",
3118 },
3119 {
3120 cmp1: func(a, b T) bool { return a >= b },
3121 cmp2: func(a, b T) bool { return a != b },
3122 combine: func(x, y bool) bool { return (x) || !(y) },
3123 targetFunc: func(a, b, c, d T) bool {
3124 if (a >= b) || !(c != d) {
3125 return true
3126 }
3127 return false
3128 },
3129 cmp1Expr: "a >= b",
3130 cmp2Expr: "c != d",
3131 logicalExpr: "(a >= b) || !(c != d)",
3132 },
3133 {
3134 cmp1: func(a, b T) bool { return a >= b },
3135 cmp2: func(a, b T) bool { return a != b },
3136 combine: func(x, y bool) bool { return !(x) || (y) },
3137 targetFunc: func(a, b, c, d T) bool {
3138 if !(a >= b) || (c != d) {
3139 return true
3140 }
3141 return false
3142 },
3143 cmp1Expr: "a >= b",
3144 cmp2Expr: "c != d",
3145 logicalExpr: "!(a >= b) || (c != d)",
3146 },
3147 {
3148 cmp1: func(a, b T) bool { return a >= b },
3149 cmp2: func(a, b T) bool { return a != b },
3150 combine: func(x, y bool) bool { return !(x) || !(y) },
3151 targetFunc: func(a, b, c, d T) bool {
3152 if !(a >= b) || !(c != d) {
3153 return true
3154 }
3155 return false
3156 },
3157 cmp1Expr: "a >= b",
3158 cmp2Expr: "c != d",
3159 logicalExpr: "!(a >= b) || !(c != d)",
3160 },
3161 {
3162 cmp1: func(a, b T) bool { return a >= b },
3163 cmp2: func(a, b T) bool { return a >= b },
3164 combine: func(x, y bool) bool { return (x) && (y) },
3165 targetFunc: func(a, b, c, d T) bool {
3166 if (a >= b) && (c >= d) {
3167 return true
3168 }
3169 return false
3170 },
3171 cmp1Expr: "a >= b",
3172 cmp2Expr: "c >= d",
3173 logicalExpr: "(a >= b) && (c >= d)",
3174 },
3175 {
3176 cmp1: func(a, b T) bool { return a >= b },
3177 cmp2: func(a, b T) bool { return a >= b },
3178 combine: func(x, y bool) bool { return (x) && !(y) },
3179 targetFunc: func(a, b, c, d T) bool {
3180 if (a >= b) && !(c >= d) {
3181 return true
3182 }
3183 return false
3184 },
3185 cmp1Expr: "a >= b",
3186 cmp2Expr: "c >= d",
3187 logicalExpr: "(a >= b) && !(c >= d)",
3188 },
3189 {
3190 cmp1: func(a, b T) bool { return a >= b },
3191 cmp2: func(a, b T) bool { return a >= b },
3192 combine: func(x, y bool) bool { return !(x) && (y) },
3193 targetFunc: func(a, b, c, d T) bool {
3194 if !(a >= b) && (c >= d) {
3195 return true
3196 }
3197 return false
3198 },
3199 cmp1Expr: "a >= b",
3200 cmp2Expr: "c >= d",
3201 logicalExpr: "!(a >= b) && (c >= d)",
3202 },
3203 {
3204 cmp1: func(a, b T) bool { return a >= b },
3205 cmp2: func(a, b T) bool { return a >= b },
3206 combine: func(x, y bool) bool { return !(x) && !(y) },
3207 targetFunc: func(a, b, c, d T) bool {
3208 if !(a >= b) && !(c >= d) {
3209 return true
3210 }
3211 return false
3212 },
3213 cmp1Expr: "a >= b",
3214 cmp2Expr: "c >= d",
3215 logicalExpr: "!(a >= b) && !(c >= d)",
3216 },
3217 {
3218 cmp1: func(a, b T) bool { return a >= b },
3219 cmp2: func(a, b T) bool { return a >= b },
3220 combine: func(x, y bool) bool { return (x) || (y) },
3221 targetFunc: func(a, b, c, d T) bool {
3222 if (a >= b) || (c >= d) {
3223 return true
3224 }
3225 return false
3226 },
3227 cmp1Expr: "a >= b",
3228 cmp2Expr: "c >= d",
3229 logicalExpr: "(a >= b) || (c >= d)",
3230 },
3231 {
3232 cmp1: func(a, b T) bool { return a >= b },
3233 cmp2: func(a, b T) bool { return a >= b },
3234 combine: func(x, y bool) bool { return (x) || !(y) },
3235 targetFunc: func(a, b, c, d T) bool {
3236 if (a >= b) || !(c >= d) {
3237 return true
3238 }
3239 return false
3240 },
3241 cmp1Expr: "a >= b",
3242 cmp2Expr: "c >= d",
3243 logicalExpr: "(a >= b) || !(c >= d)",
3244 },
3245 {
3246 cmp1: func(a, b T) bool { return a >= b },
3247 cmp2: func(a, b T) bool { return a >= b },
3248 combine: func(x, y bool) bool { return !(x) || (y) },
3249 targetFunc: func(a, b, c, d T) bool {
3250 if !(a >= b) || (c >= d) {
3251 return true
3252 }
3253 return false
3254 },
3255 cmp1Expr: "a >= b",
3256 cmp2Expr: "c >= d",
3257 logicalExpr: "!(a >= b) || (c >= d)",
3258 },
3259 {
3260 cmp1: func(a, b T) bool { return a >= b },
3261 cmp2: func(a, b T) bool { return a >= b },
3262 combine: func(x, y bool) bool { return !(x) || !(y) },
3263 targetFunc: func(a, b, c, d T) bool {
3264 if !(a >= b) || !(c >= d) {
3265 return true
3266 }
3267 return false
3268 },
3269 cmp1Expr: "a >= b",
3270 cmp2Expr: "c >= d",
3271 logicalExpr: "!(a >= b) || !(c >= d)",
3272 },
3273 {
3274 cmp1: func(a, b T) bool { return a >= b },
3275 cmp2: func(a, b T) bool { return a > b },
3276 combine: func(x, y bool) bool { return (x) && (y) },
3277 targetFunc: func(a, b, c, d T) bool {
3278 if (a >= b) && (c > d) {
3279 return true
3280 }
3281 return false
3282 },
3283 cmp1Expr: "a >= b",
3284 cmp2Expr: "c > d",
3285 logicalExpr: "(a >= b) && (c > d)",
3286 },
3287 {
3288 cmp1: func(a, b T) bool { return a >= b },
3289 cmp2: func(a, b T) bool { return a > b },
3290 combine: func(x, y bool) bool { return (x) && !(y) },
3291 targetFunc: func(a, b, c, d T) bool {
3292 if (a >= b) && !(c > d) {
3293 return true
3294 }
3295 return false
3296 },
3297 cmp1Expr: "a >= b",
3298 cmp2Expr: "c > d",
3299 logicalExpr: "(a >= b) && !(c > d)",
3300 },
3301 {
3302 cmp1: func(a, b T) bool { return a >= b },
3303 cmp2: func(a, b T) bool { return a > b },
3304 combine: func(x, y bool) bool { return !(x) && (y) },
3305 targetFunc: func(a, b, c, d T) bool {
3306 if !(a >= b) && (c > d) {
3307 return true
3308 }
3309 return false
3310 },
3311 cmp1Expr: "a >= b",
3312 cmp2Expr: "c > d",
3313 logicalExpr: "!(a >= b) && (c > d)",
3314 },
3315 {
3316 cmp1: func(a, b T) bool { return a >= b },
3317 cmp2: func(a, b T) bool { return a > b },
3318 combine: func(x, y bool) bool { return !(x) && !(y) },
3319 targetFunc: func(a, b, c, d T) bool {
3320 if !(a >= b) && !(c > d) {
3321 return true
3322 }
3323 return false
3324 },
3325 cmp1Expr: "a >= b",
3326 cmp2Expr: "c > d",
3327 logicalExpr: "!(a >= b) && !(c > d)",
3328 },
3329 {
3330 cmp1: func(a, b T) bool { return a >= b },
3331 cmp2: func(a, b T) bool { return a > b },
3332 combine: func(x, y bool) bool { return (x) || (y) },
3333 targetFunc: func(a, b, c, d T) bool {
3334 if (a >= b) || (c > d) {
3335 return true
3336 }
3337 return false
3338 },
3339 cmp1Expr: "a >= b",
3340 cmp2Expr: "c > d",
3341 logicalExpr: "(a >= b) || (c > d)",
3342 },
3343 {
3344 cmp1: func(a, b T) bool { return a >= b },
3345 cmp2: func(a, b T) bool { return a > b },
3346 combine: func(x, y bool) bool { return (x) || !(y) },
3347 targetFunc: func(a, b, c, d T) bool {
3348 if (a >= b) || !(c > d) {
3349 return true
3350 }
3351 return false
3352 },
3353 cmp1Expr: "a >= b",
3354 cmp2Expr: "c > d",
3355 logicalExpr: "(a >= b) || !(c > d)",
3356 },
3357 {
3358 cmp1: func(a, b T) bool { return a >= b },
3359 cmp2: func(a, b T) bool { return a > b },
3360 combine: func(x, y bool) bool { return !(x) || (y) },
3361 targetFunc: func(a, b, c, d T) bool {
3362 if !(a >= b) || (c > d) {
3363 return true
3364 }
3365 return false
3366 },
3367 cmp1Expr: "a >= b",
3368 cmp2Expr: "c > d",
3369 logicalExpr: "!(a >= b) || (c > d)",
3370 },
3371 {
3372 cmp1: func(a, b T) bool { return a >= b },
3373 cmp2: func(a, b T) bool { return a > b },
3374 combine: func(x, y bool) bool { return !(x) || !(y) },
3375 targetFunc: func(a, b, c, d T) bool {
3376 if !(a >= b) || !(c > d) {
3377 return true
3378 }
3379 return false
3380 },
3381 cmp1Expr: "a >= b",
3382 cmp2Expr: "c > d",
3383 logicalExpr: "!(a >= b) || !(c > d)",
3384 },
3385 {
3386 cmp1: func(a, b T) bool { return a > b },
3387 cmp2: func(a, b T) bool { return a == b },
3388 combine: func(x, y bool) bool { return (x) && (y) },
3389 targetFunc: func(a, b, c, d T) bool {
3390 if (a > b) && (c == d) {
3391 return true
3392 }
3393 return false
3394 },
3395 cmp1Expr: "a > b",
3396 cmp2Expr: "c == d",
3397 logicalExpr: "(a > b) && (c == d)",
3398 },
3399 {
3400 cmp1: func(a, b T) bool { return a > b },
3401 cmp2: func(a, b T) bool { return a == b },
3402 combine: func(x, y bool) bool { return (x) && !(y) },
3403 targetFunc: func(a, b, c, d T) bool {
3404 if (a > b) && !(c == d) {
3405 return true
3406 }
3407 return false
3408 },
3409 cmp1Expr: "a > b",
3410 cmp2Expr: "c == d",
3411 logicalExpr: "(a > b) && !(c == d)",
3412 },
3413 {
3414 cmp1: func(a, b T) bool { return a > b },
3415 cmp2: func(a, b T) bool { return a == b },
3416 combine: func(x, y bool) bool { return !(x) && (y) },
3417 targetFunc: func(a, b, c, d T) bool {
3418 if !(a > b) && (c == d) {
3419 return true
3420 }
3421 return false
3422 },
3423 cmp1Expr: "a > b",
3424 cmp2Expr: "c == d",
3425 logicalExpr: "!(a > b) && (c == d)",
3426 },
3427 {
3428 cmp1: func(a, b T) bool { return a > b },
3429 cmp2: func(a, b T) bool { return a == b },
3430 combine: func(x, y bool) bool { return !(x) && !(y) },
3431 targetFunc: func(a, b, c, d T) bool {
3432 if !(a > b) && !(c == d) {
3433 return true
3434 }
3435 return false
3436 },
3437 cmp1Expr: "a > b",
3438 cmp2Expr: "c == d",
3439 logicalExpr: "!(a > b) && !(c == d)",
3440 },
3441 {
3442 cmp1: func(a, b T) bool { return a > b },
3443 cmp2: func(a, b T) bool { return a == b },
3444 combine: func(x, y bool) bool { return (x) || (y) },
3445 targetFunc: func(a, b, c, d T) bool {
3446 if (a > b) || (c == d) {
3447 return true
3448 }
3449 return false
3450 },
3451 cmp1Expr: "a > b",
3452 cmp2Expr: "c == d",
3453 logicalExpr: "(a > b) || (c == d)",
3454 },
3455 {
3456 cmp1: func(a, b T) bool { return a > b },
3457 cmp2: func(a, b T) bool { return a == b },
3458 combine: func(x, y bool) bool { return (x) || !(y) },
3459 targetFunc: func(a, b, c, d T) bool {
3460 if (a > b) || !(c == d) {
3461 return true
3462 }
3463 return false
3464 },
3465 cmp1Expr: "a > b",
3466 cmp2Expr: "c == d",
3467 logicalExpr: "(a > b) || !(c == d)",
3468 },
3469 {
3470 cmp1: func(a, b T) bool { return a > b },
3471 cmp2: func(a, b T) bool { return a == b },
3472 combine: func(x, y bool) bool { return !(x) || (y) },
3473 targetFunc: func(a, b, c, d T) bool {
3474 if !(a > b) || (c == d) {
3475 return true
3476 }
3477 return false
3478 },
3479 cmp1Expr: "a > b",
3480 cmp2Expr: "c == d",
3481 logicalExpr: "!(a > b) || (c == d)",
3482 },
3483 {
3484 cmp1: func(a, b T) bool { return a > b },
3485 cmp2: func(a, b T) bool { return a == b },
3486 combine: func(x, y bool) bool { return !(x) || !(y) },
3487 targetFunc: func(a, b, c, d T) bool {
3488 if !(a > b) || !(c == d) {
3489 return true
3490 }
3491 return false
3492 },
3493 cmp1Expr: "a > b",
3494 cmp2Expr: "c == d",
3495 logicalExpr: "!(a > b) || !(c == d)",
3496 },
3497 {
3498 cmp1: func(a, b T) bool { return a > b },
3499 cmp2: func(a, b T) bool { return a <= b },
3500 combine: func(x, y bool) bool { return (x) && (y) },
3501 targetFunc: func(a, b, c, d T) bool {
3502 if (a > b) && (c <= d) {
3503 return true
3504 }
3505 return false
3506 },
3507 cmp1Expr: "a > b",
3508 cmp2Expr: "c <= d",
3509 logicalExpr: "(a > b) && (c <= d)",
3510 },
3511 {
3512 cmp1: func(a, b T) bool { return a > b },
3513 cmp2: func(a, b T) bool { return a <= b },
3514 combine: func(x, y bool) bool { return (x) && !(y) },
3515 targetFunc: func(a, b, c, d T) bool {
3516 if (a > b) && !(c <= d) {
3517 return true
3518 }
3519 return false
3520 },
3521 cmp1Expr: "a > b",
3522 cmp2Expr: "c <= d",
3523 logicalExpr: "(a > b) && !(c <= d)",
3524 },
3525 {
3526 cmp1: func(a, b T) bool { return a > b },
3527 cmp2: func(a, b T) bool { return a <= b },
3528 combine: func(x, y bool) bool { return !(x) && (y) },
3529 targetFunc: func(a, b, c, d T) bool {
3530 if !(a > b) && (c <= d) {
3531 return true
3532 }
3533 return false
3534 },
3535 cmp1Expr: "a > b",
3536 cmp2Expr: "c <= d",
3537 logicalExpr: "!(a > b) && (c <= d)",
3538 },
3539 {
3540 cmp1: func(a, b T) bool { return a > b },
3541 cmp2: func(a, b T) bool { return a <= b },
3542 combine: func(x, y bool) bool { return !(x) && !(y) },
3543 targetFunc: func(a, b, c, d T) bool {
3544 if !(a > b) && !(c <= d) {
3545 return true
3546 }
3547 return false
3548 },
3549 cmp1Expr: "a > b",
3550 cmp2Expr: "c <= d",
3551 logicalExpr: "!(a > b) && !(c <= d)",
3552 },
3553 {
3554 cmp1: func(a, b T) bool { return a > b },
3555 cmp2: func(a, b T) bool { return a <= b },
3556 combine: func(x, y bool) bool { return (x) || (y) },
3557 targetFunc: func(a, b, c, d T) bool {
3558 if (a > b) || (c <= d) {
3559 return true
3560 }
3561 return false
3562 },
3563 cmp1Expr: "a > b",
3564 cmp2Expr: "c <= d",
3565 logicalExpr: "(a > b) || (c <= d)",
3566 },
3567 {
3568 cmp1: func(a, b T) bool { return a > b },
3569 cmp2: func(a, b T) bool { return a <= b },
3570 combine: func(x, y bool) bool { return (x) || !(y) },
3571 targetFunc: func(a, b, c, d T) bool {
3572 if (a > b) || !(c <= d) {
3573 return true
3574 }
3575 return false
3576 },
3577 cmp1Expr: "a > b",
3578 cmp2Expr: "c <= d",
3579 logicalExpr: "(a > b) || !(c <= d)",
3580 },
3581 {
3582 cmp1: func(a, b T) bool { return a > b },
3583 cmp2: func(a, b T) bool { return a <= b },
3584 combine: func(x, y bool) bool { return !(x) || (y) },
3585 targetFunc: func(a, b, c, d T) bool {
3586 if !(a > b) || (c <= d) {
3587 return true
3588 }
3589 return false
3590 },
3591 cmp1Expr: "a > b",
3592 cmp2Expr: "c <= d",
3593 logicalExpr: "!(a > b) || (c <= d)",
3594 },
3595 {
3596 cmp1: func(a, b T) bool { return a > b },
3597 cmp2: func(a, b T) bool { return a <= b },
3598 combine: func(x, y bool) bool { return !(x) || !(y) },
3599 targetFunc: func(a, b, c, d T) bool {
3600 if !(a > b) || !(c <= d) {
3601 return true
3602 }
3603 return false
3604 },
3605 cmp1Expr: "a > b",
3606 cmp2Expr: "c <= d",
3607 logicalExpr: "!(a > b) || !(c <= d)",
3608 },
3609 {
3610 cmp1: func(a, b T) bool { return a > b },
3611 cmp2: func(a, b T) bool { return a < b },
3612 combine: func(x, y bool) bool { return (x) && (y) },
3613 targetFunc: func(a, b, c, d T) bool {
3614 if (a > b) && (c < d) {
3615 return true
3616 }
3617 return false
3618 },
3619 cmp1Expr: "a > b",
3620 cmp2Expr: "c < d",
3621 logicalExpr: "(a > b) && (c < d)",
3622 },
3623 {
3624 cmp1: func(a, b T) bool { return a > b },
3625 cmp2: func(a, b T) bool { return a < b },
3626 combine: func(x, y bool) bool { return (x) && !(y) },
3627 targetFunc: func(a, b, c, d T) bool {
3628 if (a > b) && !(c < d) {
3629 return true
3630 }
3631 return false
3632 },
3633 cmp1Expr: "a > b",
3634 cmp2Expr: "c < d",
3635 logicalExpr: "(a > b) && !(c < d)",
3636 },
3637 {
3638 cmp1: func(a, b T) bool { return a > b },
3639 cmp2: func(a, b T) bool { return a < b },
3640 combine: func(x, y bool) bool { return !(x) && (y) },
3641 targetFunc: func(a, b, c, d T) bool {
3642 if !(a > b) && (c < d) {
3643 return true
3644 }
3645 return false
3646 },
3647 cmp1Expr: "a > b",
3648 cmp2Expr: "c < d",
3649 logicalExpr: "!(a > b) && (c < d)",
3650 },
3651 {
3652 cmp1: func(a, b T) bool { return a > b },
3653 cmp2: func(a, b T) bool { return a < b },
3654 combine: func(x, y bool) bool { return !(x) && !(y) },
3655 targetFunc: func(a, b, c, d T) bool {
3656 if !(a > b) && !(c < d) {
3657 return true
3658 }
3659 return false
3660 },
3661 cmp1Expr: "a > b",
3662 cmp2Expr: "c < d",
3663 logicalExpr: "!(a > b) && !(c < d)",
3664 },
3665 {
3666 cmp1: func(a, b T) bool { return a > b },
3667 cmp2: func(a, b T) bool { return a < b },
3668 combine: func(x, y bool) bool { return (x) || (y) },
3669 targetFunc: func(a, b, c, d T) bool {
3670 if (a > b) || (c < d) {
3671 return true
3672 }
3673 return false
3674 },
3675 cmp1Expr: "a > b",
3676 cmp2Expr: "c < d",
3677 logicalExpr: "(a > b) || (c < d)",
3678 },
3679 {
3680 cmp1: func(a, b T) bool { return a > b },
3681 cmp2: func(a, b T) bool { return a < b },
3682 combine: func(x, y bool) bool { return (x) || !(y) },
3683 targetFunc: func(a, b, c, d T) bool {
3684 if (a > b) || !(c < d) {
3685 return true
3686 }
3687 return false
3688 },
3689 cmp1Expr: "a > b",
3690 cmp2Expr: "c < d",
3691 logicalExpr: "(a > b) || !(c < d)",
3692 },
3693 {
3694 cmp1: func(a, b T) bool { return a > b },
3695 cmp2: func(a, b T) bool { return a < b },
3696 combine: func(x, y bool) bool { return !(x) || (y) },
3697 targetFunc: func(a, b, c, d T) bool {
3698 if !(a > b) || (c < d) {
3699 return true
3700 }
3701 return false
3702 },
3703 cmp1Expr: "a > b",
3704 cmp2Expr: "c < d",
3705 logicalExpr: "!(a > b) || (c < d)",
3706 },
3707 {
3708 cmp1: func(a, b T) bool { return a > b },
3709 cmp2: func(a, b T) bool { return a < b },
3710 combine: func(x, y bool) bool { return !(x) || !(y) },
3711 targetFunc: func(a, b, c, d T) bool {
3712 if !(a > b) || !(c < d) {
3713 return true
3714 }
3715 return false
3716 },
3717 cmp1Expr: "a > b",
3718 cmp2Expr: "c < d",
3719 logicalExpr: "!(a > b) || !(c < d)",
3720 },
3721 {
3722 cmp1: func(a, b T) bool { return a > b },
3723 cmp2: func(a, b T) bool { return a != b },
3724 combine: func(x, y bool) bool { return (x) && (y) },
3725 targetFunc: func(a, b, c, d T) bool {
3726 if (a > b) && (c != d) {
3727 return true
3728 }
3729 return false
3730 },
3731 cmp1Expr: "a > b",
3732 cmp2Expr: "c != d",
3733 logicalExpr: "(a > b) && (c != d)",
3734 },
3735 {
3736 cmp1: func(a, b T) bool { return a > b },
3737 cmp2: func(a, b T) bool { return a != b },
3738 combine: func(x, y bool) bool { return (x) && !(y) },
3739 targetFunc: func(a, b, c, d T) bool {
3740 if (a > b) && !(c != d) {
3741 return true
3742 }
3743 return false
3744 },
3745 cmp1Expr: "a > b",
3746 cmp2Expr: "c != d",
3747 logicalExpr: "(a > b) && !(c != d)",
3748 },
3749 {
3750 cmp1: func(a, b T) bool { return a > b },
3751 cmp2: func(a, b T) bool { return a != b },
3752 combine: func(x, y bool) bool { return !(x) && (y) },
3753 targetFunc: func(a, b, c, d T) bool {
3754 if !(a > b) && (c != d) {
3755 return true
3756 }
3757 return false
3758 },
3759 cmp1Expr: "a > b",
3760 cmp2Expr: "c != d",
3761 logicalExpr: "!(a > b) && (c != d)",
3762 },
3763 {
3764 cmp1: func(a, b T) bool { return a > b },
3765 cmp2: func(a, b T) bool { return a != b },
3766 combine: func(x, y bool) bool { return !(x) && !(y) },
3767 targetFunc: func(a, b, c, d T) bool {
3768 if !(a > b) && !(c != d) {
3769 return true
3770 }
3771 return false
3772 },
3773 cmp1Expr: "a > b",
3774 cmp2Expr: "c != d",
3775 logicalExpr: "!(a > b) && !(c != d)",
3776 },
3777 {
3778 cmp1: func(a, b T) bool { return a > b },
3779 cmp2: func(a, b T) bool { return a != b },
3780 combine: func(x, y bool) bool { return (x) || (y) },
3781 targetFunc: func(a, b, c, d T) bool {
3782 if (a > b) || (c != d) {
3783 return true
3784 }
3785 return false
3786 },
3787 cmp1Expr: "a > b",
3788 cmp2Expr: "c != d",
3789 logicalExpr: "(a > b) || (c != d)",
3790 },
3791 {
3792 cmp1: func(a, b T) bool { return a > b },
3793 cmp2: func(a, b T) bool { return a != b },
3794 combine: func(x, y bool) bool { return (x) || !(y) },
3795 targetFunc: func(a, b, c, d T) bool {
3796 if (a > b) || !(c != d) {
3797 return true
3798 }
3799 return false
3800 },
3801 cmp1Expr: "a > b",
3802 cmp2Expr: "c != d",
3803 logicalExpr: "(a > b) || !(c != d)",
3804 },
3805 {
3806 cmp1: func(a, b T) bool { return a > b },
3807 cmp2: func(a, b T) bool { return a != b },
3808 combine: func(x, y bool) bool { return !(x) || (y) },
3809 targetFunc: func(a, b, c, d T) bool {
3810 if !(a > b) || (c != d) {
3811 return true
3812 }
3813 return false
3814 },
3815 cmp1Expr: "a > b",
3816 cmp2Expr: "c != d",
3817 logicalExpr: "!(a > b) || (c != d)",
3818 },
3819 {
3820 cmp1: func(a, b T) bool { return a > b },
3821 cmp2: func(a, b T) bool { return a != b },
3822 combine: func(x, y bool) bool { return !(x) || !(y) },
3823 targetFunc: func(a, b, c, d T) bool {
3824 if !(a > b) || !(c != d) {
3825 return true
3826 }
3827 return false
3828 },
3829 cmp1Expr: "a > b",
3830 cmp2Expr: "c != d",
3831 logicalExpr: "!(a > b) || !(c != d)",
3832 },
3833 {
3834 cmp1: func(a, b T) bool { return a > b },
3835 cmp2: func(a, b T) bool { return a >= b },
3836 combine: func(x, y bool) bool { return (x) && (y) },
3837 targetFunc: func(a, b, c, d T) bool {
3838 if (a > b) && (c >= d) {
3839 return true
3840 }
3841 return false
3842 },
3843 cmp1Expr: "a > b",
3844 cmp2Expr: "c >= d",
3845 logicalExpr: "(a > b) && (c >= d)",
3846 },
3847 {
3848 cmp1: func(a, b T) bool { return a > b },
3849 cmp2: func(a, b T) bool { return a >= b },
3850 combine: func(x, y bool) bool { return (x) && !(y) },
3851 targetFunc: func(a, b, c, d T) bool {
3852 if (a > b) && !(c >= d) {
3853 return true
3854 }
3855 return false
3856 },
3857 cmp1Expr: "a > b",
3858 cmp2Expr: "c >= d",
3859 logicalExpr: "(a > b) && !(c >= d)",
3860 },
3861 {
3862 cmp1: func(a, b T) bool { return a > b },
3863 cmp2: func(a, b T) bool { return a >= b },
3864 combine: func(x, y bool) bool { return !(x) && (y) },
3865 targetFunc: func(a, b, c, d T) bool {
3866 if !(a > b) && (c >= d) {
3867 return true
3868 }
3869 return false
3870 },
3871 cmp1Expr: "a > b",
3872 cmp2Expr: "c >= d",
3873 logicalExpr: "!(a > b) && (c >= d)",
3874 },
3875 {
3876 cmp1: func(a, b T) bool { return a > b },
3877 cmp2: func(a, b T) bool { return a >= b },
3878 combine: func(x, y bool) bool { return !(x) && !(y) },
3879 targetFunc: func(a, b, c, d T) bool {
3880 if !(a > b) && !(c >= d) {
3881 return true
3882 }
3883 return false
3884 },
3885 cmp1Expr: "a > b",
3886 cmp2Expr: "c >= d",
3887 logicalExpr: "!(a > b) && !(c >= d)",
3888 },
3889 {
3890 cmp1: func(a, b T) bool { return a > b },
3891 cmp2: func(a, b T) bool { return a >= b },
3892 combine: func(x, y bool) bool { return (x) || (y) },
3893 targetFunc: func(a, b, c, d T) bool {
3894 if (a > b) || (c >= d) {
3895 return true
3896 }
3897 return false
3898 },
3899 cmp1Expr: "a > b",
3900 cmp2Expr: "c >= d",
3901 logicalExpr: "(a > b) || (c >= d)",
3902 },
3903 {
3904 cmp1: func(a, b T) bool { return a > b },
3905 cmp2: func(a, b T) bool { return a >= b },
3906 combine: func(x, y bool) bool { return (x) || !(y) },
3907 targetFunc: func(a, b, c, d T) bool {
3908 if (a > b) || !(c >= d) {
3909 return true
3910 }
3911 return false
3912 },
3913 cmp1Expr: "a > b",
3914 cmp2Expr: "c >= d",
3915 logicalExpr: "(a > b) || !(c >= d)",
3916 },
3917 {
3918 cmp1: func(a, b T) bool { return a > b },
3919 cmp2: func(a, b T) bool { return a >= b },
3920 combine: func(x, y bool) bool { return !(x) || (y) },
3921 targetFunc: func(a, b, c, d T) bool {
3922 if !(a > b) || (c >= d) {
3923 return true
3924 }
3925 return false
3926 },
3927 cmp1Expr: "a > b",
3928 cmp2Expr: "c >= d",
3929 logicalExpr: "!(a > b) || (c >= d)",
3930 },
3931 {
3932 cmp1: func(a, b T) bool { return a > b },
3933 cmp2: func(a, b T) bool { return a >= b },
3934 combine: func(x, y bool) bool { return !(x) || !(y) },
3935 targetFunc: func(a, b, c, d T) bool {
3936 if !(a > b) || !(c >= d) {
3937 return true
3938 }
3939 return false
3940 },
3941 cmp1Expr: "a > b",
3942 cmp2Expr: "c >= d",
3943 logicalExpr: "!(a > b) || !(c >= d)",
3944 },
3945 {
3946 cmp1: func(a, b T) bool { return a > b },
3947 cmp2: func(a, b T) bool { return a > b },
3948 combine: func(x, y bool) bool { return (x) && (y) },
3949 targetFunc: func(a, b, c, d T) bool {
3950 if (a > b) && (c > d) {
3951 return true
3952 }
3953 return false
3954 },
3955 cmp1Expr: "a > b",
3956 cmp2Expr: "c > d",
3957 logicalExpr: "(a > b) && (c > d)",
3958 },
3959 {
3960 cmp1: func(a, b T) bool { return a > b },
3961 cmp2: func(a, b T) bool { return a > b },
3962 combine: func(x, y bool) bool { return (x) && !(y) },
3963 targetFunc: func(a, b, c, d T) bool {
3964 if (a > b) && !(c > d) {
3965 return true
3966 }
3967 return false
3968 },
3969 cmp1Expr: "a > b",
3970 cmp2Expr: "c > d",
3971 logicalExpr: "(a > b) && !(c > d)",
3972 },
3973 {
3974 cmp1: func(a, b T) bool { return a > b },
3975 cmp2: func(a, b T) bool { return a > b },
3976 combine: func(x, y bool) bool { return !(x) && (y) },
3977 targetFunc: func(a, b, c, d T) bool {
3978 if !(a > b) && (c > d) {
3979 return true
3980 }
3981 return false
3982 },
3983 cmp1Expr: "a > b",
3984 cmp2Expr: "c > d",
3985 logicalExpr: "!(a > b) && (c > d)",
3986 },
3987 {
3988 cmp1: func(a, b T) bool { return a > b },
3989 cmp2: func(a, b T) bool { return a > b },
3990 combine: func(x, y bool) bool { return !(x) && !(y) },
3991 targetFunc: func(a, b, c, d T) bool {
3992 if !(a > b) && !(c > d) {
3993 return true
3994 }
3995 return false
3996 },
3997 cmp1Expr: "a > b",
3998 cmp2Expr: "c > d",
3999 logicalExpr: "!(a > b) && !(c > d)",
4000 },
4001 {
4002 cmp1: func(a, b T) bool { return a > b },
4003 cmp2: func(a, b T) bool { return a > b },
4004 combine: func(x, y bool) bool { return (x) || (y) },
4005 targetFunc: func(a, b, c, d T) bool {
4006 if (a > b) || (c > d) {
4007 return true
4008 }
4009 return false
4010 },
4011 cmp1Expr: "a > b",
4012 cmp2Expr: "c > d",
4013 logicalExpr: "(a > b) || (c > d)",
4014 },
4015 {
4016 cmp1: func(a, b T) bool { return a > b },
4017 cmp2: func(a, b T) bool { return a > b },
4018 combine: func(x, y bool) bool { return (x) || !(y) },
4019 targetFunc: func(a, b, c, d T) bool {
4020 if (a > b) || !(c > d) {
4021 return true
4022 }
4023 return false
4024 },
4025 cmp1Expr: "a > b",
4026 cmp2Expr: "c > d",
4027 logicalExpr: "(a > b) || !(c > d)",
4028 },
4029 {
4030 cmp1: func(a, b T) bool { return a > b },
4031 cmp2: func(a, b T) bool { return a > b },
4032 combine: func(x, y bool) bool { return !(x) || (y) },
4033 targetFunc: func(a, b, c, d T) bool {
4034 if !(a > b) || (c > d) {
4035 return true
4036 }
4037 return false
4038 },
4039 cmp1Expr: "a > b",
4040 cmp2Expr: "c > d",
4041 logicalExpr: "!(a > b) || (c > d)",
4042 },
4043 {
4044 cmp1: func(a, b T) bool { return a > b },
4045 cmp2: func(a, b T) bool { return a > b },
4046 combine: func(x, y bool) bool { return !(x) || !(y) },
4047 targetFunc: func(a, b, c, d T) bool {
4048 if !(a > b) || !(c > d) {
4049 return true
4050 }
4051 return false
4052 },
4053 cmp1Expr: "a > b",
4054 cmp2Expr: "c > d",
4055 logicalExpr: "!(a > b) || !(c > d)",
4056 },
4057 }
4058 }
4059
4060 func TestInt8ConditionalCmpConst(t *testing.T) {
4061 testCases := generateTestCases[int8]()
4062 base := int8(1 << 6)
4063 values := [3]int8{base - 1, base, base + 1}
4064
4065 for _, tc := range testCases {
4066 a, c := base, base
4067 for _, b := range values {
4068 for _, d := range values {
4069 expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
4070 actual := tc.targetFunc(a, b, c, d)
4071 if actual != expected {
4072 t.Errorf("conditional comparison failed:\n"+
4073 " type: %T\n"+
4074 " condition: %s\n"+
4075 " values: a=%v, b=%v, c=%v, d=%v\n"+
4076 " cmp1(a,b)=%v (%s)\n"+
4077 " cmp2(c,d)=%v (%s)\n"+
4078 " expected: combine(%v, %v)=%v\n"+
4079 " actual: %v\n"+
4080 " logical expression: %s",
4081 a,
4082 tc.logicalExpr,
4083 a, b, c, d,
4084 tc.cmp1(a, b), tc.cmp1Expr,
4085 tc.cmp2(c, d), tc.cmp2Expr,
4086 tc.cmp1(a, b), tc.cmp2(c, d), expected,
4087 actual,
4088 tc.logicalExpr)
4089 }
4090 }
4091 }
4092 }
4093 }
4094
4095 func TestUint8ConditionalCmpConst(t *testing.T) {
4096 testCases := generateTestCases[uint8]()
4097 base := uint8(1 << 6)
4098 values := [3]uint8{base - 1, base, base + 1}
4099
4100 for _, tc := range testCases {
4101 a, c := base, base
4102 for _, b := range values {
4103 for _, d := range values {
4104 expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
4105 actual := tc.targetFunc(a, b, c, d)
4106 if actual != expected {
4107 t.Errorf("conditional comparison failed:\n"+
4108 " type: %T\n"+
4109 " condition: %s\n"+
4110 " values: a=%v, b=%v, c=%v, d=%v\n"+
4111 " cmp1(a,b)=%v (%s)\n"+
4112 " cmp2(c,d)=%v (%s)\n"+
4113 " expected: combine(%v, %v)=%v\n"+
4114 " actual: %v\n"+
4115 " logical expression: %s",
4116 a,
4117 tc.logicalExpr,
4118 a, b, c, d,
4119 tc.cmp1(a, b), tc.cmp1Expr,
4120 tc.cmp2(c, d), tc.cmp2Expr,
4121 tc.cmp1(a, b), tc.cmp2(c, d), expected,
4122 actual,
4123 tc.logicalExpr)
4124 }
4125 }
4126 }
4127 }
4128 }
4129
4130 func TestInt16ConditionalCmpConst(t *testing.T) {
4131 testCases := generateTestCases[int16]()
4132 base := int16(1 << 14)
4133 values := [3]int16{base - 1, base, base + 1}
4134
4135 for _, tc := range testCases {
4136 a, c := base, base
4137 for _, b := range values {
4138 for _, d := range values {
4139 expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
4140 actual := tc.targetFunc(a, b, c, d)
4141 if actual != expected {
4142 t.Errorf("conditional comparison failed:\n"+
4143 " type: %T\n"+
4144 " condition: %s\n"+
4145 " values: a=%v, b=%v, c=%v, d=%v\n"+
4146 " cmp1(a,b)=%v (%s)\n"+
4147 " cmp2(c,d)=%v (%s)\n"+
4148 " expected: combine(%v, %v)=%v\n"+
4149 " actual: %v\n"+
4150 " logical expression: %s",
4151 a,
4152 tc.logicalExpr,
4153 a, b, c, d,
4154 tc.cmp1(a, b), tc.cmp1Expr,
4155 tc.cmp2(c, d), tc.cmp2Expr,
4156 tc.cmp1(a, b), tc.cmp2(c, d), expected,
4157 actual,
4158 tc.logicalExpr)
4159 }
4160 }
4161 }
4162 }
4163 }
4164
4165 func TestUint16ConditionalCmpConst(t *testing.T) {
4166 testCases := generateTestCases[uint16]()
4167 base := uint16(1 << 14)
4168 values := [3]uint16{base - 1, base, base + 1}
4169
4170 for _, tc := range testCases {
4171 a, c := base, base
4172 for _, b := range values {
4173 for _, d := range values {
4174 expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
4175 actual := tc.targetFunc(a, b, c, d)
4176 if actual != expected {
4177 t.Errorf("conditional comparison failed:\n"+
4178 " type: %T\n"+
4179 " condition: %s\n"+
4180 " values: a=%v, b=%v, c=%v, d=%v\n"+
4181 " cmp1(a,b)=%v (%s)\n"+
4182 " cmp2(c,d)=%v (%s)\n"+
4183 " expected: combine(%v, %v)=%v\n"+
4184 " actual: %v\n"+
4185 " logical expression: %s",
4186 a,
4187 tc.logicalExpr,
4188 a, b, c, d,
4189 tc.cmp1(a, b), tc.cmp1Expr,
4190 tc.cmp2(c, d), tc.cmp2Expr,
4191 tc.cmp1(a, b), tc.cmp2(c, d), expected,
4192 actual,
4193 tc.logicalExpr)
4194 }
4195 }
4196 }
4197 }
4198 }
4199
4200 func TestInt32ConditionalCmpConst(t *testing.T) {
4201 testCases := generateTestCases[int32]()
4202 base := int32(1 << 30)
4203 values := [3]int32{base - 1, base, base + 1}
4204
4205 for _, tc := range testCases {
4206 a, c := base, base
4207 for _, b := range values {
4208 for _, d := range values {
4209 expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
4210 actual := tc.targetFunc(a, b, c, d)
4211 if actual != expected {
4212 t.Errorf("conditional comparison failed:\n"+
4213 " type: %T\n"+
4214 " condition: %s\n"+
4215 " values: a=%v, b=%v, c=%v, d=%v\n"+
4216 " cmp1(a,b)=%v (%s)\n"+
4217 " cmp2(c,d)=%v (%s)\n"+
4218 " expected: combine(%v, %v)=%v\n"+
4219 " actual: %v\n"+
4220 " logical expression: %s",
4221 a,
4222 tc.logicalExpr,
4223 a, b, c, d,
4224 tc.cmp1(a, b), tc.cmp1Expr,
4225 tc.cmp2(c, d), tc.cmp2Expr,
4226 tc.cmp1(a, b), tc.cmp2(c, d), expected,
4227 actual,
4228 tc.logicalExpr)
4229 }
4230 }
4231 }
4232 }
4233 }
4234
4235 func TestUint32ConditionalCmpConst(t *testing.T) {
4236 testCases := generateTestCases[uint32]()
4237 base := uint32(1 << 30)
4238 values := [3]uint32{base - 1, base, base + 1}
4239
4240 for _, tc := range testCases {
4241 a, c := base, base
4242 for _, b := range values {
4243 for _, d := range values {
4244 expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
4245 actual := tc.targetFunc(a, b, c, d)
4246 if actual != expected {
4247 t.Errorf("conditional comparison failed:\n"+
4248 " type: %T\n"+
4249 " condition: %s\n"+
4250 " values: a=%v, b=%v, c=%v, d=%v\n"+
4251 " cmp1(a,b)=%v (%s)\n"+
4252 " cmp2(c,d)=%v (%s)\n"+
4253 " expected: combine(%v, %v)=%v\n"+
4254 " actual: %v\n"+
4255 " logical expression: %s",
4256 a,
4257 tc.logicalExpr,
4258 a, b, c, d,
4259 tc.cmp1(a, b), tc.cmp1Expr,
4260 tc.cmp2(c, d), tc.cmp2Expr,
4261 tc.cmp1(a, b), tc.cmp2(c, d), expected,
4262 actual,
4263 tc.logicalExpr)
4264 }
4265 }
4266 }
4267 }
4268 }
4269
4270 func TestIntConditionalCmpConst(t *testing.T) {
4271 testCases := generateTestCases[int]()
4272 base := int(1 << 30)
4273 values := [3]int{base - 1, base, base + 1}
4274
4275 for _, tc := range testCases {
4276 a, c := base, base
4277 for _, b := range values {
4278 for _, d := range values {
4279 expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
4280 actual := tc.targetFunc(a, b, c, d)
4281 if actual != expected {
4282 t.Errorf("conditional comparison failed:\n"+
4283 " type: %T\n"+
4284 " condition: %s\n"+
4285 " values: a=%v, b=%v, c=%v, d=%v\n"+
4286 " cmp1(a,b)=%v (%s)\n"+
4287 " cmp2(c,d)=%v (%s)\n"+
4288 " expected: combine(%v, %v)=%v\n"+
4289 " actual: %v\n"+
4290 " logical expression: %s",
4291 a,
4292 tc.logicalExpr,
4293 a, b, c, d,
4294 tc.cmp1(a, b), tc.cmp1Expr,
4295 tc.cmp2(c, d), tc.cmp2Expr,
4296 tc.cmp1(a, b), tc.cmp2(c, d), expected,
4297 actual,
4298 tc.logicalExpr)
4299 }
4300 }
4301 }
4302 }
4303 }
4304
4305 func TestUintConditionalCmpConst(t *testing.T) {
4306 testCases := generateTestCases[uint]()
4307 base := uint(1 << 30)
4308 values := [3]uint{base - 1, base, base + 1}
4309
4310 for _, tc := range testCases {
4311 a, c := base, base
4312 for _, b := range values {
4313 for _, d := range values {
4314 expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
4315 actual := tc.targetFunc(a, b, c, d)
4316 if actual != expected {
4317 t.Errorf("conditional comparison failed:\n"+
4318 " type: %T\n"+
4319 " condition: %s\n"+
4320 " values: a=%v, b=%v, c=%v, d=%v\n"+
4321 " cmp1(a,b)=%v (%s)\n"+
4322 " cmp2(c,d)=%v (%s)\n"+
4323 " expected: combine(%v, %v)=%v\n"+
4324 " actual: %v\n"+
4325 " logical expression: %s",
4326 a,
4327 tc.logicalExpr,
4328 a, b, c, d,
4329 tc.cmp1(a, b), tc.cmp1Expr,
4330 tc.cmp2(c, d), tc.cmp2Expr,
4331 tc.cmp1(a, b), tc.cmp2(c, d), expected,
4332 actual,
4333 tc.logicalExpr)
4334 }
4335 }
4336 }
4337 }
4338 }
4339
4340 func TestInt64ConditionalCmpConst(t *testing.T) {
4341 testCases := generateTestCases[int64]()
4342 base := int64(1 << 62)
4343 values := [3]int64{base - 1, base, base + 1}
4344
4345 for _, tc := range testCases {
4346 a, c := base, base
4347 for _, b := range values {
4348 for _, d := range values {
4349 expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
4350 actual := tc.targetFunc(a, b, c, d)
4351 if actual != expected {
4352 t.Errorf("conditional comparison failed:\n"+
4353 " type: %T\n"+
4354 " condition: %s\n"+
4355 " values: a=%v, b=%v, c=%v, d=%v\n"+
4356 " cmp1(a,b)=%v (%s)\n"+
4357 " cmp2(c,d)=%v (%s)\n"+
4358 " expected: combine(%v, %v)=%v\n"+
4359 " actual: %v\n"+
4360 " logical expression: %s",
4361 a,
4362 tc.logicalExpr,
4363 a, b, c, d,
4364 tc.cmp1(a, b), tc.cmp1Expr,
4365 tc.cmp2(c, d), tc.cmp2Expr,
4366 tc.cmp1(a, b), tc.cmp2(c, d), expected,
4367 actual,
4368 tc.logicalExpr)
4369 }
4370 }
4371 }
4372 }
4373 }
4374
4375 func TestUint64ConditionalCmpConst(t *testing.T) {
4376 testCases := generateTestCases[uint64]()
4377 base := uint64(1 << 62)
4378 values := [3]uint64{base - 1, base, base + 1}
4379
4380 for _, tc := range testCases {
4381 a, c := base, base
4382 for _, b := range values {
4383 for _, d := range values {
4384 expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
4385 actual := tc.targetFunc(a, b, c, d)
4386 if actual != expected {
4387 t.Errorf("conditional comparison failed:\n"+
4388 " type: %T\n"+
4389 " condition: %s\n"+
4390 " values: a=%v, b=%v, c=%v, d=%v\n"+
4391 " cmp1(a,b)=%v (%s)\n"+
4392 " cmp2(c,d)=%v (%s)\n"+
4393 " expected: combine(%v, %v)=%v\n"+
4394 " actual: %v\n"+
4395 " logical expression: %s",
4396 a,
4397 tc.logicalExpr,
4398 a, b, c, d,
4399 tc.cmp1(a, b), tc.cmp1Expr,
4400 tc.cmp2(c, d), tc.cmp2Expr,
4401 tc.cmp1(a, b), tc.cmp2(c, d), expected,
4402 actual,
4403 tc.logicalExpr)
4404 }
4405 }
4406 }
4407 }
4408 }
4409
View as plain text