mirror of
https://github.com/emqx/neuron.git
synced 2026-10-18 21:50:42 +08:00
Add operation function of NEU_DTYPE_ERRORCODE type
- Add test case
This commit is contained in:
@@ -251,6 +251,7 @@ void neu_dvalue_init_int_val(neu_data_val_t *val, neu_int_val_t int_val);
|
||||
void neu_dvalue_init_string_val(neu_data_val_t * val,
|
||||
neu_string_val_t string_val);
|
||||
void neu_dvalue_init_data_val(neu_data_val_t *val, void *data);
|
||||
void neu_dvalue_init_errorcode_val(neu_data_val_t *val, int32_t i32);
|
||||
|
||||
/* The parameter cstr/bytes/array/vec is copy to neu_data_val_t
|
||||
*/
|
||||
@@ -295,6 +296,7 @@ int neu_dvalue_set_float(neu_data_val_t *val, float f32);
|
||||
int neu_dvalue_set_double(neu_data_val_t *val, double f64);
|
||||
int neu_dvalue_set_int_val(neu_data_val_t *val, neu_int_val_t int_val);
|
||||
int neu_dvalue_set_string_val(neu_data_val_t *val, neu_string_val_t string_val);
|
||||
int neu_dvalue_set_errorcode(neu_data_val_t *val, int32_t i32);
|
||||
|
||||
/* The parameter cstr/bytes/array/vec is copy to neu_data_val_t
|
||||
*/
|
||||
@@ -340,6 +342,7 @@ int neu_dvalue_get_int_val(neu_data_val_t *val, neu_int_val_t *p_int_val);
|
||||
int neu_dvalue_get_string_val(neu_data_val_t * val,
|
||||
neu_string_val_t *p_string_val);
|
||||
int neu_dvalue_get_data_val(neu_data_val_t *val, void **p_data);
|
||||
int neu_dvalue_get_errorcode(neu_data_val_t *val, int32_t *p_i32);
|
||||
|
||||
/* The parameter cstr/bytes/array/vec is copy from neu_data_val_t
|
||||
*/
|
||||
|
||||
@@ -362,6 +362,12 @@ void neu_dvalue_init_data_val(neu_data_val_t *val, void *data)
|
||||
val->val_data = data;
|
||||
}
|
||||
|
||||
void neu_dvalue_init_errorcode_val(neu_data_val_t *val, int32_t i32)
|
||||
{
|
||||
val->type = NEU_DTYPE_ERRORCODE;
|
||||
val->val_int32 = i32;
|
||||
}
|
||||
|
||||
void neu_dvalue_init_copy_cstr(neu_data_val_t *val, char *cstr)
|
||||
{
|
||||
val->type = NEU_DTYPE_CSTR | NEU_DTYPE_PTR | NEU_DTYPE_EXTERN_PTR;
|
||||
@@ -685,6 +691,17 @@ int neu_dvalue_set_string_val(neu_data_val_t *val, neu_string_val_t string_val)
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_set_errorcode(neu_data_val_t *val, int32_t i32)
|
||||
{
|
||||
assert(val->type == NEU_DTYPE_ERRORCODE);
|
||||
if (val->type == NEU_DTYPE_ERRORCODE) {
|
||||
val->val_int32 = i32;
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_set_cstr(neu_data_val_t *val, char *cstr)
|
||||
{
|
||||
neu_dtype_e type;
|
||||
@@ -1178,6 +1195,17 @@ int neu_dvalue_get_data_val(neu_data_val_t *val, void **p_data)
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_get_errorcode(neu_data_val_t *val, int32_t *p_i32)
|
||||
{
|
||||
assert(val->type == NEU_DTYPE_ERRORCODE);
|
||||
if (val->type == NEU_DTYPE_ERRORCODE) {
|
||||
*p_i32 = val->val_int32;
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_get_cstr(neu_data_val_t *val, char **p_cstr)
|
||||
{
|
||||
neu_dtype_e val_type;
|
||||
|
||||
@@ -141,6 +141,30 @@ TEST(DataValueTest, neu_dvalue_init_set_get_prim_val)
|
||||
EXPECT_EQ(0, neu_dvalue_get_double(val, &ret_double));
|
||||
EXPECT_EQ(100010111010.010604, ret_double);
|
||||
neu_dvalue_free(val);
|
||||
|
||||
/** test errorcode **/
|
||||
int32_t ret_error = 0;
|
||||
val = neu_dvalue_new(NEU_DTYPE_ERRORCODE);
|
||||
neu_dvalue_init_errorcode_val(val, -1);
|
||||
EXPECT_EQ(0, neu_dvalue_get_errorcode(val, &ret_error));
|
||||
EXPECT_EQ(NEU_DTYPE_ERRORCODE, neu_dvalue_get_type(val));
|
||||
EXPECT_EQ(-1, ret_error);
|
||||
|
||||
EXPECT_EQ(0, neu_dvalue_set_errorcode(val, 0));
|
||||
EXPECT_EQ(0, neu_dvalue_get_errorcode(val, &ret_error));
|
||||
EXPECT_EQ(0, ret_error);
|
||||
|
||||
EXPECT_EQ(0, neu_dvalue_set_errorcode(val, 1));
|
||||
EXPECT_EQ(0, neu_dvalue_get_errorcode(val, &ret_error));
|
||||
EXPECT_EQ(1, ret_error);
|
||||
neu_dvalue_free(val);
|
||||
|
||||
val = neu_dvalue_new(NEU_DTYPE_ERRORCODE);
|
||||
EXPECT_EQ(NEU_DTYPE_ERRORCODE, neu_dvalue_get_type(val));
|
||||
EXPECT_EQ(0, neu_dvalue_set_errorcode(val, 2));
|
||||
EXPECT_EQ(0, neu_dvalue_get_errorcode(val, &ret_error));
|
||||
EXPECT_EQ(2, ret_error);
|
||||
neu_dvalue_free(val);
|
||||
}
|
||||
|
||||
#define INT_VAL_TEST_STR "hello int-val"
|
||||
|
||||
Reference in New Issue
Block a user