Skip to content

Releases: rasuvaeff/property-testing-names

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 09:17
0e23995

The stability release, in step with rasuvaeff/property-testing-core 1.0.0.
The surface is that of 0.5.2, unchanged: Names::first()/last()/middle()/
full()/person(), Names::locales(), PersonName, Gender, the en and
ru datasets and their shrink order toward the shortest entry. A project on
^0.5 upgrades by widening the constraint to ^1.0.

  • Requires rasuvaeff/property-testing-core ^1.0 (compatibility policy
    §8: a caret on the engine's current major); the dev requirement on
    rasuvaeff/property-testing-testo is ^1.0 likewise.

v0.5.2

Choose a tag to compare

@github-actions github-actions released this 20 Sep 03:50
b8dc486
  • Changed. Accepts rasuvaeff/property-testing-core ^0.12 (and the
    -testo adapter's ^0.12) alongside the earlier lines. Nothing in 0.12.0
    reaches this package: the release is additive (exhaustive mode, targeted
    search, the rule-based façade, Gen::composite(), Gen::withEdgeCases(),
    Gen::randomEngine(), Gen::note(), Classify::tabulate(), flaky
    replays), and the suite is green against it unchanged.

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 19 Sep 11:23
46d7686
  • Changed. Accepts rasuvaeff/property-testing-core ^0.11 alongside ^0.9/^0.10. Nothing in 0.11.0 reaches this package: the release is additive (the PropertyTestingException marker, AssumptionSkipped promoted to @api, Gen::stringOf() defaults, docblock reading in Gen::forClass()), and the suite is green against it unchanged.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 19:25
233c802
  • Gender is a string-backed enum (Male = 'male', Female = 'female'), so
    json_encode() of a PersonName yields plain data instead of false
    ("Non-backed enums have no default serialization"). Declaration order,
    Gen::enum() shrink order and the regression corpus — which keys enum cases
    by name — are unchanged. Backing an enum is free before 1.0 and a break
    after it (#31).
  • PersonName rejects a part that is empty after trim(), not only '', and
    the message names the part: First name must not be empty, Middle name must not be empty, Last name must not be empty. A whitespace-only part used to
    be accepted and rendered ' . Smith'
    (#32).
    Consequence: Gen::forClass(PersonName::class) builds parts from
    non-empty-string, which includes whitespace-only strings, so a bare call now
    fails the run on such a draw or shrink candidate. Pass skipInvalid: true, or
    — the intended form — Names::person() as the override for the parameter
    that holds the name.
  • PersonName implements Stringable; (string) $name is full().
  • README, README.ru and llms.txt say how a PersonName counterexample is
    stored in the regression corpus (as a seed entry, which a dataset minor
    silently re-points at another person; string arguments survive as values), that
    CounterExample::toExamplesCode() throws on it, and that
    Gen::forClass(PersonName::class) does not draw from the datasets.
  • AGENTS.md no longer points at a plan file that does not exist, nor lists
    Gen::tuple() among the APIs the package composes (it deliberately nests
    flatMap() instead); the Keep-a-Changelog preamble sits under the title
    rather than between 0.2.0 and 0.1.3; examples/person-and-display-forms.php
    uses a seed whose first block shows both genders.

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 18:37
7bf02d9
  • static-analysis.yml pins actions/cache at the same SHA build.yml uses
    (v6.1.0). It sat at v4 — the only place this package's workflows disagreed
    with each other and with templates/.
  • Names::locales() returns the registered locale codes
    (non-empty-list<non-empty-string>). Until now the list was reachable only
    by catching InvalidArgumentException and parsing its message, because
    Internal\Locales::registered() is @internal — so a matrix over the
    supported locales had to hardcode ['en', 'ru'] and would silently stop
    covering one added later. There is still no registration API: a mutable
    registry would make generated data depend on test execution order
    (#27).
  • Accepts rasuvaeff/property-testing-core ^0.10 alongside ^0.9; the
    dev-only Testo adapter constraint widens the same way, so the suite runs
    against core 0.10 rather than resolving both back to 0.9.
  • composer rector is green: Dataset::pool() is an instance method, as
    LocallyCalledStaticMethodToNonStaticRector asks. It had been red since
    pool() was introduced in 0.3.1 — which means neither 0.3.1 nor 0.3.2 ran
    composer release-check before their tags, because composer build does
    not run rector.
  • AGENTS.md no longer restates the core constraint as a version enumeration.
    It said ^0.4 || ^0.5 || ^0.6 || ^0.7 while composer.json said ^0.9 —
    the third time that copy fell behind, so it now points at composer.json
    instead.

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 05 Sep 09:25
38c5fcc
  • Requires rasuvaeff/property-testing-core ^0.9. The previous constraint
    stopped at ^0.7, which made the package uninstallable beside either
    adapter: a set of generators for property tests has no use without one, and
    both had already moved on. The enumerated form (^0.4 || ^0.5 || ...) is
    gone with it — it had to be widened by hand on every core release, and was
    not, three releases running. ^0.9 is what both adapters require today, and
    moving with them is the whole fix.
  • Tests run against rasuvaeff/property-testing-testo ^0.9 instead of two
    minors behind.

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 04 Sep 17:39
33e2fcc
  • Drawing without a gender no longer offers an entry that both lists hold
    twice. Names::last('en') picked from the 100 surnames listed twice, because
    en hands one list to both genders; picking is uniform over the index, so
    that was a silent doubling of every surname's weight.

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 15:55
df1cab7
  • ru female patronymics are ordered by length like every other list, so a
    counterexample carrying one shrinks toward a shorter name instead of a longer
    one. The two patronymic lists still hold the same 40 stems but are no longer
    index-aligned — a female form does not grow from the male one by a constant
    suffix, so the two invariants could not both hold. This changes the values a
    given seed produces for Names::middle(Gender::Female), person() and
    full().
  • Allows rasuvaeff/property-testing-core ^0.7.

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 03 Sep 17:54
6de9775
  • Keep PersonName validation compatible with the package Rector rules and
    synchronize the documented core compatibility range.

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 03 Sep 05:36
f346a70
  • Allows rasuvaeff/property-testing-core ^0.6 beside ^0.4 || ^0.5; the dataset draws are Gen::elements() over fixed lists, which 0.6 leaves untouched.