mirror of https://github.com/FFmpeg/FFmpeg.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
4.7 KiB
129 lines
4.7 KiB
/* |
|
* This file is part of FFmpeg. |
|
* |
|
* FFmpeg is free software; you can redistribute it and/or |
|
* modify it under the terms of the GNU Lesser General Public |
|
* License as published by the Free Software Foundation; either |
|
* version 2.1 of the License, or (at your option) any later version. |
|
* |
|
* FFmpeg is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
* Lesser General Public License for more details. |
|
* |
|
* You should have received a copy of the GNU Lesser General Public |
|
* License along with FFmpeg; if not, write to the Free Software |
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
*/ |
|
|
|
#include <stdio.h> |
|
|
|
#include "libavutil/common.h" |
|
#include "libavutil/mem.h" |
|
#include "libavutil/avstring.h" |
|
|
|
int main(void) |
|
{ |
|
int i; |
|
char *fullpath, *ptr; |
|
static const char * const strings[] = { |
|
"''", |
|
"", |
|
":", |
|
"\\", |
|
"'", |
|
" '' :", |
|
" '' '' :", |
|
"foo '' :", |
|
"'foo'", |
|
"foo ", |
|
" ' foo ' ", |
|
"foo\\", |
|
"foo': blah:blah", |
|
"foo\\: blah:blah", |
|
"foo\'", |
|
"'foo : ' :blahblah", |
|
"\\ :blah", |
|
" foo", |
|
" foo ", |
|
" foo \\ ", |
|
"foo ':blah", |
|
" foo bar : blahblah", |
|
"\\f\\o\\o", |
|
"'foo : \\ \\ ' : blahblah", |
|
"'\\fo\\o:': blahblah", |
|
"\\'fo\\o\\:': foo ' :blahblah" |
|
}; |
|
const char *haystack = "Education consists mainly in what we have unlearned."; |
|
const char * const needle[] = {"learned.", "unlearned.", "Unlearned"}; |
|
|
|
printf("Testing av_get_token()\n"); |
|
for (i = 0; i < FF_ARRAY_ELEMS(strings); i++) { |
|
const char *p = strings[i]; |
|
char *q; |
|
printf("|%s|", p); |
|
q = av_get_token(&p, ":"); |
|
printf(" -> |%s|", q); |
|
printf(" + |%s|\n", p); |
|
av_free(q); |
|
} |
|
|
|
printf("Testing av_append_path_component()\n"); |
|
#define TEST_APPEND_PATH_COMPONENT(path, component, expected) \ |
|
fullpath = av_append_path_component((path), (component)); \ |
|
printf("%s = %s\n", fullpath ? fullpath : "(null)", expected); \ |
|
av_free(fullpath); |
|
TEST_APPEND_PATH_COMPONENT(NULL, NULL, "(null)") |
|
TEST_APPEND_PATH_COMPONENT("path", NULL, "path"); |
|
TEST_APPEND_PATH_COMPONENT(NULL, "comp", "comp"); |
|
TEST_APPEND_PATH_COMPONENT("path", "comp", "path/comp"); |
|
TEST_APPEND_PATH_COMPONENT("path/", "comp", "path/comp"); |
|
TEST_APPEND_PATH_COMPONENT("path", "/comp", "path/comp"); |
|
TEST_APPEND_PATH_COMPONENT("path/", "/comp", "path/comp"); |
|
TEST_APPEND_PATH_COMPONENT("path/path2/", "/comp/comp2", "path/path2/comp/comp2"); |
|
|
|
/*Testing av_strnstr()*/ |
|
#define TEST_STRNSTR(haystack, needle, hay_length, expected) \ |
|
ptr = av_strnstr(haystack, needle, hay_length); \ |
|
if (ptr != expected){ \ |
|
printf("expected: %p, received %p\n", expected, ptr); \ |
|
} |
|
TEST_STRNSTR(haystack, needle [0], strlen(haystack), haystack+44); |
|
TEST_STRNSTR(haystack, needle [1], strlen(haystack), haystack+42); |
|
TEST_STRNSTR(haystack, needle [2], strlen(haystack), NULL ); |
|
TEST_STRNSTR(haystack, strings[1], strlen(haystack), haystack ); |
|
|
|
/*Testing av_strireplace()*/ |
|
#define TEST_STRIREPLACE(haystack, needle, expected) \ |
|
ptr = av_strireplace(haystack, needle, "instead"); \ |
|
if (ptr == NULL) { \ |
|
printf("error, received null pointer!\n"); \ |
|
} else { \ |
|
if (strcmp(ptr, expected) != 0) \ |
|
printf( "expected: %s, received: %s\n", expected, ptr); \ |
|
av_free(ptr); \ |
|
} |
|
|
|
TEST_STRIREPLACE(haystack, needle [0], "Education consists mainly in what we have uninstead"); |
|
TEST_STRIREPLACE(haystack, needle [1], "Education consists mainly in what we have instead"); |
|
TEST_STRIREPLACE(haystack, needle [2], "Education consists mainly in what we have instead."); |
|
TEST_STRIREPLACE(haystack, needle [1], "Education consists mainly in what we have instead"); |
|
|
|
#if FF_API_D2STR |
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
/*Testing av_d2str()*/ |
|
#define TEST_D2STR(value, expected) \ |
|
if((ptr = av_d2str(value)) == NULL){ \ |
|
printf("error, received null pointer!\n"); \ |
|
} else { \ |
|
if(strcmp(ptr, expected) != 0) \ |
|
printf( "expected: %s, received: %s\n", expected, ptr); \ |
|
av_free(ptr); \ |
|
} |
|
TEST_D2STR(0 , "0.000000"); |
|
TEST_D2STR(-1.2333234, "-1.233323"); |
|
TEST_D2STR(-1.2333237, "-1.233324"); |
|
FF_ENABLE_DEPRECATION_WARNINGS |
|
#endif |
|
return 0; |
|
}
|
|
|