This extension introduces Praspel inside atoum.
atoum is a simple, modern and intuitive unit testing framework for PHP!
Hoa is a modular, extensible and structured set of PHP libraries. Moreover, Hoa aims at being a bridge between industrial and research worlds.
With Composer, to include this library into your
dependencies, you need to require
atoum/praspel-extension
:
composer require --dev atoum/praspel-extension
Please, read the website to get more informations about how to install.
And to activate the extension, add this line on your .atoum.php
configuration
file:
$runner->addExtension(new \Atoum\PraspelExtension\Manifest());
This extension brings two aspects into atoum: automatic test data generation
(from Hoa\Realdom
)
and automatic test suite generation (from
Hoa\Praspel
, which
relies on Hoa\Realdom
).
[more explications needed] We will use three asserters to generate data and one to validate data:
realdom
to create a realistic domains disjunction,sample
to generate one data from a realistic domains disjunction,sampleMany
to generate several data,predicate
to validate a data against a realistic domains disjunction.
As an example, we are going to generate an integer defined by: [7; 13] ∪ [42; 153]:
$this->sample($this->realdom->boundinteger(7, 13)->or->boundinteger(42, 153))
We can obviously use the classical asserters from atoum:
foreach ($this->sampleMany($this->realdom->boundinteger(-5, 5), 1024) as $i) {
$this->integer($i)->isGreaterThan(0);
}
(this example is a little dummy ;-)).
We can generate more sophisticated data (please, see the standard realistic
domain library in
Hoa\Realdom
), such
as strings based on regular expressions (and also grammars):
$data = $this->realdom->regex('/[\w\-_]+(\.[\w\-\_]+)*@\w\.(net|org)/');
$this->string($this->sample($data))
->contains(…)->…;
Or even dates:
$data = $this->realdom->date(
'd/m H:i',
$this->realdom->boundinteger(
$this->realdom->timestamp('yesterday'),
$this->realdom->timestamp('next Monday')
)
);
foreach ($this->sampleMany($data, 10) as $date) {
var_dump($date);
}
We will use the Bin/praspel
binary script.
[TODO]
Different documentations can be found on the website: https://hoa-project.net/.
Hoa, along with this extension, is under the New BSD License (BSD-3-Clause).
Please, see LICENSE
.