|
| 1 | +import { plusMinus } from "../plus-minus"; |
| 2 | + |
| 3 | +type FirstArg = number[]; |
| 4 | +type ExpectedResult = string; |
| 5 | +type Cases = [FirstArg, ExpectedResult][]; |
| 6 | + |
| 7 | +/** |
| 8 | + * |
| 9 | + */ |
| 10 | +describe("Plus Minus", () => { |
| 11 | + const cases: Cases = [ |
| 12 | + [[0, 0, -1, 1, 1], "0.400000\n0.200000\n0.400000"], |
| 13 | + [[-4, 3, -9, 0, 4, 1], "0.500000\n0.333333\n0.166667"], |
| 14 | + [[1, -2, -7, 9, 1, -8, -5], "0.428571\n0.571429\n0.000000"], |
| 15 | + [[0, 4, -3, 3, -6], "0.400000\n0.400000\n0.200000"], |
| 16 | + [ |
| 17 | + [ |
| 18 | + 55, 48, 48, 45, 91, 97, 45, 1, 39, 54, 36, 6, 19, 35, 66, 36, 72, 93, |
| 19 | + 38, 21, 65, 70, 36, 63, 39, 76, 82, 26, 67, 29, 24, 82, 62, 53, 1, 50, |
| 20 | + 47, 65, 67, 19, 66, 90, 77, |
| 21 | + ], |
| 22 | + "1.000000\n0.000000\n0.000000", |
| 23 | + ], |
| 24 | + [[0, 100, 35, 0, 94, 40, 42, 87, 59, 0], "0.700000\n0.000000\n0.300000"], |
| 25 | + [ |
| 26 | + [ |
| 27 | + 0, -67, -74, -38, -72, -53, 0, -13, -95, -91, -100, -59, 0, -10, -68, |
| 28 | + -71, -62, -21, 0, -42, -57, -16, -66, -23, 0, -80, -63, -68, -65, -71, |
| 29 | + 0, -71, -15, -32, -26, -8, 0, -6, -51, -87, -19, -71, 0, -93, -26, -35, |
| 30 | + -56, -89, 0, -21, -74, -39, -57, -8, 0, -69, -29, -24, -99, -53, 0, -65, |
| 31 | + -42, -72, -18, -4, 0, -73, -46, -63, -78, -87, |
| 32 | + ], |
| 33 | + "0.000000\n0.833333\n0.166667", |
| 34 | + ], |
| 35 | + [ |
| 36 | + [ |
| 37 | + -92, -21, -93, -27, -45, -63, 53, 45, 0, 6, -67, 84, 96, 86, 18, 36, 53, |
| 38 | + 0, 47, 88, 91, -59, 65, 62, 3, 13, 0, -49, -47, 94, -63, 65, -23, 48, |
| 39 | + -5, 0, -10, 67, -23, 19, -11, 46, 80, -83, 0, -40, 74, -63, -20, -72, |
| 40 | + 98, -72, 66, 0, -58, -1, 67, -22, 8, -45, 32, -65, 0, -10, -65, -81, |
| 41 | + -36, -55, -99, -18, -82, |
| 42 | + ], |
| 43 | + "0.408451\n0.492958\n0.098592", |
| 44 | + ], |
| 45 | + [ |
| 46 | + [ |
| 47 | + -6, 1, 79, 17, 64, 94, 87, -77, 0, -26, 2, -94, 87, -81, -73, -28, 43, |
| 48 | + 0, -35, 39, -37, -49, -29, 93, 64, 54, 0, -73, -58, -100, 33, -75, -47, |
| 49 | + 35, -7, 0, 52, -37, -99, 58, -23, 70, -52, 18, 0, -79, -38, 45, -61, 45, |
| 50 | + 51, -48, 32, 0, -44, -56, 29, -74, -1, 92, -93, 23, 0, 55, -31, 75, -43, |
| 51 | + 20, 19, 58, -4, 0, 59, -80, 18, -74, 81, 63, 62, -92, 0, -23, 7, -91, |
| 52 | + 22, -1, 38, -73, 79, 0, -2, 90, 80, 74, -74, -85, -48, 31, 0, -80, |
| 53 | + ], |
| 54 | + "0.440000\n0.450000\n0.110000", |
| 55 | + ], |
| 56 | + [[1, 2, 3, -1, -2, -3, 0, 0], "0.375000\n0.375000\n0.250000"], |
| 57 | + ]; |
| 58 | + |
| 59 | + test.each(cases)( |
| 60 | + "for array of integers %p output should be %p", |
| 61 | + (firstArg, expectedResult) => { |
| 62 | + const result = plusMinus(firstArg); |
| 63 | + expect(result.trim()).toEqual(expectedResult.trim()); |
| 64 | + } |
| 65 | + ); |
| 66 | +}); |
0 commit comments