$options * @param string $expected * @param int $startWith * @return void */ public function testGenerateNumber(string $format, array $options, string $expected, int $startWith): void { $sut = new NumberGenerator($format, function (string $originalFormat, string $format, int $increaseBy) use ($options) { if (\array_key_exists($format, $options)) { $value = $options[$format]; if (\is_int($value)) { $value += $increaseBy; } return $value; } return $originalFormat; }); self::assertEquals($expected, $sut->getNumber($startWith)); } /** * @return array */ public static function getTestData(): array { return [ ['DEMO-{XXX}-{known,5}', ['known' => 123], 'DEMO-{XXX}-00124', 0], ['DEMO-{XXX}-{known,4}', ['known' => 123, 'XXX' => 'FOO!'], 'DEMO-FOO!-0222', 99], ['DEMO-{XXX}-{known+11}', ['known' => 123, 'XXX' => 'FOO!'], 'DEMO-FOO!-135', 1], ['{XXX}-{known-11}', ['known' => 123, 'XXX' => 'A'], 'A-113', 1], ]; } }