|
|
#include "sqliteInt.h" |
|
|
#include "unity.h" |
|
|
#include <stdlib.h> |
|
|
#include <string.h> |
|
|
|
|
|
|
|
|
void test_renameSetENames(ExprList *pEList, int val); |
|
|
|
|
|
|
|
|
void setUp(void) { |
|
|
|
|
|
} |
|
|
void tearDown(void) { |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
static ExprList *makeExprList(int nExpr, int initEName){ |
|
|
ExprList *p = (ExprList*)sqlite3_malloc(sizeof(*p)); |
|
|
TEST_ASSERT_NOT_NULL(p); |
|
|
memset(p, 0, sizeof(*p)); |
|
|
p->nExpr = nExpr; |
|
|
p->nAlloc = nExpr; |
|
|
if( nExpr>0 ){ |
|
|
p->a = (typeof(p->a))sqlite3_malloc(sizeof(p->a[0]) * (size_t)nExpr); |
|
|
TEST_ASSERT_NOT_NULL(p->a); |
|
|
memset(p->a, 0, sizeof(p->a[0]) * (size_t)nExpr); |
|
|
for(int i=0; i<nExpr; i++){ |
|
|
p->a[i].fg.eEName = (u8)initEName; |
|
|
} |
|
|
}else{ |
|
|
p->a = 0; |
|
|
} |
|
|
return p; |
|
|
} |
|
|
|
|
|
static void freeExprList(ExprList *p){ |
|
|
if( p ){ |
|
|
if( p->a ) sqlite3_free(p->a); |
|
|
sqlite3_free(p); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void test_renameSetENames_null_list(void){ |
|
|
|
|
|
test_renameSetENames(NULL, ENAME_NAME); |
|
|
} |
|
|
|
|
|
void test_renameSetENames_zero_length_list(void){ |
|
|
ExprList *p = makeExprList(0, ENAME_NAME); |
|
|
test_renameSetENames(p, ENAME_TAB); |
|
|
TEST_ASSERT_EQUAL_INT(0, p->nExpr); |
|
|
TEST_ASSERT_EQUAL_INT(0, p->nAlloc); |
|
|
TEST_ASSERT_NULL(p->a); |
|
|
freeExprList(p); |
|
|
} |
|
|
|
|
|
void test_renameSetENames_set_to_NAME_from_mixed_values(void){ |
|
|
|
|
|
ExprList *p = makeExprList(6, ENAME_TAB); |
|
|
|
|
|
if( p->nExpr >= 2 ){ |
|
|
p->a[1].fg.eEName = ENAME_SPAN; |
|
|
} |
|
|
if( p->nExpr >= 4 ){ |
|
|
p->a[3].fg.eEName = ENAME_NAME; |
|
|
} |
|
|
if( p->nExpr >= 6 ){ |
|
|
p->a[5].fg.eEName = ENAME_SPAN; |
|
|
} |
|
|
|
|
|
test_renameSetENames(p, ENAME_NAME); |
|
|
|
|
|
for(int i=0; i<p->nExpr; i++){ |
|
|
TEST_ASSERT_EQUAL_INT(ENAME_NAME & 0x3, p->a[i].fg.eEName); |
|
|
} |
|
|
freeExprList(p); |
|
|
} |
|
|
|
|
|
void test_renameSetENames_set_to_TAB_from_NAME(void){ |
|
|
|
|
|
ExprList *p = makeExprList(5, ENAME_NAME); |
|
|
|
|
|
test_renameSetENames(p, ENAME_TAB); |
|
|
|
|
|
for(int i=0; i<p->nExpr; i++){ |
|
|
TEST_ASSERT_EQUAL_INT(ENAME_TAB & 0x3, p->a[i].fg.eEName); |
|
|
} |
|
|
freeExprList(p); |
|
|
} |
|
|
|
|
|
void test_renameSetENames_set_to_SPAN_from_NAME(void){ |
|
|
ExprList *p = makeExprList(7, ENAME_NAME); |
|
|
|
|
|
test_renameSetENames(p, ENAME_SPAN); |
|
|
|
|
|
for(int i=0; i<p->nExpr; i++){ |
|
|
TEST_ASSERT_EQUAL_INT(ENAME_SPAN & 0x3, p->a[i].fg.eEName); |
|
|
} |
|
|
freeExprList(p); |
|
|
} |
|
|
|
|
|
int main(void){ |
|
|
UNITY_BEGIN(); |
|
|
RUN_TEST(test_renameSetENames_null_list); |
|
|
RUN_TEST(test_renameSetENames_zero_length_list); |
|
|
RUN_TEST(test_renameSetENames_set_to_NAME_from_mixed_values); |
|
|
RUN_TEST(test_renameSetENames_set_to_TAB_from_NAME); |
|
|
RUN_TEST(test_renameSetENames_set_to_SPAN_from_NAME); |
|
|
return UNITY_END(); |
|
|
} |