- Internal data pointer is read only by default => any uses that require use of the pointer itself (freeing, mutating) must perform a cast. - refactor tests to use some new sv macros and functions, and clean them up. - slight cleanup of sv.c
46 lines
1.4 KiB
C
46 lines
1.4 KiB
C
/* test_sv.c: String View tests
|
|
* Created: 2026-02-05
|
|
* Author: Aryadev Chavali
|
|
* License: See end of file
|
|
* Commentary:
|
|
*/
|
|
|
|
#include <assert.h>
|
|
#include <malloc.h>
|
|
|
|
#include "./data.h"
|
|
#include "./test.h"
|
|
|
|
void sv_copy_test(void)
|
|
{
|
|
TEST_START();
|
|
static_assert(ARRSIZE(unique_words) > 3, "Expected at least 3 unique words");
|
|
for (u64 i = 0; i < 3; ++i)
|
|
{
|
|
sv_t word = SV((char *)unique_words[i], strlen(unique_words[i]));
|
|
sv_t copy = sv_copy(word);
|
|
TEST(word.data != copy.data, "%p != %p", word.data, copy.data);
|
|
TEST(word.size == copy.size, "%lu == %lu", word.size, copy.size);
|
|
TEST(strncmp(word.data, copy.data, copy.size) == 0, "`%s` == `%s`",
|
|
word.data, copy.data);
|
|
|
|
// NOTE: Okay to free since we own copy.
|
|
free((void *)copy.data);
|
|
}
|
|
}
|
|
|
|
MAKE_TEST_SUITE(SV_SUITE, "String View Tests", MAKE_TEST_FN(sv_copy_test), );
|
|
|
|
/* Copyright (C) 2026 Aryadev Chavali
|
|
|
|
* This program 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 General Public License Version 2 for
|
|
* details.
|
|
|
|
* You may distribute and modify this code under the terms of the GNU General
|
|
* Public License Version 2, which you should have received a copy of along with
|
|
* this program. If not, please go to <https://www.gnu.org/licenses/>.
|
|
|
|
*/
|