mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-22 01:25:17 +08:00
score: Add _RBTree_Initialize_one()
This commit is contained in:
@@ -387,6 +387,26 @@ RTEMS_INLINE_ROUTINE void _RBTree_Initialize_empty(
|
||||
RB_INIT( the_rbtree );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initializes this red-black tree to contain exactly the specified
|
||||
* node.
|
||||
*
|
||||
* @param[in] the_rbtree The red-black tree control.
|
||||
* @param[in] the_node The one and only node.
|
||||
*/
|
||||
RTEMS_INLINE_ROUTINE void _RBTree_Initialize_one(
|
||||
RBTree_Control *the_rbtree,
|
||||
RBTree_Node *the_node
|
||||
)
|
||||
{
|
||||
_Assert( _RBTree_Is_node_off_tree( the_node ) );
|
||||
RB_ROOT( the_rbtree ) = the_node;
|
||||
RB_PARENT( the_node, Node ) = NULL;
|
||||
RB_LEFT( the_node, Node ) = NULL;
|
||||
RB_RIGHT( the_node, Node ) = NULL;
|
||||
RB_COLOR( the_node, Node ) = RB_BLACK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the minimum node of the red-black tree.
|
||||
*
|
||||
|
||||
@@ -19,6 +19,30 @@ const char rtems_test_name[] = "SPRBTREE 1";
|
||||
/* forward declarations to avoid warnings */
|
||||
rtems_task Init(rtems_task_argument argument);
|
||||
|
||||
static void test_rbtree_init_one(void)
|
||||
{
|
||||
RBTree_Control tree;
|
||||
RBTree_Node node;
|
||||
|
||||
puts( "INIT - Initialize one" );
|
||||
|
||||
_RBTree_Initialize_node( &node );
|
||||
_RBTree_Initialize_one( &tree, &node );
|
||||
rtems_test_assert( !_RBTree_Is_empty( &tree ) );
|
||||
rtems_test_assert( _RBTree_Is_root( &node ) );
|
||||
rtems_test_assert( !_RBTree_Is_node_off_tree( &node ) );
|
||||
rtems_test_assert( _RBTree_Left( &node ) == NULL );
|
||||
rtems_test_assert( _RBTree_Right( &node ) == NULL );
|
||||
rtems_test_assert( _RBTree_Parent( &node ) == NULL );
|
||||
rtems_test_assert( _RBTree_Successor( &node ) == NULL );
|
||||
rtems_test_assert( _RBTree_Predecessor( &node ) == NULL );
|
||||
rtems_test_assert( _RBTree_Minimum( &tree ) == &node );
|
||||
rtems_test_assert( _RBTree_Maximum( &tree ) == &node );
|
||||
|
||||
_RBTree_Extract( &tree, &node );
|
||||
rtems_test_assert( _RBTree_Is_empty( &tree ) );
|
||||
}
|
||||
|
||||
static const int numbers[20] = {
|
||||
52, 99, 0, 85, 43, 44, 10, 60, 50, 19, 8, 68, 48, 57, 17, 67, 90, 12, 77, 71
|
||||
};
|
||||
@@ -2271,6 +2295,7 @@ rtems_task Init( rtems_task_argument ignored )
|
||||
rtems_test_exit(0);
|
||||
}
|
||||
|
||||
test_rbtree_init_one();
|
||||
test_rbtree_min_max();
|
||||
test_rbtree_insert_inline();
|
||||
test_rbtree_random_ops();
|
||||
|
||||
@@ -30,6 +30,7 @@ INIT - Removing 100 nodes
|
||||
INIT - Verify rtems_rbtree_insert with 100 nodes value [99,0]
|
||||
INIT - Verify rtems_rbtree_find in a duplicate tree
|
||||
INIT - Removing 100 nodes
|
||||
INIT - Initialize one
|
||||
INIT - Verify min/max node updates
|
||||
INIT - Verify _RBTree_Insert_inline
|
||||
INIT - Random operations
|
||||
|
||||
Reference in New Issue
Block a user