update keylist to use bool and stdint value for key not found. (#572)
* Updated keylist to use bool and stdint value for key not found. * Added Keylist_Index_Key to deprecate Keylist_Key function * Changed the deprecated Keylist_Key API to Keylist_Index_Key * Added unit test for Keylist_Index_Key API
This commit is contained in:
@@ -241,10 +241,7 @@ bool VMAC_Find_By_Data(struct vmac_data *vmac, uint32_t *device_id)
|
|||||||
list_vmac = Keylist_Data_Index(VMAC_List, index);
|
list_vmac = Keylist_Data_Index(VMAC_List, index);
|
||||||
if (list_vmac) {
|
if (list_vmac) {
|
||||||
if (VMAC_Match(vmac, list_vmac)) {
|
if (VMAC_Match(vmac, list_vmac)) {
|
||||||
if (device_id) {
|
status = Keylist_Index_Key(VMAC_List, index, device_id);
|
||||||
*device_id = Keylist_Key(VMAC_List, index);
|
|
||||||
}
|
|
||||||
status = true;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -260,24 +257,25 @@ bool VMAC_Find_By_Data(struct vmac_data *vmac, uint32_t *device_id)
|
|||||||
void VMAC_Cleanup(void)
|
void VMAC_Cleanup(void)
|
||||||
{
|
{
|
||||||
struct vmac_data *pVMAC;
|
struct vmac_data *pVMAC;
|
||||||
uint32_t device_id;
|
|
||||||
const int index = 0;
|
const int index = 0;
|
||||||
unsigned i = 0;
|
unsigned i = 0;
|
||||||
|
|
||||||
if (VMAC_List) {
|
if (VMAC_List) {
|
||||||
do {
|
do {
|
||||||
device_id = Keylist_Key(VMAC_List, index);
|
#if PRINT_ENABLED
|
||||||
#if !PRINT_ENABLED
|
uint32_t device_id;
|
||||||
UNUSED(device_id);
|
Keylist_Index_Key(VMAC_List, index, &device_id);
|
||||||
#endif
|
#endif
|
||||||
pVMAC = Keylist_Data_Delete_By_Index(VMAC_List, index);
|
pVMAC = Keylist_Data_Delete_By_Index(VMAC_List, index);
|
||||||
if (pVMAC) {
|
if (pVMAC) {
|
||||||
|
#if PRINT_ENABLED
|
||||||
PRINTF("VMAC List: %lu [", (unsigned long)device_id);
|
PRINTF("VMAC List: %lu [", (unsigned long)device_id);
|
||||||
/* print the MAC */
|
/* print the MAC */
|
||||||
for (i = 0; i < pVMAC->mac_len; i++) {
|
for (i = 0; i < pVMAC->mac_len; i++) {
|
||||||
PRINTF("%02X", pVMAC->mac[i]);
|
PRINTF("%02X", pVMAC->mac[i]);
|
||||||
}
|
}
|
||||||
PRINTF("]\n");
|
PRINTF("]\n");
|
||||||
|
#endif
|
||||||
free(pVMAC);
|
free(pVMAC);
|
||||||
}
|
}
|
||||||
} while (pVMAC);
|
} while (pVMAC);
|
||||||
|
|||||||
@@ -156,7 +156,11 @@ unsigned Analog_Output_Count(void)
|
|||||||
*/
|
*/
|
||||||
uint32_t Analog_Output_Index_To_Instance(unsigned index)
|
uint32_t Analog_Output_Index_To_Instance(unsigned index)
|
||||||
{
|
{
|
||||||
return Keylist_Key(Object_List, index);
|
KEY key = UINT32_MAX;
|
||||||
|
|
||||||
|
Keylist_Index_Key(Object_List, index, &key);
|
||||||
|
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -159,18 +159,20 @@ uint32_t bacfile_pathname_instance(
|
|||||||
struct object_data *pObject;
|
struct object_data *pObject;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
int index = 0;
|
int index = 0;
|
||||||
|
KEY key = BACNET_MAX_INSTANCE;
|
||||||
|
|
||||||
count = Keylist_Count(Object_List);
|
count = Keylist_Count(Object_List);
|
||||||
while (count) {
|
while (count) {
|
||||||
pObject = Keylist_Data_Index(Object_List, index);
|
pObject = Keylist_Data_Index(Object_List, index);
|
||||||
if (strcmp(pathname, pObject->Pathname) == 0) {
|
if (strcmp(pathname, pObject->Pathname) == 0) {
|
||||||
return Keylist_Key(Object_List, index);
|
Keylist_Index_Key(Object_List, index, &key);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
count--;
|
count--;
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return BACNET_MAX_INSTANCE;
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -262,7 +264,11 @@ uint32_t bacfile_count(void)
|
|||||||
*/
|
*/
|
||||||
uint32_t bacfile_index_to_instance(unsigned find_index)
|
uint32_t bacfile_index_to_instance(unsigned find_index)
|
||||||
{
|
{
|
||||||
return Keylist_Key(Object_List, find_index);
|
KEY key = UINT32_MAX;
|
||||||
|
|
||||||
|
Keylist_Index_Key(Object_List, find_index, &key);
|
||||||
|
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -143,7 +143,11 @@ unsigned Binary_Lighting_Output_Count(void)
|
|||||||
*/
|
*/
|
||||||
uint32_t Binary_Lighting_Output_Index_To_Instance(unsigned index)
|
uint32_t Binary_Lighting_Output_Index_To_Instance(unsigned index)
|
||||||
{
|
{
|
||||||
return Keylist_Key(Object_List, index);
|
KEY key = UINT32_MAX;
|
||||||
|
|
||||||
|
Keylist_Index_Key(Object_List, index, &key);
|
||||||
|
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -159,7 +159,11 @@ unsigned Binary_Output_Count(void)
|
|||||||
*/
|
*/
|
||||||
uint32_t Binary_Output_Index_To_Instance(unsigned index)
|
uint32_t Binary_Output_Index_To_Instance(unsigned index)
|
||||||
{
|
{
|
||||||
return Keylist_Key(Object_List, index);
|
KEY key = UINT32_MAX;
|
||||||
|
|
||||||
|
Keylist_Index_Key(Object_List, index, &key);
|
||||||
|
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -133,7 +133,11 @@ unsigned Calendar_Count(void)
|
|||||||
*/
|
*/
|
||||||
uint32_t Calendar_Index_To_Instance(unsigned index)
|
uint32_t Calendar_Index_To_Instance(unsigned index)
|
||||||
{
|
{
|
||||||
return Keylist_Key(Object_List, index);
|
KEY key = UINT32_MAX;
|
||||||
|
|
||||||
|
Keylist_Index_Key(Object_List, index, &key);
|
||||||
|
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -154,7 +154,11 @@ unsigned Channel_Count(void)
|
|||||||
*/
|
*/
|
||||||
uint32_t Channel_Index_To_Instance(unsigned index)
|
uint32_t Channel_Index_To_Instance(unsigned index)
|
||||||
{
|
{
|
||||||
return Keylist_Key(Object_List, index);
|
KEY key = UINT32_MAX;
|
||||||
|
|
||||||
|
Keylist_Index_Key(Object_List, index, &key);
|
||||||
|
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -148,7 +148,11 @@ unsigned Color_Count(void)
|
|||||||
*/
|
*/
|
||||||
uint32_t Color_Index_To_Instance(unsigned index)
|
uint32_t Color_Index_To_Instance(unsigned index)
|
||||||
{
|
{
|
||||||
return Keylist_Key(Object_List, index);
|
KEY key = UINT32_MAX;
|
||||||
|
|
||||||
|
Keylist_Index_Key(Object_List, index, &key);
|
||||||
|
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -144,7 +144,11 @@ unsigned Color_Temperature_Count(void)
|
|||||||
*/
|
*/
|
||||||
uint32_t Color_Temperature_Index_To_Instance(unsigned index)
|
uint32_t Color_Temperature_Index_To_Instance(unsigned index)
|
||||||
{
|
{
|
||||||
return Keylist_Key(Object_List, index);
|
KEY key = UINT32_MAX;
|
||||||
|
|
||||||
|
Keylist_Index_Key(Object_List, index, &key);
|
||||||
|
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -174,7 +174,11 @@ unsigned Lighting_Output_Count(void)
|
|||||||
*/
|
*/
|
||||||
uint32_t Lighting_Output_Index_To_Instance(unsigned index)
|
uint32_t Lighting_Output_Index_To_Instance(unsigned index)
|
||||||
{
|
{
|
||||||
return Keylist_Key(Object_List, index);
|
KEY key = UINT32_MAX;
|
||||||
|
|
||||||
|
Keylist_Index_Key(Object_List, index, &key);
|
||||||
|
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -133,7 +133,11 @@ unsigned Life_Safety_Point_Count(void)
|
|||||||
*/
|
*/
|
||||||
uint32_t Life_Safety_Point_Index_To_Instance(unsigned index)
|
uint32_t Life_Safety_Point_Index_To_Instance(unsigned index)
|
||||||
{
|
{
|
||||||
return Keylist_Key(Object_List, index);
|
KEY key = UINT32_MAX;
|
||||||
|
|
||||||
|
Keylist_Index_Key(Object_List, index, &key);
|
||||||
|
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -150,7 +150,11 @@ unsigned Multistate_Output_Count(void)
|
|||||||
*/
|
*/
|
||||||
uint32_t Multistate_Output_Index_To_Instance(unsigned index)
|
uint32_t Multistate_Output_Index_To_Instance(unsigned index)
|
||||||
{
|
{
|
||||||
return Keylist_Key(Object_List, index);
|
KEY key = UINT32_MAX;
|
||||||
|
|
||||||
|
Keylist_Index_Key(Object_List, index, &key);
|
||||||
|
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -136,7 +136,11 @@ unsigned Time_Value_Count(void)
|
|||||||
*/
|
*/
|
||||||
uint32_t Time_Value_Index_To_Instance(unsigned index)
|
uint32_t Time_Value_Index_To_Instance(unsigned index)
|
||||||
{
|
{
|
||||||
return Keylist_Key(Object_List, index);
|
KEY key = UINT32_MAX;
|
||||||
|
|
||||||
|
Keylist_Index_Key(Object_List, index, &key);
|
||||||
|
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -41,16 +41,9 @@
|
|||||||
/* static data */
|
/* static data */
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <stdint.h>
|
||||||
#include "bacnet/basic/sys/keylist.h" /* check for valid prototypes */
|
#include <stdbool.h>
|
||||||
|
#include "bacnet/basic/sys/keylist.h"
|
||||||
#ifndef FALSE
|
|
||||||
#define FALSE 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef TRUE
|
|
||||||
#define TRUE 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/******************************************************************** */
|
/******************************************************************** */
|
||||||
/* Generic node routines */
|
/* Generic node routines */
|
||||||
@@ -81,16 +74,16 @@ static struct Keylist *KeylistCreate(void)
|
|||||||
*
|
*
|
||||||
* @param list Pointer to the list to be tested.
|
* @param list Pointer to the list to be tested.
|
||||||
*
|
*
|
||||||
* @return Returns TRUE if success, FALSE if failed
|
* @return Returns true if success, false if failed
|
||||||
*/
|
*/
|
||||||
static int CheckArraySize(OS_Keylist list)
|
static bool CheckArraySize(OS_Keylist list)
|
||||||
{
|
{
|
||||||
int new_size = 0; /* set it up so that no size change is the default */
|
int new_size = 0; /* set it up so that no size change is the default */
|
||||||
const int chunk = 8; /* minimum number of nodes to allocate memory for */
|
const int chunk = 8; /* minimum number of nodes to allocate memory for */
|
||||||
struct Keylist_Node **new_array = NULL; /* new array of nodes, if needed */
|
struct Keylist_Node **new_array = NULL; /* new array of nodes, if needed */
|
||||||
int i; /* counter */
|
int i; /* counter */
|
||||||
if (!list) {
|
if (!list) {
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* indicates the need for more memory allocation */
|
/* indicates the need for more memory allocation */
|
||||||
@@ -107,7 +100,7 @@ static int CheckArraySize(OS_Keylist list)
|
|||||||
|
|
||||||
/* See if we got the memory we wanted */
|
/* See if we got the memory we wanted */
|
||||||
if (!new_array) {
|
if (!new_array) {
|
||||||
return FALSE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* copy the nodes from the old array to the new array */
|
/* copy the nodes from the old array to the new array */
|
||||||
@@ -121,12 +114,12 @@ static int CheckArraySize(OS_Keylist list)
|
|||||||
list->size = new_size;
|
list->size = new_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Find the index of the key that we are looking for.
|
/** Find the index of the key that we are looking for.
|
||||||
* Since it is sorted, we can optimize the search.
|
* Since it is sorted, we can optimize the search.
|
||||||
* returns TRUE if found, and FALSE not found.
|
* returns true if found, and false not found.
|
||||||
* Returns the found key and the index where it was found in parameters.
|
* Returns the found key and the index where it was found in parameters.
|
||||||
* If the key is not found, the nearest index from the bottom will be returned,
|
* If the key is not found, the nearest index from the bottom will be returned,
|
||||||
* allowing the ability to find where an key should go into the list.
|
* allowing the ability to find where an key should go into the list.
|
||||||
@@ -136,24 +129,24 @@ static int CheckArraySize(OS_Keylist list)
|
|||||||
* @param pIndex Pointer to the variable taking the index were the key
|
* @param pIndex Pointer to the variable taking the index were the key
|
||||||
* had been found.
|
* had been found.
|
||||||
*
|
*
|
||||||
* @return TRUE if found, and FALSE if not
|
* @return true if found, and false if not
|
||||||
*/
|
*/
|
||||||
static int FindIndex(OS_Keylist list, KEY key, int *pIndex)
|
static bool FindIndex(OS_Keylist list, KEY key, int *pIndex)
|
||||||
{
|
{
|
||||||
struct Keylist_Node *node; /* holds the new node */
|
struct Keylist_Node *node; /* holds the new node */
|
||||||
int left = 0; /* the left branch of tree, beginning of list */
|
int left = 0; /* the left branch of tree, beginning of list */
|
||||||
int right = 0; /* the right branch on the tree, end of list */
|
int right = 0; /* the right branch on the tree, end of list */
|
||||||
int index = 0; /* our current search place in the array */
|
int index = 0; /* our current search place in the array */
|
||||||
KEY current_key = 0; /* place holder for current node key */
|
KEY current_key = 0; /* place holder for current node key */
|
||||||
int status = FALSE; /* return value */
|
bool status = false; /* return value */
|
||||||
|
|
||||||
if (!list) {
|
if (!list) {
|
||||||
*pIndex = 0;
|
*pIndex = 0;
|
||||||
return (FALSE);
|
return false;
|
||||||
}
|
}
|
||||||
if (!list->array || !list->count) {
|
if (!list->array || !list->count) {
|
||||||
*pIndex = 0;
|
*pIndex = 0;
|
||||||
return (FALSE);
|
return false;
|
||||||
}
|
}
|
||||||
right = list->count - 1;
|
right = list->count - 1;
|
||||||
/* assume that the list is sorted */
|
/* assume that the list is sorted */
|
||||||
@@ -174,7 +167,7 @@ static int FindIndex(OS_Keylist list, KEY key, int *pIndex)
|
|||||||
} while ((key != current_key) && (left <= right));
|
} while ((key != current_key) && (left <= right));
|
||||||
|
|
||||||
if (key == current_key) {
|
if (key == current_key) {
|
||||||
status = TRUE;
|
status = true;
|
||||||
*pIndex = index;
|
*pIndex = index;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -186,7 +179,7 @@ static int FindIndex(OS_Keylist list, KEY key, int *pIndex)
|
|||||||
*pIndex = index;
|
*pIndex = index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (status);
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************** */
|
/******************************************************************** */
|
||||||
@@ -398,11 +391,12 @@ void *Keylist_Data_Index(OS_Keylist list, int index)
|
|||||||
* @param list Pointer to the list
|
* @param list Pointer to the list
|
||||||
* @param index Index that shall be returned
|
* @param index Index that shall be returned
|
||||||
*
|
*
|
||||||
* @return Key for the index or 0.
|
* @return Key for the index or UINT32_MAX if not found.
|
||||||
|
* @deprecated Use Keylist_Index_Key() instead
|
||||||
*/
|
*/
|
||||||
KEY Keylist_Key(OS_Keylist list, int index)
|
KEY Keylist_Key(OS_Keylist list, int index)
|
||||||
{
|
{
|
||||||
KEY key = 0; /* return value */
|
KEY key = UINT32_MAX; /* return value */
|
||||||
struct Keylist_Node *node;
|
struct Keylist_Node *node;
|
||||||
|
|
||||||
if (list) {
|
if (list) {
|
||||||
@@ -417,6 +411,35 @@ KEY Keylist_Key(OS_Keylist list, int index)
|
|||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if there is a node key at the given index.
|
||||||
|
*
|
||||||
|
* @param list Pointer to the list
|
||||||
|
* @param index Index that shall be returned
|
||||||
|
* @param pKey Pointer to the variable returning the key
|
||||||
|
* @return True if the key is found, false if not.
|
||||||
|
*/
|
||||||
|
bool Keylist_Index_Key(OS_Keylist list, int index, KEY *pKey)
|
||||||
|
{
|
||||||
|
bool status = false; /* return value */
|
||||||
|
struct Keylist_Node *node;
|
||||||
|
|
||||||
|
if (list) {
|
||||||
|
if (list->array && list->count && (index >= 0) &&
|
||||||
|
(index < list->count)) {
|
||||||
|
node = list->array[index];
|
||||||
|
if (node) {
|
||||||
|
status = true;
|
||||||
|
if (pKey) {
|
||||||
|
*pKey = node->key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
/** Returns the next empty key from the list.
|
/** Returns the next empty key from the list.
|
||||||
*
|
*
|
||||||
* @param list Pointer to the list
|
* @param list Pointer to the list
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
#define KEYLIST_H
|
#define KEYLIST_H
|
||||||
|
|
||||||
#include "bacnet/bacnet_stack_exports.h"
|
#include "bacnet/bacnet_stack_exports.h"
|
||||||
|
#include "bacnet/basic/sys/platform.h"
|
||||||
#include "bacnet/basic/sys/key.h"
|
#include "bacnet/basic/sys/key.h"
|
||||||
|
|
||||||
/* This is a key sorted linked list data library that */
|
/* This is a key sorted linked list data library that */
|
||||||
@@ -104,12 +105,20 @@ extern "C" {
|
|||||||
OS_Keylist list,
|
OS_Keylist list,
|
||||||
int index);
|
int index);
|
||||||
|
|
||||||
/* return the key at the given index */
|
/* returns the node key specified by the index */
|
||||||
|
BACNET_STACK_DEPRECATED("Use Keylist_Index_Key() instead")
|
||||||
BACNET_STACK_EXPORT
|
BACNET_STACK_EXPORT
|
||||||
KEY Keylist_Key(
|
KEY Keylist_Key(
|
||||||
OS_Keylist list,
|
OS_Keylist list,
|
||||||
int index);
|
int index);
|
||||||
|
|
||||||
|
/* returns the node key specified by the index */
|
||||||
|
BACNET_STACK_EXPORT
|
||||||
|
bool Keylist_Index_Key(
|
||||||
|
OS_Keylist list,
|
||||||
|
int index,
|
||||||
|
KEY *pKey);
|
||||||
|
|
||||||
/* returns the next empty key from the list */
|
/* returns the next empty key from the list */
|
||||||
BACNET_STACK_EXPORT
|
BACNET_STACK_EXPORT
|
||||||
KEY Keylist_Next_Empty_Key(
|
KEY Keylist_Next_Empty_Key(
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ ZTEST(keylist_tests, testKeyListDataKey)
|
|||||||
static void testKeyListDataKey(void)
|
static void testKeyListDataKey(void)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
bool status = false;
|
||||||
OS_Keylist list;
|
OS_Keylist list;
|
||||||
KEY key;
|
KEY key;
|
||||||
KEY test_key;
|
KEY test_key;
|
||||||
@@ -137,19 +138,22 @@ static void testKeyListDataKey(void)
|
|||||||
key = 1;
|
key = 1;
|
||||||
index = Keylist_Data_Add(list, key, data1);
|
index = Keylist_Data_Add(list, key, data1);
|
||||||
zassert_equal(index, 0, NULL);
|
zassert_equal(index, 0, NULL);
|
||||||
test_key = Keylist_Key(list, index);
|
status = Keylist_Index_Key(list, index, &test_key);
|
||||||
|
zassert_true(status, NULL);
|
||||||
zassert_equal(test_key, key, NULL);
|
zassert_equal(test_key, key, NULL);
|
||||||
|
|
||||||
key = 2;
|
key = 2;
|
||||||
index = Keylist_Data_Add(list, key, data2);
|
index = Keylist_Data_Add(list, key, data2);
|
||||||
zassert_equal(index, 1, NULL);
|
zassert_equal(index, 1, NULL);
|
||||||
test_key = Keylist_Key(list, index);
|
status = Keylist_Index_Key(list, index, &test_key);
|
||||||
|
zassert_true(status, NULL);
|
||||||
zassert_equal(test_key, key, NULL);
|
zassert_equal(test_key, key, NULL);
|
||||||
|
|
||||||
key = 3;
|
key = 3;
|
||||||
index = Keylist_Data_Add(list, key, data3);
|
index = Keylist_Data_Add(list, key, data3);
|
||||||
zassert_equal(index, 2, NULL);
|
zassert_equal(index, 2, NULL);
|
||||||
test_key = Keylist_Key(list, index);
|
status = Keylist_Index_Key(list, index, &test_key);
|
||||||
|
zassert_true(status, NULL);
|
||||||
zassert_equal(test_key, key, NULL);
|
zassert_equal(test_key, key, NULL);
|
||||||
|
|
||||||
zassert_equal(Keylist_Count(list), 3, NULL);
|
zassert_equal(Keylist_Count(list), 3, NULL);
|
||||||
@@ -278,7 +282,8 @@ ZTEST(keylist_tests, testKeyListLarge)
|
|||||||
static void testKeyListLarge(void)
|
static void testKeyListLarge(void)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
int data1 = 42;
|
bool status = false;
|
||||||
|
int data_list[1024 * 16] = { 0 };
|
||||||
int *data;
|
int *data;
|
||||||
OS_Keylist list;
|
OS_Keylist list;
|
||||||
KEY key;
|
KEY key;
|
||||||
@@ -290,15 +295,18 @@ static void testKeyListLarge(void)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
for (key = 0; key < num_keys; key++) {
|
for (key = 0; key < num_keys; key++) {
|
||||||
index = Keylist_Data_Add(list, key, &data1);
|
data_list[key] = 42 + key;
|
||||||
|
index = Keylist_Data_Add(list, key, &data_list[key]);
|
||||||
}
|
}
|
||||||
for (key = 0; key < num_keys; key++) {
|
for (key = 0; key < num_keys; key++) {
|
||||||
data = Keylist_Data(list, key);
|
data = Keylist_Data(list, key);
|
||||||
zassert_equal(*data, data1, NULL);
|
zassert_equal(*data, data_list[key], NULL);
|
||||||
}
|
}
|
||||||
for (index = 0; index < num_keys; index++) {
|
for (index = 0; index < num_keys; index++) {
|
||||||
data = Keylist_Data_Index(list, index);
|
data = Keylist_Data_Index(list, index);
|
||||||
zassert_equal(*data, data1, NULL);
|
status = Keylist_Index_Key(list, index, &key);
|
||||||
|
zassert_true(status, NULL);
|
||||||
|
zassert_equal(*data, data_list[key], NULL);
|
||||||
}
|
}
|
||||||
Keylist_Delete(list);
|
Keylist_Delete(list);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user