summaryrefslogblamecommitdiffstats
path: root/testsuites/libtests/rbheap01/rbheap.doc
blob: bc64fb2679075099b0723940932140831ffbd711 (plain) (tree)
1
2
3
4
5

                                       


                                                   



















                                                                             










































































































































                                                                                
# SPDX-License-Identifier: BSD-2-Clause

#  COPYRIGHT (c) 2014.
#  On-Line Applications Research Corporation (OAR).
#  Cynthia Rempel <cynthia@rtems.org>
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
This file describes the directives and concepts tested by this test set.

test set name: rbheap01

test_init_chunk_alignment:

test_init_begin_greater_than_end:
directives:
  + rtems_rbheap_initialize

concepts:
  + verifies RTEMS_INVALID_ADDRESS is returned when the beginning address is
    larger than the ending address.

test_init_begin_greater_than_aligned_begin:
directives:
  + rtems_rbheap_initialize

concepts:
  + verifies RTEMS_INVALID_ADDRESS is returned when the beginning address has a
    negative offset from an address aligned with the pagesize.

test_init_aligned_begin_greater_than_aligned_end:
directives:
  + rtems_rbheap_initialize

concepts:
  + verifies RTEMS_INVALID_ADDRESS is returned when the beginning address has a
    positive offset from the ending address.

test_init_empty_descriptors:
directives:
  + rtems_rbheap_initialize

concepts:
  + verifies RTEMS_NO_MEMORY is returned when attempting to initialize an rbtree
    to an empty descriptor

test_alloc_and_free_one:
directives:
  + rtems_rbheap_allocate
  + rtems_rbheap_free

concepts:
  + allocates and frees a red-black-tree

test_alloc_zero:
directives:
  + rtems_rbheap_allocate

concepts:
  + verifies that the allocating no memory for a red-black-tree returns a
    NULL pointer

test_alloc_huge_chunk:
directives:
  + rtems_rbheap_allocate

concepts:
  + verifies that the allocating more memory than is available for a
    red-black-tree returns a NULL pointer

test_alloc_one_chunk:
directives:
  + rtems_rbheap_allocate
  + rtems_rbheap_free

concepts:
  + verifies that allocating one chunk of memory from an rbheap returns memory
  + verifies that one chunk of memory can be freed

test_alloc_many_chunks:
directives:
  + rtems_rbheap_allocate
  + rtems_rbheap_free

concepts:
  + verifies that allocating eight (8) chunks of memory from an rbheap returns
    memory
  + verifies that one chunk of memory can be freed

test_alloc_misaligned:
directives:
  + rtems_rbheap_allocate

concepts:
  + verifies that rtems_rbheap_allocate returns NULL (does not allocate memory)
    if the size allocated is not aligned with the pagesize

test_alloc_with_malloc_extend:
directives:
  + rtems_rbheap_allocate
  + rtems_rbheap_initialize
  + rtems_heap_greedy_allocate
  + rtems_heap_greedy_free

concepts:
  + allocate as much memory as possible
  + verify no more can be allocated
  + free as much memory as possible
  + verify memory can be allocated again

test_free_null:
directives:
  + rtems_rbheap_free

concepts:
  + verify RTEMS_SUCCESSFUL is returned when freeing a NULL pointer

test_free_invalid:
directives:
  + rtems_rbheap_free

concepts:
  + verifies freeing a non-zero rbheap fails with RTEMS_INVALID_ID

test_free_double:
directives:
  + rtems_rbheap_allocate
  + rtems_rbheap_free

concepts:
  + verifies allocating an rbheap returns memory
  + verifies freeing a heap twice fails with RTEMS_INCORRECT_STATE

test_free_merge_left_or_right:

NOTE: test_free_merge_left_or_right should probably be broken into
test_free_merge_left and test_free_merge_right...

directives:
  + rtems_rbheap_allocate
  + rtems_rbheap_free

concepts:
  + allocates 5 rbheaps and frees memory in different ways

TODO: break into different tests