Compare commits

...

12 commits

Author SHA1 Message Date
6d7f8cff6a
chore: bump version 2022-01-23 17:27:44 -06:00
Roy Verrips
a84cdd8917 Remove phpstan from dependancies - want to keep this compatible with php 7.0 as per github build steps 2022-01-23 17:26:15 -06:00
Roy Verrips
7cebbfc06a Refactors to satisfy phpstan level 8 2022-01-23 17:26:15 -06:00
Roy Verrips
6e973db521 Add phpstan with config set to max 2022-01-23 17:26:15 -06:00
Roy Verrips
63a52c853b PHP 8.1: Implicit incompatible float to int conversion is deprecated
In PHP 8.1 floats are not implicitly converted to integers as before. 
The array_slice on line 139 requires an integer as the third parameter (the $count variable) so added line 117 to do the conversion of $count.
2022-01-23 17:26:15 -06:00
c9e2957c23 feat: ensure passed tags are strings
Newer versions of PHP raise a warning if you attempt to use array syntax
against non-strings / non-arrays. Added sanity check to ensure we're
working with a string, otherwise skip it.

Also added in PHP 8.1 to the testing suite and bumped the copyright.

Bumped version to 2.0 since as the change in expected output is a
breaking change.
2022-01-04 22:01:25 -06:00
peter279k
ae53465dad Improvements about namespace and PHPUnit version 2020-12-29 16:23:21 -06:00
732be48504 test: update assertion syntax
Tweaked the assertion syntax based on some upcoming changes to PHPUnit.
2020-10-12 18:01:46 -05:00
Umair Khan
007b7a211e Fix #7 Change visibility of $words
The PHPDoc block of `$words` say that the visibility / access of `$words` is private but its `public` in php code.
https://github.com/joshtronic/php-loremipsum/blob/master/src/LoremIpsum.php#L37-L40
2020-10-02 10:50:21 -05:00
f0ec43a045 ci: switch to github actions
Dropped Travis CI and Coveralls for GitHub Actions and CodeCov.
2020-06-01 22:25:24 -05:00
73e356956c
docs: update funding 2020-03-02 20:53:03 -06:00
cdb2e05cf4 chore(ci): test against PHP 7.4
* Updated to test again PHP 7.4 and to use that for coverage reporting.
* Added PHP nightly builds as an allowable failure.
* Added a git ignore as well as a `phpunit` configuration.
* Updated the tests and CI configuration to better handle the juggling of PHP and `phpunit` versions.
* Updated the coveralls dependency to be the latest and greatest instead of the deprecated package.
* Tweaked the README, updated the LICENSE years and bumped this package's version.
* Dropped Patreon link in favor of using Github Sponsors.
2020-01-09 21:49:13 -06:00
13 changed files with 272 additions and 141 deletions

View file

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

29
.github/workflows/test.yml vendored Normal file
View file

@ -0,0 +1,29 @@
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 Normal file
View file

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

View file

@ -1,40 +0,0 @@
language: php
dist: bionic
sudo: required
matrix:
include:
- php: 5.3
dist: precise
- php: 5.4
dist: trusty
- php: 5.5
dist: trusty
- php: 5.6
dist: trusty
- php: 7.0
dist: xenial
env: PHPUNIT=5.7
- php: 7.1
- php: 7.2
- php: 7.3
install:
- composer install
- if [[ $PHPUNIT == 5.7 ]]; then composer require "phpunit/phpunit:5.7"; fi
before_script:
- mkdir -p build/logs
- cd tests
script:
- |
if [[ $PHPUNIT == 5.7 ]]; then
../vendor/bin/phpunit --colors --coverage-clover ../build/logs/clover.xml .
else
phpunit --colors --coverage-clover ../build/logs/clover.xml .
fi
after_success:
- cd ..
- php vendor/bin/coveralls --config .coveralls.yml -v

1
FUNDING.yml Normal file
View file

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

View file

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

View file

@ -1,13 +1,13 @@
# php-loremipsum # php-loremipsum
[![Build Status](https://travis-ci.org/joshtronic/php-loremipsum.svg?branch=master)](https://travis-ci.org/joshtronic/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)
[![Coverage Status](https://coveralls.io/repos/github/joshtronic/php-loremipsum/badge.svg?branch=master)](https://coveralls.io/github/joshtronic/php-loremipsum?branch=master) ![PHP Version](https://img.shields.io/packagist/php-v/joshtronic/php-loremipsum?style=for-the-badge)
[![Total Downloads](https://poser.pugx.org/joshtronic/php-loremipsum/downloads)](https://packagist.org/packages/joshtronic/php-loremipsum) [![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)
Lorem ipsum generator in PHP without dependencies. Compatible with PHP 5.3+. Lorem ipsum generator in PHP without dependencies. Compatible with PHP 5.3+.
[![Become a Patron](https://joshtronic.com/images/become-patron.png)](https://www.patreon.com/joshtronic)
## Installation ## Installation
The preferred installation method is via `composer`. First add the following to The preferred installation method is via `composer`. First add the following to
@ -105,7 +105,7 @@ Suggestions and bug reports are always welcome, but karma points are earned for
pull requests. pull requests.
Unit tests are required for all contributions. You can run the test suite from Unit tests are required for all contributions. You can run the test suite from
the `tests` directory simply by running `phpunit .` the project's root directory simply by running `phpunit`.
## Credits ## Credits

20
codecov.yml Normal file
View file

@ -0,0 +1,20 @@
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,7 +1,7 @@
{ {
"name": "joshtronic/php-loremipsum", "name": "joshtronic/php-loremipsum",
"description": "Lorem ipsum generator in PHP without dependencies", "description": "Lorem ipsum generator in PHP without dependencies",
"version": "1.0.4", "version": "2.1.0",
"type": "library", "type": "library",
"keywords": [ "keywords": [
"lorem", "lorem",
@ -10,22 +10,25 @@
], ],
"homepage": "https://github.com/joshtronic/php-loremipsum", "homepage": "https://github.com/joshtronic/php-loremipsum",
"license": "MIT", "license": "MIT",
"authors": [ "authors": [{
{
"name": "Josh Sherman", "name": "Josh Sherman",
"email": "hello@joshtronic.com", "email": "hello@joshtronic.com",
"homepage": "https://joshtronic.com" "homepage": "https://joshtronic.com"
} }],
],
"require": { "require": {
"php": ">=5.3.0" "php": ">=5.3"
}, },
"require-dev": { "require-dev": {
"satooshi/php-coveralls": "~1.0" "phpunit/phpunit": "^4.8.36 || ^9.0"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"joshtronic\\": "src/" "joshtronic\\": "src/"
} }
},
"autoload-dev": {
"psr-4": {
"joshtronic\\Tests\\": "tests/"
}
}
} }
}

14
phpstan.neon Normal file
View file

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

24
phpunit.xml Normal file
View file

@ -0,0 +1,24 @@
<?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

@ -9,7 +9,7 @@
* Redistribution of these files must retain the above copyright notice. * Redistribution of these files must retain the above copyright notice.
* *
* @author Josh Sherman <hello@joshtronic.com> * @author Josh Sherman <hello@joshtronic.com>
* @copyright Copyright 2014, 2015, 2016, 2017, 2018, 2019 Josh Sherman * @copyright Copyright 2014-2022 Josh Sherman
* @license http://www.opensource.org/licenses/mit-license.html * @license http://www.opensource.org/licenses/mit-license.html
* @link https://github.com/joshtronic/php-loremipsum * @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..." * Whether or not we should be starting the string with "Lorem ipsum..."
* *
* @access private * @access private
* @var boolean * @var mixed
*/ */
private $first = true; private $first = true;
@ -35,9 +35,9 @@ class LoremIpsum
* a complete list exists and if so, where to get it. * a complete list exists and if so, where to get it.
* *
* @access private * @access private
* @var array * @var array<string>
*/ */
public $words = array( private $words = array(
// Lorem ipsum... // Lorem ipsum...
'lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit', 'lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit',
@ -83,7 +83,7 @@ class LoremIpsum
*/ */
public function word($tags = false) public function word($tags = false)
{ {
return $this->words(1, $tags); return strval($this->words(1, $tags));
} }
/** /**
@ -94,7 +94,7 @@ class LoremIpsum
* @access public * @access public
* @param integer $count how many words to generate * @param integer $count how many words to generate
* @param mixed $tags string or array of HTML tags to wrap output with * @param mixed $tags string or array of HTML tags to wrap output with
* @return array generated lorem ipsum words * @return mixed generated lorem ipsum words
*/ */
public function wordsArray($count = 1, $tags = false) public function wordsArray($count = 1, $tags = false)
{ {
@ -114,6 +114,7 @@ class LoremIpsum
*/ */
public function words($count = 1, $tags = false, $array = false) public function words($count = 1, $tags = false, $array = false)
{ {
$count = (int) $count;
$words = array(); $words = array();
$word_count = 0; $word_count = 0;
@ -151,7 +152,7 @@ class LoremIpsum
*/ */
public function sentence($tags = false) public function sentence($tags = false)
{ {
return $this->sentences(1, $tags); return strval($this->sentences(1, $tags));
} }
/** /**
@ -162,7 +163,7 @@ class LoremIpsum
* @access public * @access public
* @param integer $count how many sentences to generate * @param integer $count how many sentences to generate
* @param mixed $tags string or array of HTML tags to wrap output with * @param mixed $tags string or array of HTML tags to wrap output with
* @return array generated lorem ipsum sentences * @return mixed generated lorem ipsum sentences
*/ */
public function sentencesArray($count = 1, $tags = false) public function sentencesArray($count = 1, $tags = false)
{ {
@ -204,7 +205,7 @@ class LoremIpsum
*/ */
public function paragraph($tags = false) public function paragraph($tags = false)
{ {
return $this->paragraphs(1, $tags); return strval($this->paragraphs(1, $tags));
} }
/** /**
@ -215,15 +216,18 @@ class LoremIpsum
* @access public * @access public
* @param integer $count how many paragraphs to generate * @param integer $count how many paragraphs to generate
* @param mixed $tags string or array of HTML tags to wrap output with * @param mixed $tags string or array of HTML tags to wrap output with
* @return array generated lorem ipsum paragraphs * @return array<string> generated lorem ipsum paragraphs
*/ */
public function paragraphsArray($count = 1, $tags = false) 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); return $this->paragraphs($count, $tags, true);
} }
/** /**
* Paragraphss * Paragraphs
* *
* Generates paragraphs of lorem ipsum. * Generates paragraphs of lorem ipsum.
* *
@ -238,11 +242,14 @@ class LoremIpsum
$paragraphs = array(); $paragraphs = array();
for ($i = 0; $i < $count; $i++) { for ($i = 0; $i < $count; $i++) {
$paragraphs[] = $this->sentences($this->gauss(5.8, 1.93)); $paragraphs[] = strval($this->sentences($this->gauss(5.8, 1.93)));
} }
if ($array) {
return $this->output($paragraphs, $tags, $array, "\n\n"); return $this->output($paragraphs, $tags, $array, "\n\n");
} }
return strval($this->output($paragraphs, $tags, false, "\n\n"));
}
/** /**
* Gaussian Distribution * Gaussian Distribution
@ -255,7 +262,7 @@ class LoremIpsum
* @access private * @access private
* @param double $mean average value * @param double $mean average value
* @param double $std_dev stadnard deviation * @param double $std_dev stadnard deviation
* @return double calculated distribution * @return int calculated distribution
*/ */
private function gauss($mean, $std_dev) private function gauss($mean, $std_dev)
{ {
@ -263,7 +270,7 @@ class LoremIpsum
$y = mt_rand() / mt_getrandmax(); $y = mt_rand() / mt_getrandmax();
$z = sqrt(-2 * log($x)) * cos(2 * pi() * $y); $z = sqrt(-2 * log($x)) * cos(2 * pi() * $y);
return $z * $std_dev + $mean; return intval($z * $std_dev + $mean);
} }
/** /**
@ -273,6 +280,7 @@ class LoremIpsum
* the first time we are generating the text. * the first time we are generating the text.
* *
* @access private * @access private
* @return void
*/ */
private function shuffle() private function shuffle()
{ {
@ -298,18 +306,18 @@ class LoremIpsum
* first word of the sentence. * first word of the sentence.
* *
* @access private * @access private
* @param array $sentences the sentences we would like to punctuate * @param array<string> $sentences the sentences we would like to punctuate
* @return void
*/ */
private function punctuate(&$sentences) private function punctuate(&$sentences)
{ {
foreach ($sentences as $key => $sentence) { foreach ($sentences as $key => $sentence) {
$words = count($sentence); $words = count($sentence);
// Only worry about commas on sentences longer than 4 words // Only worry about commas on sentences longer than 4 words
if ($words > 4) { if ($words > 4) {
$mean = log($words, 6); $mean = log($words, 6);
$std_dev = $mean / 6; $std_dev = $mean / 6;
$commas = round($this->gauss($mean, $std_dev)); $commas = $this->gauss($mean, $std_dev);
for ($i = 1; $i <= $commas; $i++) { for ($i = 1; $i <= $commas; $i++) {
$word = round($i * $words / ($commas + 1)); $word = round($i * $words / ($commas + 1));
@ -333,7 +341,7 @@ class LoremIpsum
* into a string or not. * into a string or not.
* *
* @access private * @access private
* @param array $strings an array of generated strings * @param array<string> $strings an array of generated strings
* @param mixed $tags string or array of HTML tags to wrap output with * @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 boolean $array whether an array or a string should be returned
* @param string $delimiter the string to use when calling implode() * @param string $delimiter the string to use when calling implode()
@ -351,12 +359,14 @@ class LoremIpsum
foreach ($strings as $key => $string) { foreach ($strings as $key => $string) {
foreach ($tags as $tag) { foreach ($tags as $tag) {
if (is_string($tag)) {
// Detects / applies back reference // Detects / applies back reference
if ($tag[0] == '<') { if ($tag[0] == '<') {
$string = str_replace('$1', $string, $tag); $string = str_replace('$1', $string, $tag);
} else { } else {
$string = sprintf('<%1$s>%2$s</%1$s>', $tag, $string); $string = sprintf('<%1$s>%2$s</%1$s>', $tag, $string);
} }
}
$strings[$key] = $string; $strings[$key] = $string;
} }
@ -370,4 +380,3 @@ class LoremIpsum
return $strings; return $strings;
} }
} }

View file

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