Compare commits

..

No commits in common. "master" and "1.0.1" have entirely different histories.

13 changed files with 212 additions and 339 deletions

1
.coveralls.yml Normal file
View file

@ -0,0 +1 @@
service_name: travis-ci

View file

@ -1,29 +0,0 @@
name: Test
on: [push, pull_request]
jobs:
test:
name: Test PHP ${{ matrix.php-version }}
runs-on: ubuntu-latest
strategy:
matrix:
php-version: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1']
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
- name: PHP Version
run: php --version
- name: Composer Version
run: composer --version
- name: Install Dependencies
run: COMPOSER_MEMORY_LIMIT=-1 composer install
- name: Run Tests
run: vendor/bin/phpunit --coverage-clover ./coverage.xml
- name: Upload Coverage
if: ${{ matrix.php-version == '8.1' }}
uses: codecov/codecov-action@v1
with:
file: ./coverage.xml

4
.gitignore vendored
View file

@ -1,4 +0,0 @@
composer.lock
composer.phar
.phpunit.result.cache
/vendor/

26
.travis.yml Normal file
View file

@ -0,0 +1,26 @@
language: php
php:
- 5.3
- 5.4
- 5.5
- 5.6
- 7.0
- hhvm
matrix:
allow_failures:
- php: hhvm
install:
- composer install
before_script:
- mkdir -p build/logs
- cd tests
script:
- phpunit --colors --coverage-clover /home/travis/build/joshtronic/php-loremipsum/build/logs/clover.xml .
after_success:
- php ../vendor/bin/coveralls --config ../.coveralls.yml -v

View file

@ -1 +0,0 @@
github: joshtronic

View file

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014-2022 Josh Sherman
Copyright (c) 2014, 2015, 2016 Josh Sherman
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View file

@ -1,17 +1,39 @@
# php-loremipsum
[![License](https://img.shields.io/packagist/l/joshtronic/php-loremipsum?style=for-the-badge)](https://github.com/joshtronic/php-loremipsum/blob/master/LICENSE)
![PHP Version](https://img.shields.io/packagist/php-v/joshtronic/php-loremipsum?style=for-the-badge)
[![Test Status](https://img.shields.io/github/workflow/status/joshtronic/php-loremipsum/Test?style=for-the-badge)](https://github.com/joshtronic/php-loremipsum/actions)
[![Code Coverage](https://img.shields.io/codecov/c/github/joshtronic/php-loremipsum?style=for-the-badge)](https://codecov.io/gh/joshtronic/php-loremipsum)
[![Monthly Downloads](https://img.shields.io/packagist/dm/joshtronic/php-loremipsum?style=for-the-badge)](https://packagist.org/packages/joshtronic/php-loremipsum)
[![Build Status](https://travis-ci.org/joshtronic/php-loremipsum.svg?branch=master)](https://travis-ci.org/joshtronic/php-loremipsum)
[![Coverage Status](https://coveralls.io/repos/github/joshtronic/php-loremipsum/badge.svg?branch=master)](https://coveralls.io/github/joshtronic/php-loremipsum?branch=master)
[![Total Downloads](https://poser.pugx.org/joshtronic/php-loremipsum/downloads)](https://packagist.org/packages/joshtronic/php-loremipsum)
Lorem ipsum generator in PHP without dependencies. Compatible with PHP 5.3+.
Lorem ipsum generator in PHP without dependencies. Compatible with PHP 5.3+ as
well as HHVM.
## Origins
Once upon a time, I was attempting to find a lorem ipsum generator over on
[Packagist](https://packagist.org/search/?q=lorem%20ipsum). I was presented
with many options, and some of those options were good. Unfortunately, the
bulk of those options depended on Symphony or the Zend Framework. This
wouldnt have been a big deal but under the circumstances, I wanted something
that was not tightly coupled to these frameworks because I wanted to use the
generator in my _own_ framework.
I had decided to use
[badcow/lorem-ipsum](https://packagist.org/packages/badcow/lorem-ipsum)
because it did not have any dependencies nor did it rely on any external APIs.
As I started to use the library, I found that I was going to have to fight
with it to get it to do what I wanted. After digging through the code, I
realized that I was going to end up gutting most of it to bend it to my will.
I know when you overhaul someones code the liklihood of them accepting a pull
request goes down dramatically, hence building this library while taking cues
from its predecessor.
Also, the aforementioned package had a bunch of “setter” and “getter” methods
that were grossing me out :scream:
## Installation
The preferred installation method is via `composer`. First add the following to
your `composer.json`:
The preferred installation method is via `composer`. First add the following
to your `composer.json`
```json
"require": {
@ -19,7 +41,7 @@ your `composer.json`:
}
```
Then run `composer update`.
Then run `composer update`
## Usage
@ -36,21 +58,21 @@ echo '1 word: ' . $lipsum->word();
echo '5 words: ' . $lipsum->words(5);
```
### Generating Sentences
### Generating sentences
```php
echo '1 sentence: ' . $lipsum->sentence();
echo '1 sentence: ' . $lipsum->sentence();
echo '5 sentences: ' . $lipsum->sentences(5);
```
### Generating Paragraphs
### Generating paragraphs
```php
echo '1 paragraph: ' . $lipsum->paragraph();
echo '1 paragraph: ' . $lipsum->paragraph();
echo '5 paragraphs: ' . $lipsum->paragraphs(5);
```
### Wrapping Text with HTML Tags
### Wrapping text with HTML tags
If you would like to wrap the generated text with a tag, pass it as the second
parameter:
@ -77,7 +99,7 @@ echo $lipsum->words(3, '<li><a href="$1">$1</a></li>');
// Generates: <li><a href="...">...</a></li><li><a href="...">...</a></li><li><a href="...">...</a></li>
```
### Return as an Array
### Return as an array
Perhaps you want an array instead of a string:
@ -90,30 +112,21 @@ print_r($lipsum->paragraphsArray(5));
You can still wrap with markup when returning an array:
```php
print_r($lipsum->wordsArray(5, 'li'));
print_r($lipsum->wordsArray(5), 'li');
```
## Assumptions
The first string generated will always start with the traditional "Lorem ipsum
dolor sit amet, consectetur adipiscing elit". Subsequent strings may contain
Instead of having an option as to whether or not a string should start the
generated output with “Lorem ipsum dolor sit amet, consectetur adipiscing
elit.” a few assumptions are baked in. The first string generated will always
start with the traditional “Lorem ipsum…”. Subsequent strings may contain
those words but will not explicitly start with them.
## Contributing
Suggestions and bug reports are always welcome, but karma points are earned for
pull requests.
Suggestions and bug reports are always welcome, but karma points are earned
for pull requests.
Unit tests are required for all contributions. You can run the test suite from
the project's root directory simply by running `phpunit`.
## Credits
`php-loremipsum` was originally inspired by
[badcow/lorem-ipsum](https://packagist.org/packages/badcow/lorem-ipsum) with a
goal of being a dependency free lorem ipsum generator with flexible generation
options.
## License
MIT
Unit tests are required for all contributions. You can run the test suite
from the `tests` directory simply by running `phpunit .`

View file

@ -1,20 +0,0 @@
codecov:
require_ci_to_pass: yes
coverage:
precision: 2
round: down
range: "70...100"
parsers:
gcov:
branch_detection:
conditional: yes
loop: yes
method: no
macro: no
comment:
layout: "reach,diff,flags,tree"
behavior: default
require_changes: no

View file

@ -1,34 +1,23 @@
{
"name": "joshtronic/php-loremipsum",
"name": "joshtronic/php-loremipsum",
"description": "Lorem ipsum generator in PHP without dependencies",
"version": "2.1.0",
"type": "library",
"keywords": [
"lorem",
"ipsum",
"generator"
],
"homepage": "https://github.com/joshtronic/php-loremipsum",
"license": "MIT",
"version": "1.0.1",
"type": "library",
"keywords": ["lorem", "ipsum", "generator"],
"homepage": "https://github.com/joshtronic/php-loremipsum",
"license": "MIT",
"authors": [{
"name": "Josh Sherman",
"email": "hello@joshtronic.com",
"homepage": "https://joshtronic.com"
"name": "Josh Sherman",
"email": "josh@gravityblvd.com",
"homepage": "http://joshtronic.com"
}],
"require": {
"php": ">=5.3"
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.36 || ^9.0"
"satooshi/php-coveralls": "~1.0"
},
"autoload": {
"psr-4": {
"joshtronic\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"joshtronic\\Tests\\": "tests/"
}
"psr-4": {"joshtronic\\": "src/"}
}
}
}

View file

@ -1,14 +0,0 @@
parameters:
paths:
- src
# The level 8 is the highest level
level: max
excludePaths:
- ./*/*/FileToBeExcluded.php
checkMissingIterableValueType: true
#editorUrl: 'vscode://file/%%file%%:%%line%%'

View file

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
failOnRisky="true"
stopOnError="true"
stopOnFailure="true"
stopOnIncomplete="true"
verbose="true"
>
<testsuites>
<testsuite name="Lorem Ipsum">
<directory>tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<directory>./src</directory>
</whitelist>
</filter>
</phpunit>

View file

@ -8,8 +8,8 @@
* Licensed under The MIT License.
* Redistribution of these files must retain the above copyright notice.
*
* @author Josh Sherman <hello@joshtronic.com>
* @copyright Copyright 2014-2022 Josh Sherman
* @author Josh Sherman <josh@gravityblvd.com>
* @copyright Copyright 2014, 2015, 2016 Josh Sherman
* @license http://www.opensource.org/licenses/mit-license.html
* @link https://github.com/joshtronic/php-loremipsum
*/
@ -24,7 +24,7 @@ class LoremIpsum
* Whether or not we should be starting the string with "Lorem ipsum..."
*
* @access private
* @var mixed
* @var boolean
*/
private $first = true;
@ -35,41 +35,57 @@ class LoremIpsum
* a complete list exists and if so, where to get it.
*
* @access private
* @var array<string>
* @var array
*/
private $words = array(
public $words = array(
// Lorem ipsum...
'lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit',
// and the rest of the vocabulary
'a', 'ac', 'accumsan', 'ad', 'aenean', 'aliquam', 'aliquet', 'ante',
'aptent', 'arcu', 'at', 'auctor', 'augue', 'bibendum', 'blandit',
'class', 'commodo', 'condimentum', 'congue', 'consequat', 'conubia',
'convallis', 'cras', 'cubilia', 'curabitur', 'curae', 'cursus',
'dapibus', 'diam', 'dictum', 'dictumst', 'dignissim', 'dis', 'donec',
'dui', 'duis', 'efficitur', 'egestas', 'eget', 'eleifend', 'elementum',
'enim', 'erat', 'eros', 'est', 'et', 'etiam', 'eu', 'euismod', 'ex',
'facilisi', 'facilisis', 'fames', 'faucibus', 'felis', 'fermentum',
'feugiat', 'finibus', 'fringilla', 'fusce', 'gravida', 'habitant',
'habitasse', 'hac', 'hendrerit', 'himenaeos', 'iaculis', 'id',
'imperdiet', 'in', 'inceptos', 'integer', 'interdum', 'justo',
'lacinia', 'lacus', 'laoreet', 'lectus', 'leo', 'libero', 'ligula',
'litora', 'lobortis', 'luctus', 'maecenas', 'magna', 'magnis',
'malesuada', 'massa', 'mattis', 'mauris', 'maximus', 'metus', 'mi',
'molestie', 'mollis', 'montes', 'morbi', 'mus', 'nam', 'nascetur',
'natoque', 'nec', 'neque', 'netus', 'nibh', 'nisi', 'nisl', 'non',
'nostra', 'nulla', 'nullam', 'nunc', 'odio', 'orci', 'ornare',
'parturient', 'pellentesque', 'penatibus', 'per', 'pharetra',
'phasellus', 'placerat', 'platea', 'porta', 'porttitor', 'posuere',
'potenti', 'praesent', 'pretium', 'primis', 'proin', 'pulvinar',
'purus', 'quam', 'quis', 'quisque', 'rhoncus', 'ridiculus', 'risus',
'rutrum', 'sagittis', 'sapien', 'scelerisque', 'sed', 'sem', 'semper',
'senectus', 'sociosqu', 'sodales', 'sollicitudin', 'suscipit',
'suspendisse', 'taciti', 'tellus', 'tempor', 'tempus', 'tincidunt',
'torquent', 'tortor', 'tristique', 'turpis', 'ullamcorper', 'ultrices',
'ultricies', 'urna', 'ut', 'varius', 'vehicula', 'vel', 'velit',
'venenatis', 'vestibulum', 'vitae', 'vivamus', 'viverra', 'volutpat',
'vulputate',
'lorem', 'ipsum', 'dolor', 'sit',
'amet', 'consectetur', 'adipiscing', 'elit',
// The rest of the vocabulary
'a', 'ac', 'accumsan', 'ad',
'aenean', 'aliquam', 'aliquet', 'ante',
'aptent', 'arcu', 'at', 'auctor',
'augue', 'bibendum', 'blandit', 'class',
'commodo', 'condimentum', 'congue', 'consequat',
'conubia', 'convallis', 'cras', 'cubilia',
'cum', 'curabitur', 'curae', 'cursus',
'dapibus', 'diam', 'dictum', 'dictumst',
'dignissim', 'dis', 'donec', 'dui',
'duis', 'egestas', 'eget', 'eleifend',
'elementum', 'enim', 'erat', 'eros',
'est', 'et', 'etiam', 'eu',
'euismod', 'facilisi', 'facilisis', 'fames',
'faucibus', 'felis', 'fermentum', 'feugiat',
'fringilla', 'fusce', 'gravida', 'habitant',
'habitasse', 'hac', 'hendrerit', 'himenaeos',
'iaculis', 'id', 'imperdiet', 'in',
'inceptos', 'integer', 'interdum', 'justo',
'lacinia', 'lacus', 'laoreet', 'lectus',
'leo', 'libero', 'ligula', 'litora',
'lobortis', 'luctus', 'maecenas', 'magna',
'magnis', 'malesuada', 'massa', 'mattis',
'mauris', 'metus', 'mi', 'molestie',
'mollis', 'montes', 'morbi', 'mus',
'nam', 'nascetur', 'natoque', 'nec',
'neque', 'netus', 'nibh', 'nisi',
'nisl', 'non', 'nostra', 'nulla',
'nullam', 'nunc', 'odio', 'orci',
'ornare', 'parturient', 'pellentesque', 'penatibus',
'per', 'pharetra', 'phasellus', 'placerat',
'platea', 'porta', 'porttitor', 'posuere',
'potenti', 'praesent', 'pretium', 'primis',
'proin', 'pulvinar', 'purus', 'quam',
'quis', 'quisque', 'rhoncus', 'ridiculus',
'risus', 'rutrum', 'sagittis', 'sapien',
'scelerisque', 'sed', 'sem', 'semper',
'senectus', 'sociis', 'sociosqu', 'sodales',
'sollicitudin', 'suscipit', 'suspendisse', 'taciti',
'tellus', 'tempor', 'tempus', 'tincidunt',
'torquent', 'tortor', 'tristique', 'turpis',
'ullamcorper', 'ultrices', 'ultricies', 'urna',
'ut', 'varius', 'vehicula', 'vel',
'velit', 'venenatis', 'vestibulum', 'vitae',
'vivamus', 'viverra', 'volutpat', 'vulputate',
);
/**
@ -83,7 +99,7 @@ class LoremIpsum
*/
public function word($tags = false)
{
return strval($this->words(1, $tags));
return $this->words(1, $tags);
}
/**
@ -94,7 +110,7 @@ class LoremIpsum
* @access public
* @param integer $count how many words to generate
* @param mixed $tags string or array of HTML tags to wrap output with
* @return mixed generated lorem ipsum words
* @return array generated lorem ipsum words
*/
public function wordsArray($count = 1, $tags = false)
{
@ -114,7 +130,6 @@ class LoremIpsum
*/
public function words($count = 1, $tags = false, $array = false)
{
$count = (int) $count;
$words = array();
$word_count = 0;
@ -152,7 +167,7 @@ class LoremIpsum
*/
public function sentence($tags = false)
{
return strval($this->sentences(1, $tags));
return $this->sentences(1, $tags);
}
/**
@ -163,7 +178,7 @@ class LoremIpsum
* @access public
* @param integer $count how many sentences to generate
* @param mixed $tags string or array of HTML tags to wrap output with
* @return mixed generated lorem ipsum sentences
* @return array generated lorem ipsum sentences
*/
public function sentencesArray($count = 1, $tags = false)
{
@ -205,7 +220,7 @@ class LoremIpsum
*/
public function paragraph($tags = false)
{
return strval($this->paragraphs(1, $tags));
return $this->paragraphs(1, $tags);
}
/**
@ -216,18 +231,15 @@ class LoremIpsum
* @access public
* @param integer $count how many paragraphs to generate
* @param mixed $tags string or array of HTML tags to wrap output with
* @return array<string> generated lorem ipsum paragraphs
* @return array generated lorem ipsum paragraphs
*/
public function paragraphsArray($count = 1, $tags = false)
{
// The $array parameter set to true means an array is returned.
// Return type is mixed, we should probably cast to array.
// @phpstan-ignore-next-line
return $this->paragraphs($count, $tags, true);
}
/**
* Paragraphs
* Paragraphss
*
* Generates paragraphs of lorem ipsum.
*
@ -242,13 +254,10 @@ class LoremIpsum
$paragraphs = array();
for ($i = 0; $i < $count; $i++) {
$paragraphs[] = strval($this->sentences($this->gauss(5.8, 1.93)));
$paragraphs[] = $this->sentences($this->gauss(5.8, 1.93));
}
if ($array) {
return $this->output($paragraphs, $tags, $array, "\n\n");
}
return strval($this->output($paragraphs, $tags, false, "\n\n"));
return $this->output($paragraphs, $tags, $array, "\n\n");
}
/**
@ -262,7 +271,7 @@ class LoremIpsum
* @access private
* @param double $mean average value
* @param double $std_dev stadnard deviation
* @return int calculated distribution
* @return double calculated distribution
*/
private function gauss($mean, $std_dev)
{
@ -270,7 +279,7 @@ class LoremIpsum
$y = mt_rand() / mt_getrandmax();
$z = sqrt(-2 * log($x)) * cos(2 * pi() * $y);
return intval($z * $std_dev + $mean);
return $z * $std_dev + $mean;
}
/**
@ -280,7 +289,6 @@ class LoremIpsum
* the first time we are generating the text.
*
* @access private
* @return void
*/
private function shuffle()
{
@ -306,18 +314,18 @@ class LoremIpsum
* first word of the sentence.
*
* @access private
* @param array<string> $sentences the sentences we would like to punctuate
* @return void
* @param array $sentences the sentences we would like to punctuate
*/
private function punctuate(&$sentences)
{
foreach ($sentences as $key => $sentence) {
$words = count($sentence);
// Only worry about commas on sentences longer than 4 words
if ($words > 4) {
$mean = log($words, 6);
$std_dev = $mean / 6;
$commas = $this->gauss($mean, $std_dev);
$commas = round($this->gauss($mean, $std_dev));
for ($i = 1; $i <= $commas; $i++) {
$word = round($i * $words / ($commas + 1));
@ -341,7 +349,7 @@ class LoremIpsum
* into a string or not.
*
* @access private
* @param array<string> $strings an array of generated strings
* @param array $strings an array of generated strings
* @param mixed $tags string or array of HTML tags to wrap output with
* @param boolean $array whether an array or a string should be returned
* @param string $delimiter the string to use when calling implode()
@ -359,13 +367,11 @@ class LoremIpsum
foreach ($strings as $key => $string) {
foreach ($tags as $tag) {
if (is_string($tag)) {
// Detects / applies back reference
if ($tag[0] == '<') {
$string = str_replace('$1', $string, $tag);
} else {
$string = sprintf('<%1$s>%2$s</%1$s>', $tag, $string);
}
// Detects / applies back reference
if ($tag[0] == '<') {
$string = str_replace('$1', $string, $tag);
} else {
$string = sprintf('<%1$s>%2$s</%1$s>', $tag, $string);
}
$strings[$key] = $string;
@ -380,3 +386,4 @@ class LoremIpsum
return $strings;
}
}

View file

@ -1,198 +1,127 @@
<?php
namespace joshtronic\Tests;
use joshtronic\LoremIpsum;
use PHPUnit\Framework\TestCase;
class LoremIpsumTest extends TestCase
require_once '../src/LoremIpsum.php';
class LoremIpsumTest extends PHPUnit_Framework_TestCase
{
/**
* @doesNotPerformAssertions
*/
public function testAssertRegExp() {
if (version_compare(PHP_VERSION, '7.3.0', '>=')) {
return 'assertMatchesRegularExpression';
}
private $lipsum;
return 'assertRegExp';
public function setUp()
{
$this->lipsum = new joshtronic\LoremIpsum();
}
/**
* @depends testAssertRegExp
*/
public function testWord($assertRegExp)
public function testWord()
{
$lipsum = new LoremIpsum();
$this->$assertRegExp('/^[a-z]+$/i', $lipsum->word());
$this->assertRegExp('/^[a-z]+$/i', $this->lipsum->word());
}
/**
* @depends testAssertRegExp
*/
public function testWords($assertRegExp)
public function testWords()
{
$lipsum = new LoremIpsum();
$this->$assertRegExp(
$this->assertRegExp(
'/^[a-z]+ [a-z]+ [a-z]+$/i',
$lipsum->words(3)
$this->lipsum->words(3)
);
}
/**
* @depends testAssertRegExp
*/
public function testWordsArray($assertRegExp)
public function testWordsArray()
{
$lipsum = new LoremIpsum();
$words = $lipsum->wordsArray(3);
$words = $this->lipsum->wordsArray(3);
$this->assertTrue(is_array($words));
$this->assertCount(3, $words);
foreach ($words as $word) {
$this->$assertRegExp('/^[a-z]+$/i', $word);
foreach ($words as $word)
{
$this->assertRegExp('/^[a-z]+$/i', $word);
}
}
/**
* @depends testAssertRegExp
*/
public function testWordsExceedingVocab($assertRegExp)
public function testWordsExceedingVocab()
{
$lipsum = new LoremIpsum();
$this->assertCount(500, $lipsum->wordsArray(500));
$this->assertCount(500, $this->lipsum->wordsArray(500));
}
/**
* @depends testAssertRegExp
*/
public function testSentence($assertRegExp)
public function testSentence()
{
$lipsum = new LoremIpsum();
$this->$assertRegExp('/^[a-z, ]+\.$/i', $lipsum->sentence());
$this->assertRegExp('/^[a-z, ]+\.$/i', $this->lipsum->sentence());
}
/**
* @depends testAssertRegExp
*/
public function testSentences($assertRegExp)
public function testSentences()
{
$lipsum = new LoremIpsum();
$this->$assertRegExp(
'/^[a-z, ]+\. [a-z, ]+\. [a-z, ]+\.$/i',
$lipsum->sentences(3)
);
$this->assertRegExp('/^[a-z, ]+\. [a-z, ]+\. [a-z, ]+\.$/i', $this->lipsum->sentences(3));
}
/**
* @depends testAssertRegExp
*/
public function testSentencesArray($assertRegExp)
public function testSentencesArray()
{
$lipsum = new LoremIpsum();
$sentences = $lipsum->sentencesArray(3);
$sentences = $this->lipsum->sentencesArray(3);
$this->assertTrue(is_array($sentences));
$this->assertCount(3, $sentences);
foreach ($sentences as $sentence) {
$this->$assertRegExp('/^[a-z, ]+\.$/i', $sentence);
foreach ($sentences as $sentence)
{
$this->assertRegExp('/^[a-z, ]+\.$/i', $sentence);
}
}
/**
* @depends testAssertRegExp
*/
public function testParagraph($assertRegExp)
public function testParagraph()
{
$lipsum = new LoremIpsum();
$this->$assertRegExp('/^([a-z, ]+\.)+$/i', $lipsum->paragraph());
$this->assertRegExp('/^([a-z, ]+\.)+$/i', $this->lipsum->paragraph());
}
/**
* @depends testAssertRegExp
*/
public function testParagraphs($assertRegExp)
public function testParagraphs()
{
$lipsum = new LoremIpsum();
$this->$assertRegExp(
$this->assertRegExp(
'/^([a-z, ]+\.)+\n\n([a-z, ]+\.)+\n\n([a-z, ]+\.)+$/i',
$lipsum->paragraphs(3)
$this->lipsum->paragraphs(3)
);
}
/**
* @depends testAssertRegExp
*/
public function testParagraphsArray($assertRegExp)
public function testParagraphsArray()
{
$lipsum = new LoremIpsum();
$paragraphs = $lipsum->paragraphsArray(3);
$paragraphs = $this->lipsum->paragraphsArray(3);
$this->assertTrue(is_array($paragraphs));
$this->assertCount(3, $paragraphs);
foreach ($paragraphs as $paragraph) {
$this->$assertRegExp('/^([a-z, ]+\.)+$/i', $paragraph);
foreach ($paragraphs as $paragraph)
{
$this->assertRegExp('/^([a-z, ]+\.)+$/i', $paragraph);
}
}
/**
* @depends testAssertRegExp
*/
public function testMarkupString($assertRegExp)
public function testMarkupString()
{
$lipsum = new LoremIpsum();
$this->$assertRegExp(
$this->assertRegExp(
'/^<li>[a-z]+<\/li>$/i',
$lipsum->word('li')
$this->lipsum->word('li')
);
}
/**
* @depends testAssertRegExp
*/
public function testMarkupArray($assertRegExp)
public function testMarkupArray()
{
$lipsum = new LoremIpsum();
$this->$assertRegExp(
$this->assertRegExp(
'/^<div><p>[a-z]+<\/p><\/div>$/i',
$lipsum->word(array('div', 'p'))
$this->lipsum->word(array('div', 'p'))
);
}
/**
* @depends testAssertRegExp
*/
public function testMarkupBackReference($assertRegExp)
public function testMarkupBackReference()
{
$lipsum = new LoremIpsum();
$this->$assertRegExp(
$this->assertRegExp(
'/^<li><a href="[a-z]+">[a-z]+<\/a><\/li>$/i',
$lipsum->word('<li><a href="$1">$1</a></li>')
$this->lipsum->word('<li><a href="$1">$1</a></li>')
);
}
/**
* @depends testAssertRegExp
*/
public function testMarkupArrayReturn($assertRegExp)
public function testMarkupArrayReturn()
{
$lipsum = new LoremIpsum();
$words = $lipsum->wordsArray(3, 'li');
$words = $this->lipsum->wordsArray(3, 'li');
$this->assertTrue(is_array($words));
$this->assertCount(3, $words);
foreach ($words as $word) {
$this->$assertRegExp('/^<li>[a-z]+<\/li>$/i', $word);
foreach ($words as $word)
{
$this->assertRegExp('/^<li>[a-z]+<\/li>$/i', $word);
}
}
/**
* @depends testAssertRegExp
*/
public function testSkipNonStringTag($assertRegExp)
{
$lipsum = new LoremIpsum();
$this->$assertRegExp('/^[a-z]+$/i', $lipsum->word(123));
$this->$assertRegExp('/^[a-z]+$/i', $lipsum->word(array(1, 2, 3)));
$this->$assertRegExp('/^[a-z]+$/i', $lipsum->word(true));
}
}