Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
88672ed1
Commit
88672ed1
authored
Jan 07, 2013
by
Qiang Xue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
furnishing base classes.
parent
8e05e6e6
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
202 additions
and
96 deletions
+202
-96
Component.php
framework/base/Component.php
+110
-41
Object.php
framework/base/Object.php
+18
-6
ComponentTest.php
tests/unit/framework/base/ComponentTest.php
+61
-42
DictionaryTest.php
tests/unit/framework/base/DictionaryTest.php
+5
-2
VectorTest.php
tests/unit/framework/base/VectorTest.php
+8
-5
No files found.
framework/base/Component.php
View file @
88672ed1
...
@@ -14,6 +14,8 @@ namespace yii\base;
...
@@ -14,6 +14,8 @@ namespace yii\base;
*
*
* @include @yii/docs/base-Component.md
* @include @yii/docs/base-Component.md
*
*
* @property Behavior[] behaviors list of behaviors currently attached to this component
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
* @since 2.0
*/
*/
...
@@ -39,7 +41,7 @@ class Component extends \yii\base\Object
...
@@ -39,7 +41,7 @@ class Component extends \yii\base\Object
* will be implicitly called when executing `$value = $component->property;`.
* will be implicitly called when executing `$value = $component->property;`.
* @param string $name the property name
* @param string $name the property name
* @return mixed the property value, event handlers attached to the event,
* @return mixed the property value, event handlers attached to the event,
* the
named
behavior, or the value of a behavior's property
* the behavior, or the value of a behavior's property
* @throws BadPropertyException if the property is not defined
* @throws BadPropertyException if the property is not defined
* @see __set
* @see __set
*/
*/
...
@@ -52,8 +54,8 @@ class Component extends \yii\base\Object
...
@@ -52,8 +54,8 @@ class Component extends \yii\base\Object
}
else
{
}
else
{
// behavior property
// behavior property
$this
->
ensureBehaviors
();
$this
->
ensureBehaviors
();
foreach
(
$this
->
_b
as
$
i
=>
$
behavior
)
{
foreach
(
$this
->
_b
as
$behavior
)
{
if
(
is_string
(
$i
)
&&
$behavior
->
canGetProperty
(
$name
))
{
if
(
$behavior
->
canGetProperty
(
$name
))
{
return
$behavior
->
$name
;
return
$behavior
->
$name
;
}
}
}
}
...
@@ -96,8 +98,8 @@ class Component extends \yii\base\Object
...
@@ -96,8 +98,8 @@ class Component extends \yii\base\Object
}
else
{
}
else
{
// behavior property
// behavior property
$this
->
ensureBehaviors
();
$this
->
ensureBehaviors
();
foreach
(
$this
->
_b
as
$
i
=>
$
behavior
)
{
foreach
(
$this
->
_b
as
$behavior
)
{
if
(
is_string
(
$i
)
&&
$behavior
->
canSetProperty
(
$name
))
{
if
(
$behavior
->
canSetProperty
(
$name
))
{
$behavior
->
$name
=
$value
;
$behavior
->
$name
=
$value
;
return
;
return
;
}
}
...
@@ -126,13 +128,12 @@ class Component extends \yii\base\Object
...
@@ -126,13 +128,12 @@ class Component extends \yii\base\Object
{
{
$getter
=
'get'
.
$name
;
$getter
=
'get'
.
$name
;
if
(
method_exists
(
$this
,
$getter
))
{
if
(
method_exists
(
$this
,
$getter
))
{
// property is not null
return
$this
->
$getter
()
!==
null
;
return
$this
->
$getter
()
!==
null
;
}
else
{
}
else
{
// behavior property
// behavior property
$this
->
ensureBehaviors
();
$this
->
ensureBehaviors
();
foreach
(
$this
->
_b
as
$
i
=>
$
behavior
)
{
foreach
(
$this
->
_b
as
$behavior
)
{
if
(
is_string
(
$i
)
&&
$behavior
->
canGetProperty
(
$name
))
{
if
(
$behavior
->
canGetProperty
(
$name
))
{
return
$behavior
->
$name
!==
null
;
return
$behavior
->
$name
!==
null
;
}
}
}
}
...
@@ -156,14 +157,13 @@ class Component extends \yii\base\Object
...
@@ -156,14 +157,13 @@ class Component extends \yii\base\Object
{
{
$setter
=
'set'
.
$name
;
$setter
=
'set'
.
$name
;
if
(
method_exists
(
$this
,
$setter
))
{
if
(
method_exists
(
$this
,
$setter
))
{
// write property
$this
->
$setter
(
null
);
$this
->
$setter
(
null
);
return
;
return
;
}
else
{
}
else
{
// behavior property
// behavior property
$this
->
ensureBehaviors
();
$this
->
ensureBehaviors
();
foreach
(
$this
->
_b
as
$
i
=>
$
behavior
)
{
foreach
(
$this
->
_b
as
$behavior
)
{
if
(
is_string
(
$i
)
&&
$behavior
->
canSetProperty
(
$name
))
{
if
(
$behavior
->
canSetProperty
(
$name
))
{
$behavior
->
$name
=
null
;
$behavior
->
$name
=
null
;
return
;
return
;
}
}
...
@@ -190,16 +190,17 @@ class Component extends \yii\base\Object
...
@@ -190,16 +190,17 @@ class Component extends \yii\base\Object
*/
*/
public
function
__call
(
$name
,
$params
)
public
function
__call
(
$name
,
$params
)
{
{
if
(
$this
->
canGetProperty
(
$name
,
false
))
{
$getter
=
'get'
.
$name
;
$func
=
$this
->
$name
;
if
(
method_exists
(
$this
,
$getter
))
{
$func
=
$this
->
$getter
();
if
(
$func
instanceof
\Closure
)
{
if
(
$func
instanceof
\Closure
)
{
return
call_user_func_array
(
$func
,
$params
);
return
call_user_func_array
(
$func
,
$params
);
}
}
}
}
$this
->
ensureBehaviors
();
$this
->
ensureBehaviors
();
foreach
(
$this
->
_b
as
$
i
=>
$
object
)
{
foreach
(
$this
->
_b
as
$object
)
{
if
(
is_string
(
$i
)
&&
method_exists
(
$object
,
$name
))
{
if
(
method_exists
(
$object
,
$name
))
{
return
call_user_func_array
(
array
(
$object
,
$name
),
$params
);
return
call_user_func_array
(
array
(
$object
,
$name
),
$params
);
}
}
}
}
...
@@ -213,10 +214,92 @@ class Component extends \yii\base\Object
...
@@ -213,10 +214,92 @@ class Component extends \yii\base\Object
*/
*/
public
function
__clone
()
public
function
__clone
()
{
{
$this
->
_e
=
null
;
$this
->
_b
=
null
;
$this
->
_b
=
null
;
}
}
/**
/**
* Returns a value indicating whether a property is defined for this component.
* A property is defined if:
*
* - the class has a getter or setter method associated with the specified name
* (in this case, property name is case-insensitive);
* - the class has a member variable with the specified name (when `$checkVar` is true);
* - an attached behavior has a property of the given name (when `$checkBehavior` is true).
*
* @param string $name the property name
* @param boolean $checkVar whether to treat member variables as properties
* @param boolean $checkBehavior whether to treat behaviors' properties as properties of this component
* @return boolean whether the property is defined
* @see canGetProperty
* @see canSetProperty
*/
public
function
hasProperty
(
$name
,
$checkVar
=
true
,
$checkBehavior
=
true
)
{
return
$this
->
canGetProperty
(
$name
,
$checkVar
,
$checkBehavior
)
||
$this
->
canSetProperty
(
$name
,
$checkVar
,
$checkBehavior
);
}
/**
* Returns a value indicating whether a property can be read.
* A property can be read if:
*
* - the class has a getter method associated with the specified name
* (in this case, property name is case-insensitive);
* - the class has a member variable with the specified name (when `$checkVar` is true);
* - an attached behavior has a readable property of the given name (when `$checkBehavior` is true).
*
* @param string $name the property name
* @param boolean $checkVar whether to treat member variables as properties
* @param boolean $checkBehavior whether to treat behaviors' properties as properties of this component
* @return boolean whether the property can be read
* @see canSetProperty
*/
public
function
canGetProperty
(
$name
,
$checkVar
=
true
,
$checkBehavior
=
true
)
{
if
(
method_exists
(
$this
,
'get'
.
$name
)
||
$checkVar
&&
property_exists
(
$this
,
$name
))
{
return
true
;
}
else
{
$this
->
ensureBehaviors
();
foreach
(
$this
->
_b
as
$behavior
)
{
if
(
$behavior
->
canGetProperty
(
$name
,
$checkVar
))
{
return
true
;
}
}
return
false
;
}
}
/**
* Returns a value indicating whether a property can be set.
* A property can be written if:
*
* - the class has a setter method associated with the specified name
* (in this case, property name is case-insensitive);
* - the class has a member variable with the specified name (when `$checkVar` is true);
* - an attached behavior has a writable property of the given name (when `$checkBehavior` is true).
*
* @param string $name the property name
* @param boolean $checkVar whether to treat member variables as properties
* @param boolean $checkBehavior whether to treat behaviors' properties as properties of this component
* @return boolean whether the property can be written
* @see canGetProperty
*/
public
function
canSetProperty
(
$name
,
$checkVar
=
true
,
$checkBehavior
=
true
)
{
if
(
method_exists
(
$this
,
'set'
.
$name
)
||
$checkVar
&&
property_exists
(
$this
,
$name
))
{
return
true
;
}
else
{
$this
->
ensureBehaviors
();
foreach
(
$this
->
_b
as
$behavior
)
{
if
(
$behavior
->
canSetProperty
(
$name
,
$checkVar
))
{
return
true
;
}
}
return
false
;
}
}
/**
* Returns a list of behaviors that this component should behave as.
* Returns a list of behaviors that this component should behave as.
*
*
* Child classes may override this method to specify the behaviors they want to behave as.
* Child classes may override this method to specify the behaviors they want to behave as.
...
@@ -269,7 +352,6 @@ class Component extends \yii\base\Object
...
@@ -269,7 +352,6 @@ class Component extends \yii\base\Object
*
*
* @param string $name the event name
* @param string $name the event name
* @return Vector list of attached event handlers for the event
* @return Vector list of attached event handlers for the event
* @throws Exception if the event is not defined
*/
*/
public
function
getEventHandlers
(
$name
)
public
function
getEventHandlers
(
$name
)
{
{
...
@@ -309,7 +391,7 @@ class Component extends \yii\base\Object
...
@@ -309,7 +391,7 @@ class Component extends \yii\base\Object
*
*
* @param string $name the event name
* @param string $name the event name
* @param string|array|\Closure $handler the event handler
* @param string|array|\Closure $handler the event handler
* @see off
* @see off
()
*/
*/
public
function
on
(
$name
,
$handler
)
public
function
on
(
$name
,
$handler
)
{
{
...
@@ -317,12 +399,12 @@ class Component extends \yii\base\Object
...
@@ -317,12 +399,12 @@ class Component extends \yii\base\Object
}
}
/**
/**
* Detaches an existing event handler.
* Detaches an existing event handler
from this component
.
* This method is the opposite of [[on]].
* This method is the opposite of [[on
()
]].
* @param string $name event name
* @param string $name event name
* @param string|array|\Closure $handler the event handler to be removed
* @param string|array|\Closure $handler the event handler to be removed
* @return boolean if a handler is found and detached
* @return boolean if a handler is found and detached
* @see on
* @see on
()
*/
*/
public
function
off
(
$name
,
$handler
)
public
function
off
(
$name
,
$handler
)
{
{
...
@@ -335,7 +417,6 @@ class Component extends \yii\base\Object
...
@@ -335,7 +417,6 @@ class Component extends \yii\base\Object
* all attached handlers for the event.
* all attached handlers for the event.
* @param string $name the event name
* @param string $name the event name
* @param Event $event the event parameter. If not set, a default [[Event]] object will be created.
* @param Event $event the event parameter. If not set, a default [[Event]] object will be created.
* @throws Exception if the event is undefined or an event handler is invalid.
*/
*/
public
function
trigger
(
$name
,
$event
=
null
)
public
function
trigger
(
$name
,
$event
=
null
)
{
{
...
@@ -344,10 +425,8 @@ class Component extends \yii\base\Object
...
@@ -344,10 +425,8 @@ class Component extends \yii\base\Object
if
(
$event
===
null
)
{
if
(
$event
===
null
)
{
$event
=
new
Event
(
$this
);
$event
=
new
Event
(
$this
);
}
}
if
(
$event
instanceof
Event
)
{
$event
->
handled
=
false
;
$event
->
handled
=
false
;
$event
->
name
=
$name
;
$event
->
name
=
$name
;
}
foreach
(
$this
->
_e
[
$name
]
as
$handler
)
{
foreach
(
$this
->
_e
[
$name
]
as
$handler
)
{
call_user_func
(
$handler
,
$event
);
call_user_func
(
$handler
,
$event
);
// stop further handling if the event is handled
// stop further handling if the event is handled
...
@@ -384,9 +463,7 @@ class Component extends \yii\base\Object
...
@@ -384,9 +463,7 @@ class Component extends \yii\base\Object
* This method will create the behavior object based on the given
* This method will create the behavior object based on the given
* configuration. After that, the behavior object will be attached to
* configuration. After that, the behavior object will be attached to
* this component by calling the [[Behavior::attach]] method.
* this component by calling the [[Behavior::attach]] method.
* @param integer|string $name the name of the behavior. This can be a string or an integer (or empty string).
* @param string $name the name of the behavior.
* If the former, it uniquely identifies this behavior. If the latter, the behavior becomes
* anonymous and its methods and properties will NOT be made available in this component.
* @param string|array|Behavior $behavior the behavior configuration. This can be one of the following:
* @param string|array|Behavior $behavior the behavior configuration. This can be one of the following:
*
*
* - a [[Behavior]] object
* - a [[Behavior]] object
...
@@ -425,7 +502,6 @@ class Component extends \yii\base\Object
...
@@ -425,7 +502,6 @@ class Component extends \yii\base\Object
*/
*/
public
function
detachBehavior
(
$name
)
public
function
detachBehavior
(
$name
)
{
{
$this
->
ensureBehaviors
();
if
(
isset
(
$this
->
_b
[
$name
]))
{
if
(
isset
(
$this
->
_b
[
$name
]))
{
$behavior
=
$this
->
_b
[
$name
];
$behavior
=
$this
->
_b
[
$name
];
unset
(
$this
->
_b
[
$name
]);
unset
(
$this
->
_b
[
$name
]);
...
@@ -464,8 +540,7 @@ class Component extends \yii\base\Object
...
@@ -464,8 +540,7 @@ class Component extends \yii\base\Object
/**
/**
* Attaches a behavior to this component.
* Attaches a behavior to this component.
* @param integer|string $name the name of the behavior. If it is an integer or an empty string,
* @param string $name the name of the behavior.
* the behavior is anonymous and its methods and properties will NOT be made available to the owner component.
* @param string|array|Behavior $behavior the behavior to be attached
* @param string|array|Behavior $behavior the behavior to be attached
* @return Behavior the attached behavior.
* @return Behavior the attached behavior.
*/
*/
...
@@ -474,16 +549,10 @@ class Component extends \yii\base\Object
...
@@ -474,16 +549,10 @@ class Component extends \yii\base\Object
if
(
!
(
$behavior
instanceof
Behavior
))
{
if
(
!
(
$behavior
instanceof
Behavior
))
{
$behavior
=
\Yii
::
createObject
(
$behavior
);
$behavior
=
\Yii
::
createObject
(
$behavior
);
}
}
if
(
is_int
(
$name
)
||
$name
==
''
)
{
if
(
isset
(
$this
->
_b
[
$name
]))
{
// anonymous behavior
$this
->
_b
[
$name
]
->
detach
(
$this
);
$behavior
->
attach
(
$this
);
return
$this
->
_b
[]
=
$behavior
;
}
else
{
if
(
isset
(
$this
->
_b
[
$name
]))
{
$this
->
_b
[
$name
]
->
detach
(
$this
);
}
$behavior
->
attach
(
$this
);
return
$this
->
_b
[
$name
]
=
$behavior
;
}
}
$behavior
->
attach
(
$this
);
return
$this
->
_b
[
$name
]
=
$behavior
;
}
}
}
}
framework/base/Object.php
View file @
88672ed1
...
@@ -160,8 +160,12 @@ class Object
...
@@ -160,8 +160,12 @@ class Object
/**
/**
* Returns a value indicating whether a property is defined.
* Returns a value indicating whether a property is defined.
* A property is defined if there is a getter or setter method
* A property is defined if:
* defined in the class. Note that property names are case-insensitive.
*
* - the class has a getter or setter method associated with the specified name
* (in this case, property name is case-insensitive);
* - the class has a member variable with the specified name (when `$checkVar` is true);
*
* @param string $name the property name
* @param string $name the property name
* @param boolean $checkVar whether to treat member variables as properties
* @param boolean $checkVar whether to treat member variables as properties
* @return boolean whether the property is defined
* @return boolean whether the property is defined
...
@@ -175,8 +179,12 @@ class Object
...
@@ -175,8 +179,12 @@ class Object
/**
/**
* Returns a value indicating whether a property can be read.
* Returns a value indicating whether a property can be read.
* A property can be read if the class has a getter method
* A property is readable if:
* for the property name. Note that property name is case-insensitive.
*
* - the class has a getter method associated with the specified name
* (in this case, property name is case-insensitive);
* - the class has a member variable with the specified name (when `$checkVar` is true);
*
* @param string $name the property name
* @param string $name the property name
* @param boolean $checkVar whether to treat member variables as properties
* @param boolean $checkVar whether to treat member variables as properties
* @return boolean whether the property can be read
* @return boolean whether the property can be read
...
@@ -189,8 +197,12 @@ class Object
...
@@ -189,8 +197,12 @@ class Object
/**
/**
* Returns a value indicating whether a property can be set.
* Returns a value indicating whether a property can be set.
* A property can be written if the class has a setter method
* A property is writable if:
* for the property name. Note that property name is case-insensitive.
*
* - the class has a setter method associated with the specified name
* (in this case, property name is case-insensitive);
* - the class has a member variable with the specified name (when `$checkVar` is true);
*
* @param string $name the property name
* @param string $name the property name
* @param boolean $checkVar whether to treat member variables as properties
* @param boolean $checkVar whether to treat member variables as properties
* @return boolean whether the property can be written
* @return boolean whether the property can be written
...
...
tests/unit/framework/base/ComponentTest.php
View file @
88672ed1
...
@@ -29,12 +29,15 @@ class ComponentTest extends \yiiunit\TestCase
...
@@ -29,12 +29,15 @@ class ComponentTest extends \yiiunit\TestCase
{
{
$this
->
component
=
null
;
$this
->
component
=
null
;
}
}
public
function
testHasProperty
()
public
function
testHasProperty
()
{
{
$this
->
assertTrue
(
$this
->
component
->
hasProperty
(
'Text'
),
"Component hasn't property Text"
);
$this
->
assertTrue
(
$this
->
component
->
hasProperty
(
'Text'
));
$this
->
assertTrue
(
$this
->
component
->
hasProperty
(
'text'
),
"Component hasn't property text"
);
$this
->
assertTrue
(
$this
->
component
->
hasProperty
(
'text'
));
$this
->
assertFalse
(
$this
->
component
->
hasProperty
(
'Caption'
),
"Component as property Caption"
);
$this
->
assertFalse
(
$this
->
component
->
hasProperty
(
'Caption'
));
$this
->
assertTrue
(
$this
->
component
->
hasProperty
(
'content'
));
$this
->
assertFalse
(
$this
->
component
->
hasProperty
(
'content'
,
false
));
$this
->
assertFalse
(
$this
->
component
->
hasProperty
(
'Content'
));
}
}
public
function
testCanGetProperty
()
public
function
testCanGetProperty
()
...
@@ -42,19 +45,26 @@ class ComponentTest extends \yiiunit\TestCase
...
@@ -42,19 +45,26 @@ class ComponentTest extends \yiiunit\TestCase
$this
->
assertTrue
(
$this
->
component
->
canGetProperty
(
'Text'
));
$this
->
assertTrue
(
$this
->
component
->
canGetProperty
(
'Text'
));
$this
->
assertTrue
(
$this
->
component
->
canGetProperty
(
'text'
));
$this
->
assertTrue
(
$this
->
component
->
canGetProperty
(
'text'
));
$this
->
assertFalse
(
$this
->
component
->
canGetProperty
(
'Caption'
));
$this
->
assertFalse
(
$this
->
component
->
canGetProperty
(
'Caption'
));
$this
->
assertTrue
(
$this
->
component
->
canGetProperty
(
'content'
));
$this
->
assertFalse
(
$this
->
component
->
canGetProperty
(
'content'
,
false
));
$this
->
assertFalse
(
$this
->
component
->
canGetProperty
(
'Content'
));
}
}
public
function
testCanSetProperty
()
public
function
testCanSetProperty
()
{
{
$this
->
assertTrue
(
$this
->
component
->
canSetProperty
(
'Text'
));
$this
->
assertTrue
(
$this
->
component
->
canSetProperty
(
'Text'
));
$this
->
assertTrue
(
$this
->
component
->
canSetProperty
(
'text'
));
$this
->
assertTrue
(
$this
->
component
->
canSetProperty
(
'text'
));
$this
->
assertFalse
(
$this
->
component
->
canSetProperty
(
'Object'
));
$this
->
assertFalse
(
$this
->
component
->
canSetProperty
(
'Caption'
));
$this
->
assertFalse
(
$this
->
component
->
canSetProperty
(
'Caption'
));
$this
->
assertTrue
(
$this
->
component
->
canSetProperty
(
'content'
));
$this
->
assertFalse
(
$this
->
component
->
canSetProperty
(
'content'
,
false
));
$this
->
assertFalse
(
$this
->
component
->
canSetProperty
(
'Content'
));
}
}
public
function
testGetProperty
()
public
function
testGetProperty
()
{
{
$this
->
assertTrue
(
'default'
===
$this
->
component
->
Text
);
$this
->
assertTrue
(
'default'
===
$this
->
component
->
Text
);
$this
->
setExpectedException
(
'yii\base\Exception'
);
$this
->
setExpectedException
(
'yii\base\
BadProperty
Exception'
);
$value2
=
$this
->
component
->
Caption
;
$value2
=
$this
->
component
->
Caption
;
}
}
...
@@ -62,24 +72,30 @@ class ComponentTest extends \yiiunit\TestCase
...
@@ -62,24 +72,30 @@ class ComponentTest extends \yiiunit\TestCase
{
{
$value
=
'new value'
;
$value
=
'new value'
;
$this
->
component
->
Text
=
$value
;
$this
->
component
->
Text
=
$value
;
$text
=
$this
->
component
->
Text
;
$this
->
assertEquals
(
$value
,
$this
->
component
->
Text
);
$this
->
assertTrue
(
$value
===
$this
->
component
->
Text
);
$this
->
setExpectedException
(
'yii\base\BadPropertyException'
);
$this
->
setExpectedException
(
'yii\base\Exception'
);
$this
->
component
->
NewMember
=
$value
;
$this
->
component
->
NewMember
=
$value
;
}
}
public
function
testIsset
()
public
function
testIsset
()
{
{
$this
->
assertTrue
(
isset
(
$this
->
component
->
Text
));
$this
->
assertTrue
(
isset
(
$this
->
component
->
Text
));
$this
->
assertTrue
(
!
empty
(
$this
->
component
->
Text
));
$this
->
assertFalse
(
empty
(
$this
->
component
->
Text
));
unset
(
$this
->
component
->
Text
);
$this
->
assertFalse
(
isset
(
$this
->
component
->
Text
));
$this
->
assertFalse
(
!
empty
(
$this
->
component
->
Text
));
$this
->
component
->
Text
=
''
;
$this
->
component
->
Text
=
''
;
$this
->
assertTrue
(
isset
(
$this
->
component
->
Text
));
$this
->
assertTrue
(
isset
(
$this
->
component
->
Text
));
$this
->
assertTrue
(
empty
(
$this
->
component
->
Text
));
$this
->
assertTrue
(
empty
(
$this
->
component
->
Text
));
$this
->
component
->
Text
=
null
;
$this
->
assertFalse
(
isset
(
$this
->
component
->
Text
));
$this
->
assertTrue
(
empty
(
$this
->
component
->
Text
));
}
public
function
testUnset
()
{
unset
(
$this
->
component
->
Text
);
$this
->
assertFalse
(
isset
(
$this
->
component
->
Text
));
$this
->
assertTrue
(
empty
(
$this
->
component
->
Text
));
}
}
public
function
testOn
()
public
function
testOn
()
...
@@ -147,38 +163,24 @@ class ComponentTest extends \yiiunit\TestCase
...
@@ -147,38 +163,24 @@ class ComponentTest extends \yiiunit\TestCase
$this
->
assertFalse
(
$this
->
component
->
eventHandled
);
$this
->
assertFalse
(
$this
->
component
->
eventHandled
);
}
}
public
function
test
De
tachBehavior
()
public
function
test
At
tachBehavior
()
{
{
$component
=
new
NewComponent
;
$component
=
new
NewComponent
;
$behavior
=
new
NewBehavior
;
$this
->
assertFalse
(
$component
->
hasProperty
(
'p'
));
$component
->
attachBehavior
(
'a'
,
$behavior
);
$this
->
assertFalse
(
$component
->
behaviorCalled
);
$this
->
assertSame
(
$behavior
,
$component
->
detachBehavior
(
'a'
));
$this
->
assertNull
(
$component
->
getBehavior
(
'a'
));
}
public
function
testDetachingBehaviors
()
{
$component
=
new
NewComponent
;
$behavior
=
new
NewBehavior
;
$component
->
attachBehavior
(
'a'
,
$behavior
);
$component
->
detachBehaviors
();
$this
->
setExpectedException
(
'yii\base\Exception'
);
$component
->
test
();
}
public
function
testGetBehavior
()
{
$component
=
new
NewComponent
;
$behavior
=
new
NewBehavior
;
$behavior
=
new
NewBehavior
;
$component
->
attachBehavior
(
'a'
,
$behavior
);
$component
->
attachBehavior
(
'a'
,
$behavior
);
$this
->
assertSame
(
$behavior
,
$component
->
getBehavior
(
'a'
));
$this
->
assertSame
(
$behavior
,
$component
->
getBehavior
(
'a'
));
}
$this
->
assertTrue
(
$component
->
hasProperty
(
'p'
));
$component
->
test
();
$this
->
assertTrue
(
$component
->
behaviorCalled
);
public
function
testCreate
()
$this
->
assertSame
(
$behavior
,
$component
->
detachBehavior
(
'a'
));
{
$this
->
assertFalse
(
$component
->
hasProperty
(
'p'
));
$component
=
NewComponent2
::
newInstance
(
array
(
'a'
=>
3
),
1
,
2
);
$this
->
setExpectedException
(
'yii\base\BadMethodException'
);
$this
->
assertEquals
(
1
,
$component
->
b
);
$component
->
test
();
$this
->
assertEquals
(
2
,
$component
->
c
);
$this
->
assertEquals
(
3
,
$component
->
a
);
}
}
}
}
...
@@ -186,9 +188,8 @@ class NewComponent extends \yii\base\Component
...
@@ -186,9 +188,8 @@ class NewComponent extends \yii\base\Component
{
{
private
$_object
=
null
;
private
$_object
=
null
;
private
$_text
=
'default'
;
private
$_text
=
'default'
;
public
$eventHandled
=
false
;
private
$_items
=
array
();
public
$event
;
public
$content
;
public
$behaviorCalled
=
false
;
public
function
getText
()
public
function
getText
()
{
{
...
@@ -203,12 +204,28 @@ class NewComponent extends \yii\base\Component
...
@@ -203,12 +204,28 @@ class NewComponent extends \yii\base\Component
public
function
getObject
()
public
function
getObject
()
{
{
if
(
!
$this
->
_object
)
{
if
(
!
$this
->
_object
)
{
$this
->
_object
=
new
NewComponent
;
$this
->
_object
=
new
self
;
$this
->
_object
->
_text
=
'object text'
;
$this
->
_object
->
_text
=
'object text'
;
}
}
return
$this
->
_object
;
return
$this
->
_object
;
}
}
public
function
getExecute
()
{
return
function
(
$param
)
{
return
$param
*
2
;
};
}
public
function
getItems
()
{
return
$this
->
_items
;
}
public
$eventHandled
=
false
;
public
$event
;
public
$behaviorCalled
=
false
;
public
function
myEventHandler
(
$event
)
public
function
myEventHandler
(
$event
)
{
{
$this
->
eventHandled
=
true
;
$this
->
eventHandled
=
true
;
...
@@ -223,6 +240,8 @@ class NewComponent extends \yii\base\Component
...
@@ -223,6 +240,8 @@ class NewComponent extends \yii\base\Component
class
NewBehavior
extends
\yii\base\Behavior
class
NewBehavior
extends
\yii\base\Behavior
{
{
public
$p
;
public
function
test
()
public
function
test
()
{
{
$this
->
owner
->
behaviorCalled
=
true
;
$this
->
owner
->
behaviorCalled
=
true
;
...
...
tests/unit/framework/base/DictionaryTest.php
View file @
88672ed1
...
@@ -11,6 +11,9 @@ class MapItem
...
@@ -11,6 +11,9 @@ class MapItem
class
DictionaryTest
extends
\yiiunit\TestCase
class
DictionaryTest
extends
\yiiunit\TestCase
{
{
/**
* @var \yii\base\Dictionary
*/
protected
$dictionary
;
protected
$dictionary
;
protected
$item1
,
$item2
,
$item3
;
protected
$item1
,
$item2
,
$item3
;
...
@@ -92,7 +95,7 @@ class DictionaryTest extends \yiiunit\TestCase
...
@@ -92,7 +95,7 @@ class DictionaryTest extends \yiiunit\TestCase
$this
->
assertEquals
(
$this
->
item3
,
$this
->
dictionary
[
'key3'
]);
$this
->
assertEquals
(
$this
->
item3
,
$this
->
dictionary
[
'key3'
]);
$this
->
assertEquals
(
$this
->
item1
,
$this
->
dictionary
[
'key4'
]);
$this
->
assertEquals
(
$this
->
item1
,
$this
->
dictionary
[
'key4'
]);
$this
->
setExpectedException
(
'yii\base\Exception'
);
$this
->
setExpectedException
(
'yii\base\
BadParam
Exception'
);
$this
->
dictionary
->
copyFrom
(
$this
);
$this
->
dictionary
->
copyFrom
(
$this
);
}
}
...
@@ -111,7 +114,7 @@ class DictionaryTest extends \yiiunit\TestCase
...
@@ -111,7 +114,7 @@ class DictionaryTest extends \yiiunit\TestCase
$this
->
assertEquals
(
3
,
$this
->
dictionary
->
getCount
());
$this
->
assertEquals
(
3
,
$this
->
dictionary
->
getCount
());
$this
->
assertEquals
(
$this
->
item1
,
$this
->
dictionary
[
'key2'
]);
$this
->
assertEquals
(
$this
->
item1
,
$this
->
dictionary
[
'key2'
]);
$this
->
assertEquals
(
$this
->
item3
,
$this
->
dictionary
[
'key3'
]);
$this
->
assertEquals
(
$this
->
item3
,
$this
->
dictionary
[
'key3'
]);
$this
->
setExpectedException
(
'yii\base\Exception'
);
$this
->
setExpectedException
(
'yii\base\
BadParam
Exception'
);
$this
->
dictionary
->
mergeWith
(
$this
,
false
);
$this
->
dictionary
->
mergeWith
(
$this
,
false
);
}
}
...
...
tests/unit/framework/base/VectorTest.php
View file @
88672ed1
...
@@ -11,6 +11,9 @@ class ListItem
...
@@ -11,6 +11,9 @@ class ListItem
class
VectorTest
extends
\yiiunit\TestCase
class
VectorTest
extends
\yiiunit\TestCase
{
{
/**
* @var Vector
*/
protected
$vector
;
protected
$vector
;
protected
$item1
,
$item2
,
$item3
;
protected
$item1
,
$item2
,
$item3
;
...
@@ -62,7 +65,7 @@ class VectorTest extends \yiiunit\TestCase
...
@@ -62,7 +65,7 @@ class VectorTest extends \yiiunit\TestCase
$this
->
assertEquals
(
2
,
$this
->
vector
->
indexOf
(
$this
->
item2
));
$this
->
assertEquals
(
2
,
$this
->
vector
->
indexOf
(
$this
->
item2
));
$this
->
assertEquals
(
0
,
$this
->
vector
->
indexOf
(
$this
->
item3
));
$this
->
assertEquals
(
0
,
$this
->
vector
->
indexOf
(
$this
->
item3
));
$this
->
assertEquals
(
1
,
$this
->
vector
->
indexOf
(
$this
->
item1
));
$this
->
assertEquals
(
1
,
$this
->
vector
->
indexOf
(
$this
->
item1
));
$this
->
setExpectedException
(
'yii\base\Exception'
);
$this
->
setExpectedException
(
'yii\base\
BadParam
Exception'
);
$this
->
vector
->
insertAt
(
4
,
$this
->
item3
);
$this
->
vector
->
insertAt
(
4
,
$this
->
item3
);
}
}
...
@@ -84,7 +87,7 @@ class VectorTest extends \yiiunit\TestCase
...
@@ -84,7 +87,7 @@ class VectorTest extends \yiiunit\TestCase
$this
->
assertEquals
(
-
1
,
$this
->
vector
->
indexOf
(
$this
->
item2
));
$this
->
assertEquals
(
-
1
,
$this
->
vector
->
indexOf
(
$this
->
item2
));
$this
->
assertEquals
(
1
,
$this
->
vector
->
indexOf
(
$this
->
item3
));
$this
->
assertEquals
(
1
,
$this
->
vector
->
indexOf
(
$this
->
item3
));
$this
->
assertEquals
(
0
,
$this
->
vector
->
indexOf
(
$this
->
item1
));
$this
->
assertEquals
(
0
,
$this
->
vector
->
indexOf
(
$this
->
item1
));
$this
->
setExpectedException
(
'yii\base\Exception'
);
$this
->
setExpectedException
(
'yii\base\
BadParam
Exception'
);
$this
->
vector
->
removeAt
(
2
);
$this
->
vector
->
removeAt
(
2
);
}
}
...
@@ -115,7 +118,7 @@ class VectorTest extends \yiiunit\TestCase
...
@@ -115,7 +118,7 @@ class VectorTest extends \yiiunit\TestCase
$array
=
array
(
$this
->
item3
,
$this
->
item1
);
$array
=
array
(
$this
->
item3
,
$this
->
item1
);
$this
->
vector
->
copyFrom
(
$array
);
$this
->
vector
->
copyFrom
(
$array
);
$this
->
assertTrue
(
count
(
$array
)
==
2
&&
$this
->
vector
[
0
]
===
$this
->
item3
&&
$this
->
vector
[
1
]
===
$this
->
item1
);
$this
->
assertTrue
(
count
(
$array
)
==
2
&&
$this
->
vector
[
0
]
===
$this
->
item3
&&
$this
->
vector
[
1
]
===
$this
->
item1
);
$this
->
setExpectedException
(
'yii\base\Exception'
);
$this
->
setExpectedException
(
'yii\base\
BadParam
Exception'
);
$this
->
vector
->
copyFrom
(
$this
);
$this
->
vector
->
copyFrom
(
$this
);
}
}
...
@@ -124,7 +127,7 @@ class VectorTest extends \yiiunit\TestCase
...
@@ -124,7 +127,7 @@ class VectorTest extends \yiiunit\TestCase
$array
=
array
(
$this
->
item3
,
$this
->
item1
);
$array
=
array
(
$this
->
item3
,
$this
->
item1
);
$this
->
vector
->
mergeWith
(
$array
);
$this
->
vector
->
mergeWith
(
$array
);
$this
->
assertTrue
(
$this
->
vector
->
getCount
()
==
4
&&
$this
->
vector
[
0
]
===
$this
->
item1
&&
$this
->
vector
[
3
]
===
$this
->
item1
);
$this
->
assertTrue
(
$this
->
vector
->
getCount
()
==
4
&&
$this
->
vector
[
0
]
===
$this
->
item1
&&
$this
->
vector
[
3
]
===
$this
->
item1
);
$this
->
setExpectedException
(
'yii\base\Exception'
);
$this
->
setExpectedException
(
'yii\base\
BadParam
Exception'
);
$this
->
vector
->
mergeWith
(
$this
);
$this
->
vector
->
mergeWith
(
$this
);
}
}
...
@@ -138,7 +141,7 @@ class VectorTest extends \yiiunit\TestCase
...
@@ -138,7 +141,7 @@ class VectorTest extends \yiiunit\TestCase
{
{
$this
->
assertTrue
(
$this
->
vector
[
0
]
===
$this
->
item1
);
$this
->
assertTrue
(
$this
->
vector
[
0
]
===
$this
->
item1
);
$this
->
assertTrue
(
$this
->
vector
[
1
]
===
$this
->
item2
);
$this
->
assertTrue
(
$this
->
vector
[
1
]
===
$this
->
item2
);
$this
->
setExpectedException
(
'yii\base\Exception'
);
$this
->
setExpectedException
(
'yii\base\
BadParam
Exception'
);
$a
=
$this
->
vector
[
2
];
$a
=
$this
->
vector
[
2
];
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment