/**
  * Test basic methods.
  * @covers Rentalhost\VanillaValidation\Validation::__construct
  * @covers Rentalhost\VanillaValidation\Validation::__clone
  * @covers Rentalhost\VanillaValidation\Validation::field
  * @covers Rentalhost\VanillaValidation\Validation::validate
  * @covers Rentalhost\VanillaValidation\Validation::overwriteWith
  * @covers Rentalhost\VanillaValidation\Validation::test
  * @covers Rentalhost\VanillaValidation\Validation::testWith
  */
 public function testBasic()
 {
     $validation = new Validation();
     $validation->field('username', 'user')->required(false)->string();
     $validation->field('password', 'pass')->required(false)->string();
     $validationResult = $validation->validate();
     // Default validation test.
     static::assertInstanceOf(ValidationResult::class, $validationResult);
     static::assertTrue($validationResult->isSuccess());
     static::assertCount(0, $validationResult->getFails());
     static::assertCount(4, $validationResult->getSuccesses());
     // Success test.
     static::assertTrue($validation->test());
     static::assertTrue($validation->test($validationResult));
     static::assertInstanceOf(ValidationResult::class, $validationResult);
     static::assertTrue($validationResult->isSuccess());
     static::assertCount(0, $validationResult->getFails());
     static::assertCount(4, $validationResult->getSuccesses());
     // Fail.
     $validationResult = $validation->validate(['username' => null]);
     static::assertFalse($validationResult->isSuccess());
     static::assertCount(2, $validationResult->getFails());
     static::assertCount(2, $validationResult->getSuccesses());
     // Reference test (again success).
     static::assertTrue($validation->test());
     static::assertTrue($validation->test($validationResult));
     static::assertTrue($validationResult->isSuccess());
     static::assertCount(0, $validationResult->getFails());
     static::assertCount(4, $validationResult->getSuccesses());
     // Reference test (now fail).
     static::assertFalse($validation->testWith(['username' => null]));
     static::assertFalse($validation->testWith(['username' => null], $validationResult));
     static::assertFalse($validationResult->isSuccess());
     static::assertCount(2, $validationResult->getFails());
     static::assertCount(2, $validationResult->getSuccesses());
 }