2 * Copyright (C) 2010 Brian Aker
5 * Use and distribution licensed under the BSD license. See
6 * the COPYING file in the parent directory for full text.
11 #include <gtest/gtest.h>
13 #include <libmemcached/common.h>
15 TEST(memcached_string_st
, memcached_create_static
)
17 memcached_string_st string
;
18 memcached_string_st
*string_ptr
;
20 memcached_st
*memc
= memcached_create(NULL
);
21 string_ptr
= memcached_string_create(memc
, &string
, 0);
22 ASSERT_TRUE(string
.options
.is_initialized
);
23 ASSERT_TRUE(string_ptr
);
25 /* The following two better be the same! */
26 ASSERT_FALSE(memcached_is_allocated(string_ptr
));
27 ASSERT_FALSE(memcached_is_allocated(&string
));
28 EXPECT_EQ(&string
, string_ptr
);
30 ASSERT_TRUE(string
.options
.is_initialized
);
31 ASSERT_TRUE(memcached_is_initialized(&string
));
32 memcached_string_free(&string
);
33 ASSERT_FALSE(memcached_is_initialized(&string
));
38 TEST(memcached_string_st
, memcached_create_null
)
40 memcached_string_st
*string
;
41 memcached_st
*memc
= memcached_create(NULL
);
43 string
= memcached_string_create(memc
, NULL
, 0);
45 ASSERT_TRUE(memcached_is_allocated(string
));
46 ASSERT_TRUE(memcached_is_initialized(string
));
47 memcached_string_free(string
);
52 TEST(memcached_string_st
, string_alloc_with_size
)
54 memcached_string_st
*string
;
55 memcached_st
*memc
= memcached_create(NULL
);
57 string
= memcached_string_create(memc
, NULL
, 1024);
59 ASSERT_TRUE(memcached_is_allocated(string
));
60 ASSERT_TRUE(memcached_is_initialized(string
));
61 memcached_string_free(string
);
66 TEST(memcached_string_st
, string_alloc_with_size_toobig
)
68 memcached_st
*memc
= memcached_create(NULL
);
69 memcached_string_st
*string
;
71 string
= memcached_string_create(memc
, NULL
, SIZE_MAX
);
77 TEST(memcached_string_st
, string_alloc_append
)
79 char buffer
[SMALL_STRING_LEN
];
80 memcached_string_st
*string
;
82 memcached_st
*memc
= memcached_create(NULL
);
85 memset(buffer
, 6, SMALL_STRING_LEN
);
87 string
= memcached_string_create(memc
, NULL
, 100);
89 ASSERT_TRUE(memcached_is_allocated(string
));
90 ASSERT_TRUE(memcached_is_initialized(string
));
92 for (uint32_t x
= 0; x
< 1024; x
++)
94 memcached_return_t rc
;
95 rc
= memcached_string_append(string
, buffer
, SMALL_STRING_LEN
);
96 EXPECT_EQ(rc
, MEMCACHED_SUCCESS
);
98 ASSERT_TRUE(memcached_is_allocated(string
));
99 memcached_string_free(string
);
101 memcached_free(memc
);
104 TEST(memcached_string_st
, string_alloc_append_toobig
)
106 memcached_return_t rc
;
107 char buffer
[SMALL_STRING_LEN
];
108 memcached_string_st
*string
;
110 memcached_st
*memc
= memcached_create(NULL
);
113 memset(buffer
, 6, SMALL_STRING_LEN
);
115 string
= memcached_string_create(memc
, NULL
, 100);
117 ASSERT_TRUE(memcached_is_allocated(string
));
118 ASSERT_TRUE(memcached_is_initialized(string
));
120 for (uint32_t x
= 0; x
< 1024; x
++)
122 rc
= memcached_string_append(string
, buffer
, SMALL_STRING_LEN
);
123 EXPECT_EQ(rc
, MEMCACHED_SUCCESS
);
125 rc
= memcached_string_append(string
, buffer
, SIZE_MAX
);
126 EXPECT_EQ(rc
, MEMCACHED_MEMORY_ALLOCATION_FAILURE
);
127 ASSERT_TRUE(memcached_is_allocated(string
));
128 memcached_string_free(string
);
130 memcached_free(memc
);