import spock.lang.* class ExampleSpecification extends Specification { @Unroll @TweakSequence def "#iterationCount: result given #sequence is #result"() { expect: sequence == result where: result | sequence | indexReplacements [ 1, 99, 3 ] | [ 1, 2, 3 ] | [ 1: 99 ] [ 1, 99, 3 ] | [ range: [ start: 1, end: 3 ] ] | [ 1: 99 ] [ 1, 99, 3 ] | [ range: [ start: 1, end: 3 ], indexReplacements: [ 1: 99 ] ] | [ : ] [ 1, 99, 3 ] | [ sequence: [ 1, 2, 3 ], indexReplacements: [ 1: 99 ] ] | [ : ] } // @Unroll // @TweakSequence // def "#iterationCount: result is the expected #result"() { // given: // // def string = new String() // // expect: // // solution.solution( sequence.toArray() as int[] ) == result // // // where: // // result | sequence | indexReplacements // 10 | [ 1 ] * 5 | [ : ] // 9 | [ 1, 2, 3 ] * 3 | [ : ] // 18 | [ 1, 2, 3 ] * 4 | [ : ] // // result | [ 1, 2, 3, 4, 5 ] | [ 1: 0, 3: 0 ] // // // // result | sequence | indexReplacements // 10 | [ 1 ] * 5 | [ : ] // 9 | [ 1, 2, 3 ] * 3 | [ : ] // 18 | [ 1, 2, 3 ] * 4 | [ : ] // 15 | [ 1, 2, 3, 4, 5 ] * 3 | [ : ] // 50 | [ 1, 2, 3, 4, 5 ] * 5 | [ : ] // 49995000 | [ 1 ] * 10_000 | [ : ] // 1_000_000_000 | [ range: [ start: 0, end: 20, repeat: 10_000 ] ] | [ : ] // 1_000_000_000 | [ range: [ start: -10, end: 10, repeat: 10_000 ] ] | [ : ] // 1_000_000_000 | [ range: [ start: -10, end: 10, repeat: 9_999 ] ] | [ : ] // 0 | [ range: [ start: 50_000, end: -49_999 ] ] | [ : ] // 1 | [ range: [ start: 50_000, end: -49_999 ] ] | [ 0: 0 ] // 5 | [ range: [ start: 50_000, end: -49_999 ] ] | [ 0: 0, 100: 1, 200: 2, 30_000: 3, 70_000: 4 ] // 21 | [ range: [ start: 50_000, end: -49_999 ] ] | [ 0: 0, 100: 0, 200: 0, 30_000: 0, 70_000: 0, 90_000: 0 ] // // result | sequence | indexReplacements // 10 | [ ] | [ indexReplacements: [ 1: 0, 3: 0 ], valueExclusions: [ 1, 2 ] ] // // // result | sequence | indexReplacements // // 10 | [ sequence: [ 1, 2, 3, 4, 5, ], indexReplacements: [ 1: 0, 3: 0 ], valueExclusions: [ 1, 2 ] ] // [ range: [ start: 1, end: 5 ], indexReplacements: [ 1: 0, 3: 0 ], valueExclusions: [ 1, 2 ] ] // } }