assertSame('sequence', $seq->name); $this->assertSame(12, $seq->bits); } public function testSequenceHasMakeFactoryMethod(): void { $seq = Sequence::make('sequence', 12); $this->assertSame('sequence', $seq->name); $this->assertSame(12, $seq->bits); } public function testNextValueResolution(): void { $seq = new Sequence('sequence', 12); $this->assertSame(0, $seq->next()); $this->assertSame(1, $seq->next()); $this->assertSame(2, $seq->next()); } public function testExceptionShouldBeThrownWhenMaxValueExceeded(): void { $seq = new Sequence('sequence', 1); // Max value is 1 $this->assertSame(0, $seq->next()); $this->assertSame(1, $seq->next()); $this->expectException(\OverflowException::class); $this->expectExceptionMessage('Sequence "sequence" exceeded its maximum value of 1.'); $seq->next(); } public function testSequenceCanBeReset(): void { $seq = new Sequence('sequence', 12); $this->assertSame(0, $seq->next()); $this->assertSame(1, $seq->next()); $this->assertSame(0, $seq->reset()->next()); } }