Adding gtest framework.
[awesomized/libmemcached] / unittests / strings.cc
1 /* libMemcached
2 * Copyright (C) 2010 Brian Aker
3 * All rights reserved.
4 *
5 * Use and distribution licensed under the BSD license. See
6 * the COPYING file in the parent directory for full text.
7 */
8
9 #include "config.h"
10
11 #include <gtest/gtest.h>
12
13 #include <libmemcached/common.h>
14
15 TEST(memcached_string_st, memcached_create_static)
16 {
17 memcached_string_st string;
18 memcached_string_st *string_ptr;
19
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);
24
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);
29
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));
34
35 memcached_free(memc);
36 }
37
38 TEST(memcached_string_st, memcached_create_null)
39 {
40 memcached_string_st *string;
41 memcached_st *memc= memcached_create(NULL);
42
43 string= memcached_string_create(memc, NULL, 0);
44 ASSERT_TRUE(string);
45 ASSERT_TRUE(memcached_is_allocated(string));
46 ASSERT_TRUE(memcached_is_initialized(string));
47 memcached_string_free(string);
48
49 memcached_free(memc);
50 }
51
52 TEST(memcached_string_st, string_alloc_with_size)
53 {
54 memcached_string_st *string;
55 memcached_st *memc= memcached_create(NULL);
56
57 string= memcached_string_create(memc, NULL, 1024);
58 ASSERT_TRUE(string);
59 ASSERT_TRUE(memcached_is_allocated(string));
60 ASSERT_TRUE(memcached_is_initialized(string));
61 memcached_string_free(string);
62
63 memcached_free(memc);
64 }
65
66 TEST(memcached_string_st, string_alloc_with_size_toobig)
67 {
68 memcached_st *memc= memcached_create(NULL);
69 memcached_string_st *string;
70
71 string= memcached_string_create(memc, NULL, SIZE_MAX);
72 ASSERT_FALSE(string);
73
74 memcached_free(memc);
75 }
76
77 TEST(memcached_string_st, string_alloc_append)
78 {
79 char buffer[SMALL_STRING_LEN];
80 memcached_string_st *string;
81
82 memcached_st *memc= memcached_create(NULL);
83
84 /* Ring the bell! */
85 memset(buffer, 6, SMALL_STRING_LEN);
86
87 string= memcached_string_create(memc, NULL, 100);
88 ASSERT_TRUE(string);
89 ASSERT_TRUE(memcached_is_allocated(string));
90 ASSERT_TRUE(memcached_is_initialized(string));
91
92 for (uint32_t x= 0; x < 1024; x++)
93 {
94 memcached_return_t rc;
95 rc= memcached_string_append(string, buffer, SMALL_STRING_LEN);
96 EXPECT_EQ(rc, MEMCACHED_SUCCESS);
97 }
98 ASSERT_TRUE(memcached_is_allocated(string));
99 memcached_string_free(string);
100
101 memcached_free(memc);
102 }
103
104 TEST(memcached_string_st, string_alloc_append_toobig)
105 {
106 memcached_return_t rc;
107 char buffer[SMALL_STRING_LEN];
108 memcached_string_st *string;
109
110 memcached_st *memc= memcached_create(NULL);
111
112 /* Ring the bell! */
113 memset(buffer, 6, SMALL_STRING_LEN);
114
115 string= memcached_string_create(memc, NULL, 100);
116 ASSERT_TRUE(string);
117 ASSERT_TRUE(memcached_is_allocated(string));
118 ASSERT_TRUE(memcached_is_initialized(string));
119
120 for (uint32_t x= 0; x < 1024; x++)
121 {
122 rc= memcached_string_append(string, buffer, SMALL_STRING_LEN);
123 EXPECT_EQ(rc, MEMCACHED_SUCCESS);
124 }
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);
129
130 memcached_free(memc);
131 }