<?php
/**
 * this file contains tests for the autoname function
 *
 * @package test.util
 */

use PHPUnit\Framework\TestCase;

/** required, it is the file under test */
require_once('include/text.php');

/**
 * TestCase for the autoname function
 *
 * @author Alexander Kampmann
 * @package test.util
 */
class AutonameTest extends TestCase {
	/**
	 *autonames should be random, even length
	 */
	public function testAutonameEven() {
		$autoname1=autoname(10);
		$autoname2=autoname(10);

		$this->assertNotEquals($autoname1, $autoname2);
	}

	/**
	 *autonames should be random, odd length
	 */
	public function testAutonameOdd() {
		$autoname1=autoname(9);
		$autoname2=autoname(9);

		$this->assertNotEquals($autoname1, $autoname2);
	}

	/**
	 * try to fail autonames
	 */
	public function testAutonameNoLength() {
		$autoname1=autoname(0);
		$this->assertEquals(0, strlen($autoname1));
	}

	/**
	 * try to fail it with invalid input
	 *
	 * TODO: What's corect behaviour here? An exception?
	 */
	public function testAutonameNegativeLength() {
		$autoname1=autoname(-23);
		$this->assertEquals(0, strlen($autoname1));
	}

	// 	public function testAutonameMaxLength() {
	// 		$autoname2=autoname(PHP_INT_MAX);
	// 		$this->assertEquals(PHP_INT_MAX, strlen($autoname2));
	// 	}

	/**
	 * test with a length, that may be too short
	 * length is maximum - autoname can return something shorter.
	 */
	public function testAutonameLength1() {
		$autoname1=autoname(1);
		$test = ((strlen($autoname1) < 2) ? 1 : 0);
		$this->assertEquals(1, $test);

		$autoname2=autoname(1);
		$test = ((strlen($autoname2) < 2) ? 1 : 0);
		$this->assertEquals(1, $test);

		// The following test is problematic, with only 26 possibilities
		// generating the same thing twice happens often aka
		// birthday paradox
//		$this->assertFalse($autoname1==$autoname2);
	}
}