Tests that DOMNode properly tracks own and descendants' user properties. attr1 set on aNode - [descendantUserAttributeCounters:[attr1=1]] - - [descendantUserAttributeCounters:[attr1=1]]

\nTests that DOMNode properly tracks own and descendants' user properties.\n

-
[descendantUserAttributeCounters:[attr1=1]]
-
[descendantUserAttributeCounters:[attr1=1]] Third-level node [userProperties:[attr1=true]]
attr2 set on child2 - [descendantUserAttributeCounters:[attr1=1,attr2=1]] - - [descendantUserAttributeCounters:[attr1=1,attr2=1]]

\nTests that DOMNode properly tracks own and descendants' user properties.\n

-
[descendantUserAttributeCounters:[attr1=1,attr2=1]]
-
[userProperties:[attr2=value], descendantUserAttributeCounters:[attr1=1]] Third-level node [userProperties:[attr1=true]]
attr1 set on child2 - [descendantUserAttributeCounters:[attr1=2,attr2=1]] - - [descendantUserAttributeCounters:[attr1=2,attr2=1]]

\nTests that DOMNode properly tracks own and descendants' user properties.\n

-
[descendantUserAttributeCounters:[attr1=2,attr2=1]]
-
[userProperties:[attr2=value,attr1=true], descendantUserAttributeCounters:[attr1=1]] Third-level node [userProperties:[attr1=true]]
attr1 modified on aNode - [descendantUserAttributeCounters:[attr1=2,attr2=1]] - - [descendantUserAttributeCounters:[attr1=2,attr2=1]]

\nTests that DOMNode properly tracks own and descendants' user properties.\n

-
[descendantUserAttributeCounters:[attr1=2,attr2=1]]
-
[userProperties:[attr2=value,attr1=true], descendantUserAttributeCounters:[attr1=1]] Third-level node [userProperties:[attr1=anotherValue]]
attr2 modified on child2 - [descendantUserAttributeCounters:[attr1=2,attr2=1]] - - [descendantUserAttributeCounters:[attr1=2,attr2=1]]

\nTests that DOMNode properly tracks own and descendants' user properties.\n

-
[descendantUserAttributeCounters:[attr1=2,attr2=1]]
-
[userProperties:[attr2=anotherValue,attr1=true], descendantUserAttributeCounters:[attr1=1]] Third-level node [userProperties:[attr1=anotherValue]]
attr1 removed from aNode - [descendantUserAttributeCounters:[attr1=1,attr2=1]] - - [descendantUserAttributeCounters:[attr1=1,attr2=1]]

\nTests that DOMNode properly tracks own and descendants' user properties.\n

-
[descendantUserAttributeCounters:[attr1=1,attr2=1]]
-
[userProperties:[attr2=anotherValue,attr1=true]] Third-level node
aNode removed - [descendantUserAttributeCounters:[attr1=1,attr2=1]] - - [descendantUserAttributeCounters:[attr1=1,attr2=1]]

\nTests that DOMNode properly tracks own and descendants' user properties.\n

-
[descendantUserAttributeCounters:[attr1=1,attr2=1]]
[userProperties:[attr2=anotherValue,attr1=true]]
child2 removed - - -

\nTests that DOMNode properly tracks own and descendants' user properties.\n

-