classCharacterDomain
final class CharacterDomain
implements ValueDomain
Declares a bounded sequence of complete character/escape atoms with fixed delimiters.
Methods§
public function __construct(
private non-empty-list<non-empty-string> $atoms,
private int $minimum = 0,
private int $maximum = 255,
private string $prefix = '',
private string $suffix = '',
private int $multiple = 1,
)Parameters
$atoms | non-empty-list<non-empty-string> | Complete encoded characters; escapes are indivisible |
$minimum | int | |
$maximum | int | |
$prefix | string | |
$suffix | string | |
$multiple | int |
Throws
InvalidArgumentException When length bounds do not form a finite positive intervalTest cases 8
CharacterDomainTest::testChooseAcceptsTheLargestScannerLengthcoversCharacterDomainTest::testChoosePreservesEncodedAtomsAndEvenDigitLengthscoversCharacterDomainTest::testChooseSpansTheDefaultLengthsFromEmptyToTheScannerMaximumcoversCharacterDomainTest::testChooseStaysInsideDeclaredLengthBoundscoversCharacterDomainTest::testMatchCountsMultiplesFromTheMinimumLengthcoversCharacterDomainTest::testMatchKeepsAtomsDelimitersAndMultiplesTogethercoversCharacterDomainTest::testMatchReportsEachEndOnceWhenAtomsOverlapcoversCharacterDomainTest::testMatchRequiresTheDeclaredPrefixcovers
Calls 1
- new
InvalidArgumentExceptionline 35
public function choose(Closure(positive-int): int $choose): stringChooses length and atoms in O(output length), including zero-length bodies and compound escapes.
Parameters
$choose | Closure(positive-int): int |
Returns
stringTest cases 4
CharacterDomainTest::testChooseAcceptsTheLargestScannerLengthcovers and callsCharacterDomainTest::testChoosePreservesEncodedAtomsAndEvenDigitLengthscovers and callsCharacterDomainTest::testChooseSpansTheDefaultLengthsFromEmptyToTheScannerMaximumcovers and callsCharacterDomainTest::testChooseStaysInsideDeclaredLengthBoundscovers and calls
Called from 5
- method-call SqlFaker\MySql\Generation\Value\IdentifierDomain::choose() packages/sql-faker/src/MySql/Generation/Value/IdentifierDomain.php:37
- method-call SqlFaker\MySql\Generation\Value\RadixDomain::choose() packages/sql-faker/src/MySql/Generation/Value/RadixDomain.php:50
- method-call SqlFaker\PostgreSql\Generation\Value\IdentifierDomain::choose() packages/sql-faker/src/PostgreSql/Generation/Value/IdentifierDomain.php:37
- method-call SqlFaker\PostgreSql\Generation\Value\OperatorDomain::choose() packages/sql-faker/src/PostgreSql/Generation/Value/OperatorDomain.php:43
- method-call SqlFaker\Sqlite\Generation\Value\IdentifierDomain::choose() packages/sql-faker/src/Sqlite/Generation/Value/IdentifierDomain.php:37
Calls 1
- function-call
countline 50
public function match(string $value, int $offset = 0): list<int>Reads complete atoms using the same delimiters and repetition as construction. Maximum bounds control sampling size; explicit lexical runs may be longer.
Parameters
$value | string | |
$offset | int |
Returns
list<int>Test cases 4
CharacterDomainTest::testMatchCountsMultiplesFromTheMinimumLengthcovers and callsCharacterDomainTest::testMatchKeepsAtomsDelimitersAndMultiplesTogethercovers and callsCharacterDomainTest::testMatchReportsEachEndOnceWhenAtomsOverlapcovers and callsCharacterDomainTest::testMatchRequiresTheDeclaredPrefixcovers and calls
Called from 1
Private surface 7§
Implementation details, listed for orientation only.
private positive-int $lengthChoicesprivate non-empty-list<non-empty-string> $atomsprivate int $minimum = 0private int $maximum = 255private string $prefix = ''private string $suffix = ''private int $multiple = 1Test cases 65§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 8
CharacterDomainTest::testChooseAcceptsTheLargestScannerLengthcovers and callsCharacterDomainTest::testChoosePreservesEncodedAtomsAndEvenDigitLengthscovers and callsCharacterDomainTest::testChooseSpansTheDefaultLengthsFromEmptyToTheScannerMaximumcovers and callsCharacterDomainTest::testChooseStaysInsideDeclaredLengthBoundscovers and callsCharacterDomainTest::testMatchCountsMultiplesFromTheMinimumLengthcovers and callsCharacterDomainTest::testMatchKeepsAtomsDelimitersAndMultiplesTogethercovers and callsCharacterDomainTest::testMatchReportsEachEndOnceWhenAtomsOverlapcovers and callsCharacterDomainTest::testMatchRequiresTheDeclaredPrefixcovers and calls
Other tests reaching this symbol 57
ValueLexemeGeneratorTest::testGenerateAcceptsExplicitValuesBeyondDefaultRepresentativescallsValueLexemeGeneratorTest::testGenerateRejectsAnInvalidValueWithoutFallingBackToADefaultcallsBytePlanCompilerTest::testCompileMapsTheHeaderIntoTheAllowedExpansionRangecallsBytePlanCompilerTest::testCompileResolvesChoicesIntoInspectableReusableInstructionscallsBytePlanCompilerTest::testCompileSeparatesProductionChoicesFromLexemesAndCompletesAnOddInputcallsPlanBuilderTest::testBuildPreservesEmptyMarkerCandidatesWithoutLosingNonEmptyCompletioncallsPlanBuilderTest::testBuildPreservesRepeatedProductionAndLexemeConstraintscallsPlanBuilderTest::testBuildReservesAllPendingSiblingsAndRetainsTheOriginalOrdinalcallsPlanBuilderTest::testBuildUsesTheSameContextualRewriteAndPinsItsCompleteCandidatecallsPlanBuilderTest::testMinimumExpansionsIncludesTheConstrainedDescendantBeforeDrawingTheBudgetcallsPlanBuilderTest::testMinimumExpansionsIncludesTheSelectedRootAlternativeBeforeAllocatingInputBudgetcallsGrammarCoverageTestcallsLexicalExceptionTestcallsBoundaryCompletionTest::testAcceptsUsesTheSampledLeftValueInsteadOfAnUnrelatedDefaultWitnesscallsReverseLexemeGeneratorTest::testGenerateRespectsTheOrderOfRepeatedPlannedOccurrencesAfterRenamingcallsSqlGeneratorTest::testGenerateKeepsRewrittenSourcesReachedWithoutCreditingTheirOutputcallsSqlGeneratorTest::testGenerateRecordsACompleteCoverageObservationcallsSqlGeneratorTest::testGenerateReplacesGrammarCoverageWithTheLatestLexicalTracecallsSqlGeneratorTest::testPlannerBindsTheSameGrammarEntryAndFreezesEveryChoicecallsSqlGeneratorTest::testRealizeRetainsTheActualTerminalAndLexicalTracecallsChoiceDomainTest::testChooseReachesEachDeclaredFormcallsChoiceDomainTest::testMatchUnionsAndDeduplicatesAlternativeEndPositionscallsIntegerDomainTestcallsSequenceDomainTest::testChooseConstructsAProductWithoutEnumeratingItsMemberscallsSequenceDomainTest::testMatchRetainsAmbiguousPrefixesUntilTheSuffixResolvesThemcallsValueChoicesTest::testValueSamplesOncePerOccurrenceAndDefinitioncallsValueDomainTest::testChooseUsesTheSameContractForLeavesAndCompositescallsValueDomainTest::testMatchConsumesLeavesAndCompositeDomainsThroughOneContractcallsGenerationContextTestcallsBoundedIntegerLexemeGeneratorTestcallsCharsetLexemeGeneratorTestcallsCharsetValueLexemeGeneratorTestcallsDefinitionFactoryTestcallsLexicalGrammarTestcallsDollarQuotedDomainTest::testChooseReusesTheChosenTagWithoutASecondTagDecisioncallsDollarQuotedDomainTest::testMatchBindsTagsAndStopsAtTheFirstIdenticalDelimitercallsDollarQuotedDomainTest::testMatchClosesAtTheDelimiterAfterTheTagAndOnlyRejectsNulBytesInsideTheBodycallsDollarQuotedDomainTest::testMatchRequiresADollarAndALegalTagAtTheOffsetcallsIdentifierDomainTestcallsRadixDomainTestcallsMySqlProviderTestcallsGenerationContextTestcallsDefinitionFactoryTestcallsLexicalGrammarTestcallsDollarQuotedDomainTest::testChooseReusesTheChosenTagWithoutASecondTagDecisioncallsDollarQuotedDomainTest::testMatchBindsTagsAndStopsAtTheFirstIdenticalDelimitercallsDollarQuotedDomainTest::testMatchClosesAtTheDelimiterAfterTheTagAndOnlyRejectsNulBytesInsideTheBodycallsDollarQuotedDomainTest::testMatchRequiresADollarAndALegalTagAtTheOffsetcallsIdentifierDomainTestcallsOperatorDomainTestcallsPostgreSqlProviderTestcallsSqlGeneratorFactoryTestcallsGenerationContextTestcallsDefinitionFactoryTestcallsLexicalGrammarTestcallsIdentifierDomainTestcallsSqliteProviderTestcalls
Relations§
Instantiated in 45
- new SqlFaker\MySql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/MySql/Generation/Lexeme/DefinitionFactory.php:1354
- new SqlFaker\MySql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/MySql/Generation/Lexeme/DefinitionFactory.php:1471
- new SqlFaker\MySql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/MySql/Generation/Lexeme/DefinitionFactory.php:1477
- new SqlFaker\MySql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/MySql/Generation/Lexeme/DefinitionFactory.php:1485
- new SqlFaker\MySql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/MySql/Generation/Lexeme/DefinitionFactory.php:1500
- new SqlFaker\MySql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/MySql/Generation/Lexeme/DefinitionFactory.php:1507
- new SqlFaker\MySql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/MySql/Generation/Lexeme/DefinitionFactory.php:1513
- new SqlFaker\MySql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/MySql/Generation/Lexeme/DefinitionFactory.php:1521
- new SqlFaker\MySql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/MySql/Generation/Lexeme/DefinitionFactory.php:1532
- new SqlFaker\MySql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/MySql/Generation/Lexeme/DefinitionFactory.php:1614
- new SqlFaker\MySql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/MySql/Generation/Lexeme/DefinitionFactory.php:1625
- new SqlFaker\MySql\Generation\Value\IdentifierDomain::choose() packages/sql-faker/src/MySql/Generation/Value/IdentifierDomain.php:37
- new SqlFaker\MySql\Generation\Value\RadixDomain::choose() packages/sql-faker/src/MySql/Generation/Value/RadixDomain.php:50
- new SqlFaker\MySql\Generation\Value\RadixDomain::match() packages/sql-faker/src/MySql/Generation/Value/RadixDomain.php:61
- new SqlFaker\MySql\Generation\Value\RadixDomain::match() packages/sql-faker/src/MySql/Generation/Value/RadixDomain.php:63
- new SqlFaker\PostgreSql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/PostgreSql/Generation/Lexeme/DefinitionFactory.php:597
- new SqlFaker\PostgreSql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/PostgreSql/Generation/Lexeme/DefinitionFactory.php:602
- new SqlFaker\PostgreSql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/PostgreSql/Generation/Lexeme/DefinitionFactory.php:664
- new SqlFaker\PostgreSql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/PostgreSql/Generation/Lexeme/DefinitionFactory.php:711
- new SqlFaker\PostgreSql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/PostgreSql/Generation/Lexeme/DefinitionFactory.php:727
- new SqlFaker\PostgreSql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/PostgreSql/Generation/Lexeme/DefinitionFactory.php:781
- new SqlFaker\PostgreSql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/PostgreSql/Generation/Lexeme/DefinitionFactory.php:787
- new SqlFaker\PostgreSql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/PostgreSql/Generation/Lexeme/DefinitionFactory.php:795
- new SqlFaker\PostgreSql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/PostgreSql/Generation/Lexeme/DefinitionFactory.php:804
- new SqlFaker\PostgreSql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/PostgreSql/Generation/Lexeme/DefinitionFactory.php:811
- new SqlFaker\PostgreSql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/PostgreSql/Generation/Lexeme/DefinitionFactory.php:817
- new SqlFaker\PostgreSql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/PostgreSql/Generation/Lexeme/DefinitionFactory.php:825
- new SqlFaker\PostgreSql\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/PostgreSql/Generation/Lexeme/DefinitionFactory.php:836
- new SqlFaker\PostgreSql\Generation\Value\IdentifierDomain::choose() packages/sql-faker/src/PostgreSql/Generation/Value/IdentifierDomain.php:37
- new SqlFaker\PostgreSql\Generation\Value\OperatorDomain::choose() packages/sql-faker/src/PostgreSql/Generation/Value/OperatorDomain.php:43
- new SqlFaker\Sqlite\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/Sqlite/Generation/Lexeme/DefinitionFactory.php:355
- new SqlFaker\Sqlite\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/Sqlite/Generation/Lexeme/DefinitionFactory.php:362
- new SqlFaker\Sqlite\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/Sqlite/Generation/Lexeme/DefinitionFactory.php:378
- new SqlFaker\Sqlite\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/Sqlite/Generation/Lexeme/DefinitionFactory.php:392
- new SqlFaker\Sqlite\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/Sqlite/Generation/Lexeme/DefinitionFactory.php:398
- new SqlFaker\Sqlite\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/Sqlite/Generation/Lexeme/DefinitionFactory.php:406
- new SqlFaker\Sqlite\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/Sqlite/Generation/Lexeme/DefinitionFactory.php:415
- new SqlFaker\Sqlite\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/Sqlite/Generation/Lexeme/DefinitionFactory.php:422
- new SqlFaker\Sqlite\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/Sqlite/Generation/Lexeme/DefinitionFactory.php:428
- new SqlFaker\Sqlite\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/Sqlite/Generation/Lexeme/DefinitionFactory.php:436
- new SqlFaker\Sqlite\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/Sqlite/Generation/Lexeme/DefinitionFactory.php:447
- new SqlFaker\Sqlite\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/Sqlite/Generation/Lexeme/DefinitionFactory.php:462
- new SqlFaker\Sqlite\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/Sqlite/Generation/Lexeme/DefinitionFactory.php:470
- new SqlFaker\Sqlite\Generation\Lexeme\DefinitionFactory::create() packages/sql-faker/src/Sqlite/Generation/Lexeme/DefinitionFactory.php:530
- new SqlFaker\Sqlite\Generation\Value\IdentifierDomain::choose() packages/sql-faker/src/Sqlite/Generation/Value/IdentifierDomain.php:37
Method calls 6
- method-call SqlFaker\MySql\Generation\Value\IdentifierDomain::choose() packages/sql-faker/src/MySql/Generation/Value/IdentifierDomain.php:37
- method-call SqlFaker\MySql\Generation\Value\RadixDomain::choose() packages/sql-faker/src/MySql/Generation/Value/RadixDomain.php:50
- method-call SqlFaker\MySql\Generation\Value\RadixDomain::match() packages/sql-faker/src/MySql/Generation/Value/RadixDomain.php:61
- method-call SqlFaker\PostgreSql\Generation\Value\IdentifierDomain::choose() packages/sql-faker/src/PostgreSql/Generation/Value/IdentifierDomain.php:37
- method-call SqlFaker\PostgreSql\Generation\Value\OperatorDomain::choose() packages/sql-faker/src/PostgreSql/Generation/Value/OperatorDomain.php:43
- method-call SqlFaker\Sqlite\Generation\Value\IdentifierDomain::choose() packages/sql-faker/src/Sqlite/Generation/Value/IdentifierDomain.php:37