test/test_allocator.cpp

changeset 511
a32e6a6b1ca7
parent 443
d6d8712e15bc
child 513
b66532b5d8db
equal deleted inserted replaced
510:133ac0f8f3fc 511:a32e6a6b1ca7
1 /*
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3 *
4 * Copyright 2021 Mike Becker, Olaf Wintermann All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 #include "cx/allocator.h"
30 #include <gtest/gtest.h>
31
32 #define SUITE_NAME Allocator
33
34 TEST(SUITE_NAME, DefaultAllocator) {
35 cx_allocator_class *clazz = cxDefaultAllocator->cl;
36 ASSERT_NE(clazz, nullptr);
37 }
38
39 TEST(SUITE_NAME, DefaultMalloc) {
40 void *test = cxMalloc(cxDefaultAllocator, 16);
41 ASSERT_NE(test, nullptr);
42 free(test);
43 }
44
45 TEST(SUITE_NAME, DefaultRealloc) {
46 void *test = calloc(8, 1);
47 memcpy(test, "Test", 5);
48 test = cxRealloc(cxDefaultAllocator, test, 16);
49 ASSERT_NE(test, nullptr);
50 EXPECT_STREQ(reinterpret_cast<char *>(test), "Test");
51 free(test);
52 }
53
54 TEST(SUITE_NAME, Reallocate) {
55 void *test = calloc(8, 1);
56 memcpy(test, "Test", 5);
57 int ret = cxReallocate(cxDefaultAllocator, &test, 16);
58 EXPECT_EQ(ret, 0);
59 ASSERT_NE(test, nullptr);
60 EXPECT_STREQ(reinterpret_cast<char *>(test), "Test");
61 free(test);
62 }
63
64 TEST(SUITE_NAME, DefaultCalloc) {
65 char *test = reinterpret_cast<char *>(cxCalloc(cxDefaultAllocator, 8, 2));
66 ASSERT_NE(test, nullptr);
67 for (int i = 0; i < 16; i++) ASSERT_EQ(test[i], 0);
68 free(test);
69 }
70
71 TEST(SUITE_NAME, DefaultFree) {
72 void *test = malloc(16);
73 EXPECT_NO_FATAL_FAILURE(
74 cxFree(cxDefaultAllocator, test);
75 );
76 }

mercurial