⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 su_alloc_test.c

📁 Internet Phone, Chat, Conferencing
💻 C
📖 第 1 页 / 共 2 页
字号:
  TEST_S((s = su_strlst_join(l, home, "")), "abcdefghij");    TEST_S(su_strlst_append(l, "a"), "a");  TEST_S(su_strlst_append(l, "b"), "b");  TEST_S(su_strlst_append(l, "c"), "c");  TEST_S(su_strlst_append(l, "d"), "d");  TEST_S(su_strlst_append(l, "e"), "e");  TEST_S(su_strlst_append(l, "f"), "f");  TEST_S(su_strlst_append(l, "g"), "g");  TEST_S(su_strlst_append(l, "h"), "h");  TEST_S(su_strlst_append(l, "i"), "i");  TEST_S(su_strlst_append(l, "j"), "j");  TEST_S((s = su_strlst_join(l, home, "")), "abcdefghijabcdefghij");    su_home_get_stats(su_strlst_home(l), 0, kids + 1, (sizeof kids[1]));  su_home_stat_add(kids, kids + 1);  su_strlst_destroy(l);  su_home_get_stats(home, 1, parent, (sizeof parent));      su_home_check(home);  su_home_deinit(home);  su_home_init(home);  {    char s[] = "foo\nfaa\n";    TEST_1((l = su_strlst_split(home, s, "\n")));    TEST(su_strlst_len(l), 3);    TEST_1(su_strlst_append(l, "bar"));    TEST_S(su_strlst_join(l, home, "\n"), "foo\nfaa\n\nbar");  }  {    char s[] = "foo";    TEST_1((l = su_strlst_split(home, s, "\n")));    TEST(su_strlst_len(l), 1);  }  {    char s[] = "\n\n";    TEST_1((l = su_strlst_split(home, s, "\n")));    TEST(su_strlst_len(l), 3);  }  {    char s[] = "";    TEST_1((l = su_strlst_split(home, s, "\n")));    TEST(su_strlst_len(l), 1);  }    {    int i;#define S \      "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\n" \      "n\no\np\nq\nr\ns\nt\nu\nv\nw\nx\ny\nz\n" \      "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nL\nM\n" \      "N\nO\nP\nQ\nR\nS\nT\nU\nV\nW\nX\nY\nZ\n"    char s[] = S;    TEST_1((l = su_strlst_split(home, s, "\n")));    TEST(su_strlst_len(l), 53);    TEST_1(su_strlst_append(l, "bar"));    TEST_S(su_strlst_join(l, home, "\n"), S "\nbar");    TEST_1(!su_strlst_remove(l, 54));    for (i = 0; i < 54; i++) {      TEST_1(su_strlst_remove(l, 0));      TEST_1(!su_strlst_remove(l, 53 - i));      TEST(su_strlst_len(l), 53 - i);    }    TEST_1(!su_strlst_remove(l, 0));    TEST(su_strlst_len(l), 0);  }  su_home_deinit(home);  END();}#include <sofia-sip/su_vector.h>typedef struct test_data_s {  su_home_t test_home[1];  int data;} test_data_t;static void test_vector_free(void *data){  su_home_zap((su_home_t *) data);}static int test_vectors(void){  su_home_t home[1] = { SU_HOME_INIT(home) };  su_vector_t *v, *w;  test_data_t *data1, *data2, *data3, *data4;  char foo[] = "foo";  char bar[] = "bar";  char baz[] = "baz";  void **a;  int i;  BEGIN();  TEST_1(v = su_vector_create(home, NULL));  TEST_1(su_vector_is_empty(v));  TEST(su_vector_append(v, foo), 0);  TEST(su_vector_append(v, bar), 0);  TEST(su_vector_insert(v, 0, baz), 0);  TEST(su_vector_item(v, 0), baz);  TEST(su_vector_item(v, 1), foo);  TEST(su_vector_item(v, 2), bar);  TEST(su_vector_item(v, 3), NULL);  TEST(su_vector_item(v, (unsigned)-1), NULL);  TEST_1(!su_vector_is_empty(v));      su_vector_destroy(v);  TEST_1(v = su_vector_create(home, NULL));  TEST(su_vector_insert(v, 0, "j"), 0);  TEST(su_vector_insert(v, 0, "i"), 0);  TEST(su_vector_insert(v, 0, "h"), 0);  TEST(su_vector_insert(v, 0, "g"), 0);  TEST(su_vector_insert(v, 0, "f"), 0);  TEST(su_vector_insert(v, 0, "e"), 0);  TEST(su_vector_insert(v, 0, "d"), 0);  TEST(su_vector_insert(v, 0, "c"), 0);  TEST(su_vector_insert(v, 0, "b"), 0);  TEST(su_vector_insert(v, 0, "a"), 0);  TEST(su_vector_len(v), 10);  TEST_1(a = su_vector_get_array(v));  for (i = 0; i < 10; i++) {    TEST_S(su_vector_item(v, i), a[i]);  }  TEST(su_vector_item(v, 10), NULL);  TEST(a[10], NULL);  TEST_1(w = su_vector_create(home, NULL));  TEST(su_vector_append(w, "a"), 0);  TEST(su_vector_append(w, "b"), 0);  TEST(su_vector_append(w, "c"), 0);  TEST(su_vector_append(w, "d"), 0);  TEST(su_vector_append(w, "e"), 0);  TEST(su_vector_append(w, "f"), 0);  TEST(su_vector_append(w, "g"), 0);  TEST(su_vector_append(w, "h"), 0);  TEST(su_vector_append(w, "i"), 0);  TEST(su_vector_append(w, "j"), 0);  TEST(su_vector_len(w), 10);  for (i = 0; i < 10; i++) {    TEST_S(su_vector_item(v, i), a[i]);  }  su_vector_empty(w);  TEST_1(su_vector_is_empty(w));  su_vector_destroy(v);  su_vector_destroy(w);      TEST_1(v = su_vector_create(home, test_vector_free));  data1 = su_home_clone(home, sizeof(test_data_t));  data1->data = 1;  data2 = su_home_clone(home, sizeof(test_data_t));  data2->data = 2;  data3 = su_home_clone(home, sizeof(test_data_t));  data3->data = 3;  data4 = su_home_clone(home, sizeof(test_data_t));  data4->data = 4;  TEST(su_vector_append(v, data1), 0);  TEST(su_vector_append(v, data2), 0);  TEST(su_vector_append(v, data3), 0);  TEST(su_vector_append(v, data4), 0);    TEST(su_vector_len(v), 4);  TEST(su_vector_item(v, 0), data1);  TEST(su_vector_item(v, 1), data2);  TEST(su_vector_item(v, 2), data3);  TEST(su_vector_item(v, 3), data4);  TEST(data1->data, 1);  TEST(data2->data, 2);  TEST(data3->data, 3);  TEST(data4->data, 4);  TEST(su_vector_remove(v, 2), 0);  TEST(su_vector_len(v), 3);  TEST(su_vector_item(v, 0), data1);  TEST(su_vector_item(v, 1), data2);  TEST(su_vector_item(v, 2), data4);  TEST(data1->data, 1);  TEST(data2->data, 2);  TEST(data4->data, 4);  su_vector_destroy(v);  su_home_check(home);  su_home_deinit(home);  END();}#define ALIGNMENT (8)#define ALIGN(n)  (((n) + (ALIGNMENT - 1)) & ~(ALIGNMENT - 1))static int test_auto(void){  BEGIN();  int i;  su_home_t tmphome[SU_HOME_AUTO_SIZE(8000)];  char *b = NULL;  su_home_stat_t hs[1];  TEST_1(!su_home_auto(tmphome, sizeof tmphome[0]));  TEST_1(su_home_auto(tmphome, sizeof tmphome));    for (i = 0; i < 8192; i++)    TEST_1(su_alloc(tmphome, 12));  TEST_VOID(su_home_deinit(tmphome));  TEST_1(su_home_auto(tmphome, sizeof tmphome));   su_home_init_stats(tmphome);  for (i = 1; i < 8192; i++) {    TEST_1(b = su_realloc(tmphome, b, i));    b[i - 1] = (char)0xaa;     if ((i % 32) == 0)      TEST_1(b = su_realloc(tmphome, b, 1));  }  su_home_get_stats(tmphome, 0, hs, sizeof *hs);  TEST(hs->hs_allocs.hsa_preload + hs->hs_allocs.hsa_number, 8191 + 8191 / 32);  TEST(hs->hs_frees.hsf_preload + hs->hs_frees.hsf_number, 8191 + 8191 / 32 - 1);  /*    This test depends on macro SU_HOME_AUTO_SIZE() calculating    offsetof(su_block_t, sub_nodes[7]) correctly with    ((3 * sizeof (void *) + 4 * sizeof(unsigned) +        7 * (sizeof (long) + sizeof(void *)) + 7)  */  TEST_1(hs->hs_frees.hsf_preload == hs->hs_allocs.hsa_preload);  su_free(tmphome, b);  for (i = 1; i < 8192; i++)    TEST_1(b = su_alloc(tmphome, 1));  TEST_VOID(su_home_deinit(tmphome));    END();}void usage(void){  fprintf(stderr, "usage: %s [-v]\n", name);}int main(int argc, char *argv[]){  int retval = 0;  int i;  for (i = 1; argv[i]; i++) {    if (strcmp(argv[i], "-v") == 0)      tstflags |= tst_verbatim;    else      usage();  }    retval |= test_alloc();  retval |= test_strdupcat();  retval |= test_sprintf("%s.%s", "foo", "bar");  retval |= test_strlst();  retval |= test_vectors();  retval |= test_auto();  return retval;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -