BlueM\Tree\Node
|
[x] The previous sibling can be retrieved
|
[x] Trying to get the previous sibling returns null when called on the first node
|
[x] The next sibling can be retrieved
|
[x] All siblings can be retrieved
|
[x] All siblings can be retrieved including the node itself
|
[x] All siblings can be retrieved when mixed data types are used for the ids
|
[x] The child nodes can be retrieved
|
[x] When trying to get the child nodes an empty array is returned if there are no child nodes
|
[x] A node can tell how many children it has
|
[x] A node can tell if it has any child nodes
|
[x] The parent node can be retrieved
|
[x] Trying to get the parent returns null for the root node
|
[x] A child can be attached to a node
|
[x] The node id can be retrieved
|
[x] A node property can be fetched using method get
|
[x] Trying to get a non existent property using get throws an exception
|
[x] A node property can be fetched using magic method
|
[x] Trying to get a non existent property using magic method throws an exception
|
[x] The existence of a property can be checked using isset function
|
[x] Node properties are handled case insensitively
|
[x] The properties can be access using magic properties
|
[x] An exception is thrown when accessing an inexistent magic property
|
[x] The properties can be fetched as an array
|
[x] When serializing a node to json its array representation is used
|
[x] In scalar context the node is typecasted to its id
|
[x] The level of a root node is 0
|
[x] A node 2 levels below the root node has level 2
|
[x] The root nodes ancestors is an empty array
|
[x] A nodes ancestors can be retrieved
|
[x] A nodes ancestors can be retrieved including the node itself
|
[x] A nodes descendants can be retrieved
|
[x] A nodes descendants can be retrieved including the node itself
|
|
BlueM\Tree\Serializer\FlatTreeJsonSerializer
|
[x] Serialization happens by calling get nodes method on the tree
|
|
BlueM\Tree\Serializer\HierarchicalTreeJsonSerializer
|
[x] Serializes to a hierarchical array
|
|
BlueM\Tree
|
[x] An exception is thrown if a non scalar value should be used as root id
|
[x] An exception is thrown if a non string value should be used as id field name
|
[x] An exception is thrown if a non string value should be used as parent id field name
|
[x] An exception is thrown if a non object should be used as serializer
|
[x] The serializer can be set to an object implementing serializerinterface
|
[x] The root nodes can be retrieved
|
[x] The root nodes can be retrieved when the ids are strings
|
[x] The tree can be rebuilt from new data
|
[x] An exception is thrown when trying to create a tree from unusable data
|
[x] A tree can be created from an iterable
|
[x] A tree can be created from an array of objects implementing iterator
|
[x] The tree can be serialized to a json representation from which a tree with the same data can be built when decoded
|
[x] All nodes can be retrieved
|
[x] All nodes can be retrieved when node ids are strings
|
[x] A node can be accessed by its integer id
|
[x] A node can be accessed by its string id
|
[x] Trying to get a node by its id throws an exception if the id is invalid
|
[x] A node can be accessed by its value path
|
[x] Trying to get a node by its value path returns null if no node matches
|
[x] In scalar context the tree is returned as a string
|
[x] An exception is thrown when an invalid parent id is referenced
|
[x] An exception is thrown when a node would be its own parent
|
[x] An exception is thrown when a node would be its own parent when own id and parent id have different types
|
[x] When mixing numeric and string ids no exception is thrown due to implicit typecasting
|
[x] Clients can supply differing names for id and parent id in input data
|