@ -385,6 +385,143 @@ AST_TEST_DEFINE(strsep_test)
return AST_TEST_PASS ;
}
AST_TEST_DEFINE ( strsep_quoted_test )
{
char * test1 , * test2 , * test3 ;
switch ( cmd ) {
case TEST_INIT :
info - > name = " strsep_quoted " ;
info - > category = " /main/strings/ " ;
info - > summary = " Test ast_strsep_quoted " ;
info - > description = " Test ast_strsep_quoted " ;
return AST_TEST_NOT_RUN ;
case TEST_EXECUTE :
break ;
}
test1 = ast_strdupa ( " ghi=jkl,mno= \" pqr,stu \" ,abc=def, vwx = yz1 , vwx = yz1 , "
" \" vwx = yz1 \" , \" vwx , yz1 \" ,v'w'x, \" 'x,v','x' \" , \" i \\ 'm a test \" "
" , \" i \\ 'm a, test \" , \" i \\ 'm a, test \" , e \\ ,nd, end \\ " ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' " ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " ghi=jkl " , test2 ) ) ;
test3 = ast_strsep_quoted ( & test2 , ' = ' , ' " ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " ghi " , test3 ) ) ;
test3 = ast_strsep_quoted ( & test2 , ' = ' , ' " ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " jkl " , test3 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' " ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " mno= \" pqr,stu \" " , test2 ) ) ;
test3 = ast_strsep_quoted ( & test2 , ' = ' , ' " ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " mno " , test3 ) ) ;
test3 = ast_strsep_quoted ( & test2 , ' = ' , ' " ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " \" pqr,stu \" " , test3 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' " ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " abc=def " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' " ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " vwx = yz1 " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' " ' , AST_STRSEP_TRIM ) ;
ast_test_validate ( test , 0 = = strcmp ( " vwx = yz1 " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' " ' , AST_STRSEP_STRIP ) ;
ast_test_validate ( test , 0 = = strcmp ( " vwx = yz1 " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' " ' , AST_STRSEP_STRIP | AST_STRSEP_TRIM ) ;
ast_test_validate ( test , 0 = = strcmp ( " vwx , yz1 " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' " ' , AST_STRSEP_STRIP | AST_STRSEP_TRIM ) ;
ast_test_validate ( test , 0 = = strcmp ( " v'w'x " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' " ' , AST_STRSEP_TRIM ) ;
ast_test_validate ( test , 0 = = strcmp ( " \" 'x,v','x' \" " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' " ' , AST_STRSEP_TRIM ) ;
ast_test_validate ( test , 0 = = strcmp ( " \" i \\ 'm a test \" " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' " ' , AST_STRSEP_TRIM | AST_STRSEP_UNESCAPE ) ;
ast_test_validate ( test , 0 = = strcmp ( " \" i'm a, test \" " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' " ' , AST_STRSEP_ALL ) ;
ast_test_validate ( test , 0 = = strcmp ( " i'm a, test " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' " ' , AST_STRSEP_TRIM | AST_STRSEP_UNESCAPE ) ;
ast_test_validate ( test , 0 = = strcmp ( " e,nd " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' " ' , AST_STRSEP_TRIM | AST_STRSEP_UNESCAPE ) ;
ast_test_validate ( test , 0 = = strcmp ( " end " , test2 ) ) ;
// Now use '|' as the quote character
test1 = ast_strdupa ( " ghi=jkl,mno=|pqr,stu|,abc=def, vwx = yz1 , vwx = yz1 , "
" | vwx = yz1 | , | vwx , yz1 |,v'w'x, |'x,v','x'| , | i \\ 'm a test| "
" , | i \\ 'm a, test|, | i \\ 'm a, test|, e \\ ,nd, end \\ " ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' | ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " ghi=jkl " , test2 ) ) ;
test3 = ast_strsep_quoted ( & test2 , ' = ' , ' | ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " ghi " , test3 ) ) ;
test3 = ast_strsep_quoted ( & test2 , ' = ' , ' | ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " jkl " , test3 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' | ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " mno=|pqr,stu| " , test2 ) ) ;
test3 = ast_strsep_quoted ( & test2 , ' = ' , ' | ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " mno " , test3 ) ) ;
test3 = ast_strsep_quoted ( & test2 , ' = ' , ' | ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " |pqr,stu| " , test3 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' | ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " abc=def " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' | ' , 0 ) ;
ast_test_validate ( test , 0 = = strcmp ( " vwx = yz1 " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' | ' , AST_STRSEP_TRIM ) ;
ast_test_validate ( test , 0 = = strcmp ( " vwx = yz1 " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' | ' , AST_STRSEP_STRIP ) ;
ast_test_validate ( test , 0 = = strcmp ( " vwx = yz1 " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' | ' , AST_STRSEP_STRIP | AST_STRSEP_TRIM ) ;
ast_test_validate ( test , 0 = = strcmp ( " vwx , yz1 " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' | ' , AST_STRSEP_STRIP | AST_STRSEP_TRIM ) ;
ast_test_validate ( test , 0 = = strcmp ( " v'w'x " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' | ' , AST_STRSEP_TRIM ) ;
ast_test_validate ( test , 0 = = strcmp ( " |'x,v','x'| " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' | ' , AST_STRSEP_TRIM ) ;
ast_test_validate ( test , 0 = = strcmp ( " | i \\ 'm a test| " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' | ' , AST_STRSEP_TRIM | AST_STRSEP_UNESCAPE ) ;
ast_test_validate ( test , 0 = = strcmp ( " | i'm a, test| " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' | ' , AST_STRSEP_ALL ) ;
ast_test_validate ( test , 0 = = strcmp ( " i'm a, test " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' | ' , AST_STRSEP_TRIM | AST_STRSEP_UNESCAPE ) ;
ast_test_validate ( test , 0 = = strcmp ( " e,nd " , test2 ) ) ;
test2 = ast_strsep_quoted ( & test1 , ' , ' , ' | ' , AST_STRSEP_TRIM | AST_STRSEP_UNESCAPE ) ;
ast_test_validate ( test , 0 = = strcmp ( " end " , test2 ) ) ;
// nothing failed; we're all good!
return AST_TEST_PASS ;
}
static int test_semi ( char * string1 , char * string2 , int test_len )
{
char * test2 = NULL ;
@ -740,6 +877,7 @@ static int unload_module(void)
AST_TEST_UNREGISTER ( begins_with_test ) ;
AST_TEST_UNREGISTER ( ends_with_test ) ;
AST_TEST_UNREGISTER ( strsep_test ) ;
AST_TEST_UNREGISTER ( strsep_quoted_test ) ;
AST_TEST_UNREGISTER ( escape_semicolons_test ) ;
AST_TEST_UNREGISTER ( escape_test ) ;
AST_TEST_UNREGISTER ( strings_match ) ;
@ -754,6 +892,7 @@ static int load_module(void)
AST_TEST_REGISTER ( begins_with_test ) ;
AST_TEST_REGISTER ( ends_with_test ) ;
AST_TEST_REGISTER ( strsep_test ) ;
AST_TEST_REGISTER ( strsep_quoted_test ) ;
AST_TEST_REGISTER ( escape_semicolons_test ) ;
AST_TEST_REGISTER ( escape_test ) ;
AST_TEST_REGISTER ( strings_match ) ;