blob: 74e98f0608ec2bb6d27f77c475cdf7a53eaad11e [file] [log] [blame]
<?php
/**
* Basic test cases for the memory backend.
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @package Webdav
* @subpackage Tests
* @version //autogentag//
* @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
*/
/**
* Reqiuire base test
*/
/**
* Custom classes to test inheritence.
*/
require_once 'classes/foo_custom_classes.php';
/**
* Tests for ezcWebdavServerConfigurationManager class.
*
* @package Webdav
* @subpackage Tests
*/
class ezcWebdavServerConfigurationManagerTest extends ezcTestCase
{
public static function suite()
{
return new PHPUnit_Framework_TestSuite( __CLASS__ );
}
public function testCtor()
{
$dp = new ezcWebdavServerConfigurationManager();
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Default properties not created correctly on empty ctor.'
);
}
public function testInsertBeforeSuccess()
{
$dp = new ezcWebdavServerConfigurationManager();
$firstCfg = new ezcWebdavServerConfiguration();
$secondCfg = new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
);
$thirdCfg = new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
);
$fourthCfg = new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
);
$this->assertAttributeEquals(
array(
0 => $secondCfg,
1 => $fourthCfg,
2 => $thirdCfg,
3 => $firstCfg,
),
'configurations',
$dp,
'Default properties not created correctly on empty ctor.'
);
$fifthCfg = new ezcWebdavServerConfiguration(
'fooregex'
);
$dp->insertBefore( $fifthCfg );
$this->assertAttributeEquals(
array(
0 => $fifthCfg,
1 => $secondCfg,
2 => $fourthCfg,
3 => $thirdCfg,
4 => $firstCfg,
),
'configurations',
$dp,
'Third transport not added correctly.'
);
$sixthCfg = new ezcWebdavServerConfiguration(
'barregex'
);
$dp->insertBefore( $sixthCfg, 1 );
$this->assertAttributeEquals(
array(
0 => $fifthCfg,
1 => $sixthCfg,
2 => $secondCfg,
3 => $fourthCfg,
4 => $thirdCfg,
5 => $firstCfg,
),
'configurations',
$dp,
'Fourth transport not added correctly.'
);
$dp->insertBefore( $thirdCfg );
$this->assertAttributeEquals(
array(
0 => $thirdCfg,
1 => $fifthCfg,
2 => $sixthCfg,
3 => $secondCfg,
4 => $fourthCfg,
5 => $thirdCfg,
6 => $firstCfg,
),
'configurations',
$dp,
'Third transport not added correctly, again.'
);
}
public function testInsertBeforeFailure()
{
$dp = new ezcWebdavServerConfigurationManager();
$firstCfg = new ezcWebdavServerConfiguration();
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Default properties not created correctly on empty ctor.'
);
$secondCfg = new ezcWebdavServerConfiguration(
'fooregex'
);
try
{
$dp->insertBefore( $secondCfg, 'foo' );
$this->fail( 'ezcBaseValueException not thrown on string $offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Default properties not created correctly on empty ctor.'
);
try
{
$dp->insertBefore( $secondCfg, -23 );
$this->fail( 'ezcBaseValueException not thrown on negative int $offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Default properties not created correctly on empty ctor.'
);
try
{
$dp->insertBefore( $secondCfg, 42 );
$this->fail( 'ezcBaseValueException not thrown on wide to large int $offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Default properties not created correctly on empty ctor.'
);
try
{
$dp->insertBefore( $secondCfg, 4 );
$this->fail( 'ezcBaseValueException not thrown on to large int $offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Default properties not created correctly on empty ctor.'
);
}
public function testCreateTransportDefaultCtorSuccess()
{
$dp = new ezcWebdavServerConfigurationManager();
$dp->configure( ezcWebdavServer::getInstance(), '' );
$this->assertEquals(
new ezcWebdavTransport(),
ezcWebdavServer::getInstance()->transport
);
$dp->configure( ezcWebdavServer::getInstance(), 'Foo' );
$this->assertEquals(
new ezcWebdavTransport(),
ezcWebdavServer::getInstance()->transport
);
$dp->configure( ezcWebdavServer::getInstance(), 'Nautilus' );
$this->assertEquals(
new ezcWebdavTransport(),
ezcWebdavServer::getInstance()->transport
);
}
public function testCreateTransportMultipleConfigsSuccess()
{
$dp = new ezcWebdavServerConfigurationManager();
$ms = new ezcWebdavServerConfiguration( '(^.*micro\\$oft.*$)i' );
$gn = new ezcWebdavServerConfiguration( '(^.*nautilus.*$)i', 'fooCustomTransport' );
$kd = new ezcWebdavServerConfiguration( '(^.*konqueror.*$)i' );
$ca = new ezcWebdavServerConfiguration( '(^.*cadaver.*$)i' );
$dp->insertBefore( $ms, 0 );
$dp->insertBefore( $gn, 0 );
$dp->insertBefore( $kd, 0 );
$dp->insertBefore( $ca, 0 );
$dp->configure( ezcWebdavServer::getInstance(), '' );
$this->assertEquals(
new ezcWebdavTransport(),
ezcWebdavServer::getInstance()->transport,
'Default transport not created on none-matching User-Agent.'
);
$dp->configure( ezcWebdavServer::getInstance(), 'Mirco$soft Internet Explorer 66.6beta1' );
$this->assertEquals(
new ezcWebdavTransport(),
ezcWebdavServer::getInstance()->transport,
'Transport not correctly selected, $ms'
);
$dp->configure( ezcWebdavServer::getInstance(), 'Gentoo-2.6.22-r8, Gnome 2.18.2-rc2, Nautilus' );
$this->assertEquals(
new fooCustomTransport(),
ezcWebdavServer::getInstance()->transport,
'Transport not correctly selected, $gn'
);
$dp->configure( ezcWebdavServer::getInstance(), 'Gentoo-2.6.22-r8, KDE Foo Bar, Konqueror-X.Y.Z, libneon-a.b.c-alpha23' );
$this->assertEquals(
new ezcWebdavTransport(),
ezcWebdavServer::getInstance()->transport,
'Transport not correctly selected, $kd'
);
}
public function testCreateTransportFailure()
{
$dp = new ezcWebdavServerConfigurationManager();
unset( $dp[0] );
unset( $dp[0] );
unset( $dp[0] );
unset( $dp[0] );
try
{
$dp->configure( ezcWebdavServer::getInstance(), 'Fooo Bar' );
$this->fail( 'Creating transport does not fail without any configs.' );
}
catch ( ezcWebdavMissingTransportConfigurationException $e ) {}
$unmatching = new ezcWebdavServerConfiguration( '(^.*micro\$oft.*)i' );
$dp[] = $unmatching;
try
{
$dp->configure( ezcWebdavServer::getInstance(), 'Fooo Bar' );
$this->fail( 'Creating transport does not fail without any configs.' );
}
catch ( ezcWebdavMissingTransportConfigurationException $e ) {}
$dp->configure( ezcWebdavServer::getInstance(), 'some MiCrO$OfT client' );
$this->assertEquals(
new ezcWebdavTransport(),
ezcWebdavServer::getInstance()->transport,
'Transport not created correctly with match.'
);
}
public function testOffsetSetSuccess()
{
$first = new ezcWebdavServerConfiguration( '(a)' );
$second = new ezcWebdavServerConfiguration( '(b)' );
$dp = new ezcWebdavServerConfigurationManager();
$dp[1] = $first;
$dp[] = $second;
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => $first,
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
4 => $second,
),
'configurations',
$dp,
'Configurations not added correctly through offsetSet().'
);
$dp[0] = $second;
$this->assertAttributeEquals(
array(
0 => $second,
1 => $first,
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
4 => $second,
),
'configurations',
$dp,
'Configurations not added correctly through offsetSet().'
);
}
public function testOffsetSetFailure()
{
$first = new ezcWebdavServerConfiguration( '(a)' );
$second = new stdClass();
$dp = new ezcWebdavServerConfigurationManager();
try
{
$dp[5] = $first;
$this->fail( 'ezcBaseValueException not thrown on set access with too large offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Configuration not added incorrectly through offsetSet().'
);
try
{
$dp[-2] = $first;
$this->fail( 'ezcBaseValueException not thrown on set access with too small offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Configurations added in-correctly through offsetSet().'
);
try
{
$dp['foo'] = $first;
$this->fail( 'ezcBaseValueException not thrown on set access with invalid offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Configurations added in-correctly through offsetSet().'
);
try
{
$dp[] = $second;
$this->fail( 'ezcBaseValueException not thrown on set access with invalid value and null offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Configurations added in-correctly through offsetSet().'
);
try
{
$dp[] = $second;
$this->fail( 'ezcBaseValueException not thrown on set access with invalid value and null offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Configurations added in-correctly through offsetSet().'
);
try
{
$dp[0] = $second;
$this->fail( 'ezcBaseValueException not thrown on set access with invalid value and 0 offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Configurations added in-correctly through offsetSet().'
);
try
{
$dp[1] = $second;
$this->fail( 'ezcBaseValueException not thrown on set access with invalid value and 1 offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Configurations not added correctly through offsetSet().'
);
}
public function testOffsetGetSuccess()
{
$first = new ezcWebdavServerConfiguration( '(a)' );
$second = new ezcWebdavServerConfiguration( '(b)' );
$dp = new ezcWebdavServerConfigurationManager();
$dp[1] = $first;
$dp[] = $second;
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => $first,
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
4 => $second,
),
'configurations',
$dp,
'Configurations not added correctly through offsetSet().'
);
$this->assertEquals(
new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
$dp[0],
'Index 0 not got correctly.'
);
$this->assertSame(
$first,
$dp[1],
'Index 1 not got correctly.'
);
$this->assertEquals(
new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
$dp[2],
'Index 2 not got correctly.'
);
$this->assertEquals(
new ezcWebdavServerConfiguration(),
$dp[3],
'Index 2 not got correctly.'
);
$this->assertSame(
$second,
$dp[4],
'Index 3 not got correctly.'
);
}
public function testOffsetGetFailure()
{
$first = new ezcWebdavServerConfiguration( '(a)' );
$second = new stdClass();
$dp = new ezcWebdavServerConfigurationManager();
$this->assertNull(
$dp[4],
'Offset 4 not null.'
);
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Configuration changed on too large offset.'
);
try
{
echo $dp[-2];
$this->fail( 'ezcBaseValueException not thrown on get access with too small offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Configuration changed on negative offset.'
);
try
{
echo $dp['foo'];
$this->fail( 'ezcBaseValueException not thrown on get access with invalid offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Configuration changed on string offset.'
);
}
public function testOffsetUnsetSuccess()
{
$first = new ezcWebdavServerConfiguration( '(a)' );
$second = new ezcWebdavServerConfiguration( '(b)' );
$dp = new ezcWebdavServerConfigurationManager();
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Configurations not created correctly in ctor.'
);
$dp[1] = $first;
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => $first,
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
),
'configurations',
$dp,
'Configurations not added correctly through offsetSet(1).'
);
$dp[] = $second;
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => $first,
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
4 => $second,
),
'configurations',
$dp,
'Configurations not added correctly through offsetSet(null).'
);
unset( $dp[1] );
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
2 => new ezcWebdavServerConfiguration(),
3 => $second,
),
'configurations',
$dp,
'Configurations not removed from offset 1 correctly through offsetUnset().'
);
unset( $dp[1] );
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(),
2 => $second,
),
'configurations',
$dp,
'Configurations not removed from offset 1 correctly through offsetUnset().'
);
unset( $dp[1] );
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => $second,
),
'configurations',
$dp,
'Configurations not removed from offset 1 correctly through offsetUnset().'
);
unset( $dp[1] );
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
),
'configurations',
$dp,
'Configurations not removed from offset 1 correctly through offsetUnset().'
);
unset( $dp[0] );
$this->assertAttributeEquals(
array(
),
'configurations',
$dp,
'Configurations not removed from offset 0 correctly through offsetUnset().'
);
}
public function testOffsetUnsetFailure()
{
$first = new ezcWebdavServerConfiguration( '(a)' );
$second = new stdClass();
$dp = new ezcWebdavServerConfigurationManager();
unset( $dp[3] );
$this->assertNull(
$dp[3],
'Offset 3 not null.'
);
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
),
'configurations',
$dp,
'Configurations not added correctly through offsetSet().'
);
try
{
unset( $dp[-2] );
$this->fail( 'ezcBaseValueException not thrown on unset access with too small offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
),
'configurations',
$dp,
'Configurations not added correctly through offsetSet().'
);
try
{
unset( $dp['foo'] );
$this->fail( 'ezcBaseValueException not thrown on unset access with invalid offset.' );
}
catch ( ezcBaseValueException $e ) {}
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
),
'configurations',
$dp,
'Configurations not added correctly through offsetSet().'
);
}
public function testOffsetExistsSuccess()
{
$first = new ezcWebdavServerConfiguration( '(a)' );
$second = new ezcWebdavServerConfiguration( '(b)' );
$dp = new ezcWebdavServerConfigurationManager();
$dp[1] = $first;
$dp[] = $second;
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => $first,
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
4 => $second,
),
'configurations',
$dp,
'Configurations not added correctly through offsetSet().'
);
$this->assertTrue(
isset( $dp[0] ),
'Offset 0 does not seem to be set.'
);
$this->assertTrue(
isset( $dp[1] ),
'Offset 1 does not seem to be set.'
);
$this->assertTrue(
isset( $dp[2] ),
'Offset 2 does not seem to be set.'
);
$this->assertTrue(
isset( $dp[3] ),
'Offset 3 does not seem to be set.'
);
$this->assertTrue(
isset( $dp[4] ),
'Offset 4 does not seem to be set.'
);
}
public function testOffsetExistsFailure()
{
$first = new ezcWebdavServerConfiguration( '(a)' );
$second = new ezcWebdavServerConfiguration( '(b)' );
$dp = new ezcWebdavServerConfigurationManager();
$dp[1] = $first;
$dp[] = $second;
$this->assertAttributeEquals(
array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => $first,
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
4 => $second,
),
'configurations',
$dp,
'Configurations not added correctly through offsetSet().'
);
$this->assertFalse(
isset( $dp[-1] ),
'Offset -1 does seem to be set.'
);
$this->assertFalse(
isset( $dp[5] ),
'Offset 3 does seem to be set.'
);
$this->assertFalse(
isset( $dp['foo'] ),
'Offset "foo" does seem to be set.'
);
}
public function testIteratorDefaultCtor()
{
$dp = new ezcWebdavServerConfigurationManager();
$fake = array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
);
$i = 0;
foreach( $dp as $key => $val )
{
$this->assertEquals(
$i,
$key,
"ID missmatch during iteration"
);
$this->assertTrue(
isset( $fake[$key] ),
"Fake key '$key' not set"
);
$this->assertEquals(
$fake[$key],
$val,
'Value missmatch'
);
++$i;
}
// Try if rewind works
$i = 0;
foreach( $dp as $key => $val )
{
$this->assertEquals(
$i,
$key,
"ID missmatch during iteration"
);
$this->assertTrue(
isset( $fake[$key] ),
"Fake key '$key' not set"
);
$this->assertEquals(
$fake[$key],
$val,
'Value missmatch'
);
++$i;
}
}
public function testIteratorMultipleElements()
{
$dp = new ezcWebdavServerConfigurationManager();
$dp[] = new ezcWebdavServerConfiguration( '(.*nautilus.*)i' );
$dp[] = new ezcWebdavServerConfiguration( '(.*konqueror.*)i' );
$fake = array(
0 => new ezcWebdavServerConfiguration(
'(Microsoft\s+Data\s+Access|MSIE|MiniRedir)i',
'ezcWebdavMicrosoftCompatibleTransport'
),
1 => new ezcWebdavServerConfiguration(
'(gnome-vfs/[0-9.]+ neon/[0-9.]*|gvfs/[0-9.]+)i',
'ezcWebdavNautilusCompatibleTransport',
'ezcWebdavXmlTool',
'ezcWebdavNautilusPropertyHandler'
),
2 => new ezcWebdavServerConfiguration(
'(Konqueror)i',
'ezcWebdavKonquerorCompatibleTransport'
),
3 => new ezcWebdavServerConfiguration(),
4 => new ezcWebdavServerConfiguration( '(.*nautilus.*)i' ),
5 => new ezcWebdavServerConfiguration( '(.*konqueror.*)i' ),
);
$i = 0;
foreach( $dp as $key => $val )
{
$this->assertEquals(
$i,
$key,
"ID missmatch during iteration"
);
$this->assertTrue(
isset( $fake[$key] ),
"Fake key '$key' not set"
);
$this->assertEquals(
$fake[$key],
$val,
'Value missmatch'
);
++$i;
}
// Try if rewind works
$i = 0;
foreach( $dp as $key => $val )
{
$this->assertEquals(
$i,
$key,
"ID missmatch during iteration"
);
$this->assertTrue(
isset( $fake[$key] ),
"Fake key '$key' not set"
);
$this->assertEquals(
$fake[$key],
$val,
'Value missmatch'
);
++$i;
}
}
public function testIteratorEmpty()
{
$dp = new ezcWebdavServerConfigurationManager();
unset( $dp[0] );
unset( $dp[0] );
unset( $dp[0] );
unset( $dp[0] );
$fake = array();
$i = 0;
foreach( $dp as $key => $val )
{
$this->assertEquals(
$i,
$key,
"ID missmatch during iteration"
);
$this->assertTrue(
isset( $fake[$key] ),
"Fake key '$key' not set"
);
$this->assertEquals(
$fake[$key],
$val,
'Value missmatch'
);
++$i;
}
// Try if rewind works
$i = 0;
foreach( $dp as $key => $val )
{
$this->assertEquals(
$i,
$key,
"ID missmatch during iteration"
);
$this->assertTrue(
isset( $fake[$key] ),
"Fake key '$key' not set"
);
$this->assertEquals(
$fake[$key],
$val,
'Value missmatch'
);
++$i;
}
}
}
?>