Compare commits

...

11 Commits

Author SHA1 Message Date
Nils O. Selåsdal 309787bc48 Merge branch 'cmake' 2025-10-04 21:41:41 +02:00
Nils O. Selåsdal 82e2337ecc Substitube build_type 2025-10-04 21:35:39 +02:00
Nils O. Selåsdal b2d56f8094 Macro safe slot_allocator.h 2025-07-21 20:30:33 +02:00
Nils O. Selåsdal 251246924d Add slot allocator 2025-07-21 19:57:26 +02:00
Nils O. Selåsdal 7408c48dff Add uc_bv_find_first_zero 2025-07-20 21:44:36 +02:00
Nils O. Selåsdal 5b5ca445e9 Nuke warnings in tests 2025-07-18 22:45:08 +02:00
Nils O. Selåsdal cfe647f85d Project setups 2025-07-18 22:00:03 +02:00
Nils O. Selåsdal abf430dabb Align osx&linux build 2025-07-17 14:04:14 +02:00
Nils O. Selåsdal 2bd91ae751 link with threads 2025-07-16 20:02:25 +02:00
Nils O. Selåsdal 2278080b69 Update tests for cmake 2025-07-16 19:51:06 +02:00
Nils O. Selåsdal 393106ea4e fix test/salloc_align.c 2025-07-05 22:50:18 +02:00
24 changed files with 548 additions and 263 deletions
+3
View File
@@ -8,3 +8,6 @@ log_subdir/
coverage/ coverage/
install/ install/
libucore-* libucore-*
src/version.c
.cache/
compile_commands.json
+15
View File
@@ -0,0 +1,15 @@
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${default}",
"${workspaceFolder}/include"
],
"defines": [],
"compilerPath": "/usr/bin/clang",
"intelliSenseMode": "macos-clang-arm64"
}
],
"version": 4
}
+11
View File
@@ -0,0 +1,11 @@
{
"files.associations": {
"*.h": "c",
},
"C_Cpp.default.includePath": [
"/opt/homebrew/include/",
"$(workspaceFolder)/include/",
],
"C_Cpp.default.cStandard": "gnu99"
}
+19
View File
@@ -0,0 +1,19 @@
{
"version": "2.0.0",
"tasks": [
{
"type": "cmake",
"label": "CMake: build",
"command": "build",
"targets": [
"all"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [],
"detail": "CMake template build task"
}
]
}
+17 -8
View File
@@ -1,9 +1,8 @@
cmake_minimum_required(VERSION 4.0.0) cmake_minimum_required(VERSION 3.12)
project(libucore C) project(libucore C)
execute_process(COMMAND git -C ${CMAKE_SOURCE_DIR} describe --abbrev=5 --dirty --always OUTPUT_VARIABLE version_revision WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND git -C ${CMAKE_SOURCE_DIR} describe --abbrev=5 --dirty --always OUTPUT_VARIABLE version_revision WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND hostname OUTPUT_VARIABLE build_host OUTPUT_STRIP_TRAILING_WHITESPACE) cmake_host_system_information(RESULT build_host QUERY HOSTNAME)
set(libucore_VERSION_MAJOR 1) set(libucore_VERSION_MAJOR 1)
set(libucore_VERSION_MINOR 0) set(libucore_VERSION_MINOR 0)
set(libucore_VERSION_PATCH 0) set(libucore_VERSION_PATCH 0)
@@ -11,23 +10,33 @@ set(libucore_VERSION ${libucore_VERSION_MAJOR}.${libucore_VERSION_MINOR}.${libuc
set(CMAKE_VERBOSE_MAKEFILE ON) set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD 11)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wundef -Wcast-qual -Wshadow -Wcast-align -pipe -Wno-unused-parameter -Werror=implicit-function-declaration -Winit-self -pthread") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wundef -Wcast-qual -Wshadow -Wcast-align -pipe -Wno-unused-parameter -Werror=implicit-function-declaration -Winit-self")
add_definitions(-D_FILE_OFFSET_BITS=64) add_definitions(-D_FILE_OFFSET_BITS=64)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -O2 -pthread") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -O2")
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
option(CODE_COVERAGE "build with code coverage intrumentation" OFF) option(CODE_COVERAGE "build with code coverage intrumentation" OFF)
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build." FORCE)
# Set the property for multi-config generators as well, if applicable
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release RelWithDebInfo MinSizeRel)
endif()
set(build_type ${CMAKE_BUILD_TYPE})
if (CODE_COVERAGE) if (CODE_COVERAGE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage")
add_definitions(-DCOVERAGE) add_definitions(-DCOVERAGE)
set(build_type "${build_type}-coverage")
endif() endif()
option(BUILD_SANITIZE "build with address sanitizer" OFF) option(BUILD_SANITIZE "build with address sanitizer" OFF)
if (BUILD_SANITIZE) if (BUILD_SANITIZE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
set(build_type "${build_type}-sanitize")
endif() endif()
include_directories(include) include_directories(include)
add_subdirectory(src) add_subdirectory(src)
+7 -2
View File
@@ -27,7 +27,7 @@ struct UCBitVec {
* Use as * Use as
* @code * @code
* uc_bv_integer v[10]; * uc_bv_integer v[10];
* struct UCBitVec v = BITVEC_STATIC_INIT(v); * struct UCBitVec v = UC_BV_STATIC_INIT(v);
* @endcode * @endcode
*/ */
#define UC_BV_STATIC_INIT(vec_data)\ #define UC_BV_STATIC_INIT(vec_data)\
@@ -68,11 +68,16 @@ void uc_bv_set_all(struct UCBitVec *v);
/** Initialize bits from a array of ints, each array element maps to one bit. /** Initialize bits from a array of ints, each array element maps to one bit.
* The bits are initialized from the int array so zero maps to zero and non-zero maps to one. * The bits are initialized from the int array so zero maps to zero and non-zero maps to one.
* e..g to set the 5 first bits, to 01110: * e..g to set the 5 first bits, to 01110:
* int a[] = {0,1,1,1,0}; * int a[] = {0,1,1,1,0};
* set_bits_from_array(v,a,5); * set_bits_from_array(v,a,5);
* */ * */
void uc_bv_set_bits_from_array(struct UCBitVec *v,const char *array,size_t array_len); void uc_bv_set_bits_from_array(struct UCBitVec *v,const char *array,size_t array_len);
/** Find the index of the first zero bit in the bitvec.
* @param v The bitvec to search
* @return The index of the first zero bit, or -1 if all bits are set
*/
int uc_bv_find_first_zero(const struct UCBitVec *v);
#ifdef __cplusplus #ifdef __cplusplus
} }
+112
View File
@@ -0,0 +1,112 @@
#ifndef UC_SLOT_ALLOCATOR_H_
#define UC_SLOT_ALLOCATOR_H_
#include <stddef.h>
#include <stdint.h>
#include "ucore/bitvec.h"
#ifdef __cplusplus
extern "C" {
#endif
/** @file
* Fixed size slot memory allocator
*
* UCSlotAlloc is used to allocate fixed slots of memory from a pre-allocated
* piece of memory.
*
* The main use case is to keep allocated memory in a contiguous block for use
* maximum number of objects(slots) is known and relatively small. More than 131072 slots
* is not recommended.
*
* Note that this allocator is not thread safe.
*
* A bitmap is used to track which slots are allocated.
*/
typedef struct UCSlotAlloc UCSlotAlloc;
struct UCSlotAlloc {
const uint32_t slot_size;
const uint32_t num_slots;
struct UCBitVec bitmap;
uint8_t *slots;
};
/** Initialize a UCSlotAlloc with an array as the backing memory to allocate slots from.
* The macro can be used at local scope to allocate memory automatic (stack) storage,
* or at global scope where the backin array will have static storage duration
*
* Use as:
* @code
* UC_SLOT_ALLOC_DEF(my_allocator, sizeof foo, 1024)
* struct foo *foo = uc_slot_alloc(&my_allocator);
* if (foo == NULL) {
* // out of memory
* } else {
* .. use foo
* uc_slot_free(&my_allocator, foo);
* }
* @endcode
*
* @param var_name Variable name for the allocator
* @param v slot_size Memory size allocated for each slot
* @param v num_slots Number of slots to reserve memory for
*/
#define UC_SLOT_ALLOC_DEF(var_name, slot_size_, num_slots_) \
struct {\
uc_bv_integer bitmap[UC_BV_LEN((num_slots_))]; \
uint8_t memory[(num_slots_) * (slot_size_)] __attribute__((aligned)); \
} var_name ## _memory = { \
}; \
UCSlotAlloc var_name = { \
.slot_size = (slot_size_), \
.num_slots = (num_slots_), \
.bitmap = UC_BV_STATIC_INIT(var_name ## _memory.bitmap), \
.slots = var_name ## _memory.memory \
};
/** Similar to UC_SLOT_ALLOC_DEF but allows you to specify the backing memory that must
* be atleast as large as num_slots * slot_size. Note that an array of num_slots * slot_size
* bits is also allocated for the bitmap with this definition
*/
#define UC_SLOT_ALLOC_DEF_EX(var_name, slot_size_, num_slots_, memory) \
uc_bv_integer var_name ## _bitmap[UC_BV_LEN((num_slots_))] = {}; \
UCSlotAlloc var_name = { \
.slot_size = (slot_size_), \
.num_slots = (num_slots_), \
.bitmap = UC_BV_STATIC_INIT(var_name ## _bitmap), \
.slots = (memory) \
};
/** Allocate a memory slot
*
* @param sa The allocator to allocate from
* @return A pointer to the memory slot that's sa.slot_size big, or NULL if
* all slots are allocated
*/
void *uc_slot_alloc(UCSlotAlloc *sa);
/** Free a memory slot previously returned from uc_slot_alloc()
*
* @param sa The allocator to free from.
* @param slot The memory slot to free. Passing a NULL pointer is undefined behavior
*/
void uc_slot_free(UCSlotAlloc *restrict sa, void *restrict slot);
/** uc_slot_free() where the slot can be a NULL pointer */
#define uc_slot_free_safe(sa, slot) \
do { \
if ((slot) != NULL) { \
uc_slot_free((sa), (slot)); \
} \
} while (0)
#ifdef __cplusplus
}
#endif
#endif
+4 -4
View File
@@ -30,7 +30,7 @@
// int i; // int i;
// struct bar zap; // struct bar zap;
//}; //};
// ... // ...
//struct bar *p = ..; //the local p is a pointer to //struct bar *p = ..; //the local p is a pointer to
//a 'zap' member inside a struct foo. //a 'zap' member inside a struct foo.
//give us the struct foo*: //give us the struct foo*:
@@ -55,7 +55,7 @@ const typeof( ((const type *)0)->member ) *__mptr = (ptr); \
/** /**
* Test if x is a power of 2 * Test if x is a power of 2
* *
* @param x value, must be an unsigned type * @param x value, must be an unsigned type
* @return 1 if x is a power of 20, 0 if it is not * @return 1 if x is a power of 20, 0 if it is not
*/ */
@@ -90,7 +90,7 @@ const typeof( ((const type *)0)->member ) *__mptr = (ptr); \
* *
* @param x numerator, must be positive * @param x numerator, must be positive
* @param y denominator * @param y denominator
* @return x/y rounded up * @return x/y rounded up
*/ */
#define UC_DIV_ROUND_UP(x, y) (((x) + ((y) - 1))/(y)) #define UC_DIV_ROUND_UP(x, y) (((x) + ((y) - 1))/(y))
@@ -103,7 +103,7 @@ const typeof( ((const type *)0)->member ) *__mptr = (ptr); \
* @param y denominator * @param y denominator
* @return x rounded up to nearest multiple of y * @return x rounded up to nearest multiple of y
*/ */
#define UC_ROUND_UP(x, y) (UC_DIV_ROUND_UP((x), (y)) * (y)) #define UC_ROUND_UP(x, y) (UC_DIV_ROUND_UP((x), (y)) * (y))
/** /**
* Round x down to nearest multiple of y * Round x down to nearest multiple of y
+2 -2
View File
@@ -5,10 +5,10 @@ configure_file (
file(GLOB SOURCE_FILES *.c) file(GLOB SOURCE_FILES *.c)
add_library( add_library(
ucore SHARED ucore SHARED
${SOURCE_FILES} ${SOURCE_FILES}
"${PROJECT_BINARY_DIR}/src/version.c" "${PROJECT_BINARY_DIR}/src/version.c"
) )
set_target_properties(ucore PROPERTIES SOVERSION 1 VERSION 1.0.0) set_target_properties(ucore PROPERTIES SOVERSION 1 VERSION 1.0.0)
target_link_libraries(ucore pthread) target_link_libraries(ucore Threads::Threads)
install (TARGETS ucore DESTINATION lib) install (TARGETS ucore DESTINATION lib)
+19 -1
View File
@@ -2,6 +2,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <assert.h> #include <assert.h>
#include "ucore/utils.h"
#include "ucore/bitvec.h" #include "ucore/bitvec.h"
#ifdef __GNUC__ #ifdef __GNUC__
@@ -12,6 +13,8 @@
#define unlikely(expr) (expr) #define unlikely(expr) (expr)
#endif #endif
UC_STATIC_ASSERT(CHAR_BIT % 8 == 0);
static inline int bit_index(int b) static inline int bit_index(int b)
{ {
return b / (sizeof(uc_bv_integer) * CHAR_BIT); return b / (sizeof(uc_bv_integer) * CHAR_BIT);
@@ -41,7 +44,7 @@ struct UCBitVec *uc_bv_new(size_t nbits)
void uc_bv_free(struct UCBitVec *v) void uc_bv_free(struct UCBitVec *v)
{ {
if (v) { if (likely(v != NULL)) {
free(v); free(v);
} }
} }
@@ -88,3 +91,18 @@ void uc_bv_set_all(struct UCBitVec *v)
memset(v->vec,0xff,v->vec_len * sizeof(uc_bv_integer)); memset(v->vec,0xff,v->vec_len * sizeof(uc_bv_integer));
} }
int uc_bv_find_first_zero(const struct UCBitVec *v)
{
const size_t bits_per_word = sizeof(uc_bv_integer) * CHAR_BIT;
for (size_t i = 0; i < v->vec_len; i++) {
uc_bv_integer inverted = ~v->vec[i];
if (inverted != 0) {
int bit_pos = __builtin_ffsl(inverted) - 1; // ffsl returns 1-based index
return (int)(i * bits_per_word + bit_pos);
}
}
return -1;
}
+6 -6
View File
@@ -1,4 +1,4 @@
/*Copyright (c) 2004 Nils O. Selåsdal <NOS {on} Utel {dot} no> */ /*Copyright (c) 2004 Nils O. Selsdal <NOS {on} Utel {dot} no> */
/*Straight forward attempt at a Mersenne Twister PRNG */ /*Straight forward attempt at a Mersenne Twister PRNG */
#include "ucore/mersenne_twister.h" #include "ucore/mersenne_twister.h"
@@ -24,7 +24,7 @@ enum {
void mtsrand(int seed, MTRand *r) void mtsrand(int seed, MTRand *r)
{ {
int j; unsigned j;
for (j = 0 ; j < N ; j++) { for (j = 0 ; j < N ; j++) {
r->x[j] = seed * ((j+1)<< 3)|0x1; r->x[j] = seed * ((j+1)<< 3)|0x1;
} }
@@ -36,16 +36,16 @@ unsigned int mtrand(MTRand *r)
{ {
unsigned int y; unsigned int y;
unsigned int ch[] = {0, a}; unsigned int ch[] = {0, a};
y = r->x[r->i] & U; y = r->x[r->i] & U;
y |= r->x[r->i % N]; y |= r->x[r->i % N];
y &= LL; y &= LL;
r->x[r->i] = r->x[(r->i + M ) %N]; r->x[r->i] = r->x[(r->i + M ) %N];
r->x[r->i] ^= y >> 1; r->x[r->i] ^= y >> 1;
r->x[r->i] ^= ch[y&0x1]; r->x[r->i] ^= ch[y&0x1];
y = r->x[r->i]; y = r->x[r->i];
y ^= y >> u; y ^= y >> u;
y ^= (y << s) & b; y ^= (y << s) & b;
@@ -55,7 +55,7 @@ unsigned int mtrand(MTRand *r)
r->i = (r->i + 1) % N; r->i = (r->i + 1) % N;
return y; return y;
} }
#ifdef TEST_MT #ifdef TEST_MT
#include <stdio.h> #include <stdio.h>
#include <time.h> #include <time.h>
+67
View File
@@ -0,0 +1,67 @@
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include "ucore/bitvec.h"
#include "ucore/slot_allocator.h"
void *uc_slot_alloc(UCSlotAlloc *sa)
{
int free_slot = uc_bv_find_first_zero(&sa->bitmap);
if (free_slot < 0) {
return NULL;
} else if ((size_t)free_slot >= sa->num_slots) { // bit vector may have more bits than slots
return NULL;
}
uc_bv_set_bit(&sa->bitmap, free_slot);
return sa->slots + free_slot * sa->slot_size;
}
void uc_slot_free(UCSlotAlloc *restrict sa, void *restrict slot)
{
assert((uint8_t *)slot >= sa->slots);
int slot_index = ((uint8_t *)slot - sa->slots) / sa->slot_size;
assert((size_t)slot_index < sa->num_slots);
uc_bv_clr_bit(&sa->bitmap, slot_index);
}
int main()
{
UC_SLOT_ALLOC_DEF(sa, 24, 1)
void *p1 = uc_slot_alloc(&sa);
printf("%p\n", &sa_memory.memory[0]);
printf("%p\n", p1);
void *p2 = uc_slot_alloc(&sa);
printf("%p\n", p2);
uc_slot_free(&sa, p1);
p2 = uc_slot_alloc(&sa);
printf("%p\n", p2);
printf("__malloc__\n");
void *v = malloc(24 * (1<<16));
UC_SLOT_ALLOC_DEF_EX(sa2, 24, (1<<16), v)
char *v2 = NULL;
for (int i = 0; i < 1<<16; i++) {
char *c = uc_slot_alloc(&sa2);
if (c == NULL) {
printf("uc_slot_alloc failed at %d\n", i);
break;
}
*c = i;
if (i == 0) {
v2 = c;
}
}
for (int i = (1<<16) -1 ; i >= 0; i--) {
uc_slot_free(&sa2, v2 + 24*i);
}
free(v);
return 0;
}
+5 -4
View File
@@ -1,15 +1,16 @@
file(GLOB TEST_SOURCE_FILES test_*.c) file(GLOB TEST_SOURCE_FILES test_*.c)
link_libraries(check ucore Threads::Threads)
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
include_directories("/opt/homebrew/include") include_directories("/opt/homebrew/include")
link_directories("/opt/homebrew/lib") link_directories("/opt/homebrew/lib")
list(REMOVE_ITEM TEST_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/test_ringbuf.c) list(REMOVE_ITEM TEST_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/test_ringbuf.c)
else() else()
target_link_libraries(rt) link_libraries(rt)
endif() endif()
add_executable(test_runner ${TEST_SOURCE_FILES})
target_link_libraries(test_runner check ucore)
add_custom_target(runtest COMMAND test_runner add_executable(test_runner ${TEST_SOURCE_FILES})
add_custom_target(test COMMAND test_runner
DEPENDS test_runner DEPENDS test_runner
WORKING_DIRECTORY ${CMAKE_PROJECT_DIR}) WORKING_DIRECTORY ${CMAKE_PROJECT_DIR})
BIN
View File
Binary file not shown.
+42 -42
View File
@@ -8,12 +8,12 @@ START_TEST (test_2bcd_1234567890)
unsigned char bcd[5]; unsigned char bcd[5];
size_t len = uc_ascii2bcd(ascii, bcd, 0); size_t len = uc_ascii2bcd(ascii, bcd, 0);
fail_if(len != 5, "len is %zu", len); ck_assert_int_eq(len, 5);
fail_if(bcd[0] != 0x21,"was 0x%x",bcd[0]); ck_assert_int_eq(bcd[0], 0x21);
fail_if(bcd[1] != 0x43,"was 0x%x",bcd[1]); ck_assert_int_eq(bcd[1], 0x43);
fail_if(bcd[2] != 0x65,"was 0x%x",bcd[2]); ck_assert_int_eq(bcd[2], 0x65);
fail_if(bcd[3] != 0x87,"was 0x%x",bcd[3]); ck_assert_int_eq(bcd[3], 0x87);
fail_if(bcd[4] != 0x09,"was 0x%x",bcd[4]); ck_assert_int_eq(bcd[4], 0x09);
} }
END_TEST END_TEST
@@ -23,7 +23,7 @@ START_TEST (test_2bcd_empty)
unsigned char bcd[1]; unsigned char bcd[1];
size_t len = uc_ascii2bcd(ascii, bcd, 3); size_t len = uc_ascii2bcd(ascii, bcd, 3);
fail_if(len != 0, "len is %zu", len); ck_assert_int_eq(len, 0);
} }
END_TEST END_TEST
@@ -33,8 +33,8 @@ START_TEST (test_2bcd_1_filler)
unsigned char bcd[1]; unsigned char bcd[1];
size_t len = uc_ascii2bcd(ascii, bcd, 0xa); size_t len = uc_ascii2bcd(ascii, bcd, 0xa);
fail_if(len != 1, "len is %zu", len); ck_assert_int_eq(len, 1);
fail_if(bcd[0] != 0xa1,"was 0x%x",bcd[0]); ck_assert_int_ne(bcd[0], 0);
} }
END_TEST END_TEST
@@ -44,10 +44,10 @@ START_TEST (test_2bcd_2_filler)
unsigned char bcd[2]; unsigned char bcd[2];
size_t len = uc_ascii2bcd(ascii, bcd, 0xf); size_t len = uc_ascii2bcd(ascii, bcd, 0xf);
fail_if(len != 2, "len is %zu", len); ck_assert_int_eq(len , 2);
fail_if(bcd[0] != 0x21,"was 0x%x",bcd[0]); ck_assert_int_eq(bcd[0] , 0x21);
fail_if(bcd[1] != 0xf3,"was 0x%x",bcd[1]); ck_assert_int_eq(bcd[1] , 0xf3);
fail_if(UC_BCD_LEN(strlen(ascii)) != len); ck_assert_int_eq(UC_BCD_LEN(strlen(ascii)) , len);
} }
END_TEST END_TEST
@@ -58,9 +58,9 @@ START_TEST (test_2bcd_3_filler)
unsigned char bcd[2]; unsigned char bcd[2];
size_t len = uc_ascii2bcd(ascii, bcd, 0x0); size_t len = uc_ascii2bcd(ascii, bcd, 0x0);
fail_if(len != 2, "len is %zu", len); ck_assert_int_eq(len , 2);
fail_if(bcd[0] != 0x21,"was 0x%x",bcd[0]); ck_assert_int_eq(bcd[0] , 0x21);
fail_if(bcd[1] != 0x03,"was 0x%x",bcd[1]); ck_assert_int_eq(bcd[1] , 0x03);
} }
END_TEST END_TEST
@@ -71,7 +71,7 @@ START_TEST (test_2bcd_non_digits)
unsigned char bcd[10]; unsigned char bcd[10];
size_t len = uc_ascii2bcd(ascii, bcd, 0x0); size_t len = uc_ascii2bcd(ascii, bcd, 0x0);
fail_if(len != 0, "len is %zu", len); ck_assert_int_eq(len , 0);
} }
END_TEST END_TEST
@@ -82,12 +82,12 @@ START_TEST (test_2bcd_phoneno)
unsigned char bcd[24]; unsigned char bcd[24];
size_t len = uc_ascii2bcd(ascii, bcd, 0xf); size_t len = uc_ascii2bcd(ascii, bcd, 0xf);
fail_if(len != 5, "len is %zu", len); ck_assert_int_eq(len , 5);
fail_if(bcd[0] != 0x00,"was 0x%x",bcd[0]); ck_assert_int_eq(bcd[0] , 0x00);
fail_if(bcd[1] != 0x74,"was 0x%x",bcd[1]); ck_assert_int_eq(bcd[1] , 0x74);
fail_if(bcd[2] != 0x23,"was 0x%x",bcd[1]); ck_assert_int_eq(bcd[2] , 0x23);
fail_if(bcd[3] != 0x33,"was 0x%x",bcd[1]); ck_assert_int_eq(bcd[3] , 0x33);
fail_if(bcd[4] != 0xf4,"was 0x%x",bcd[1]); ck_assert_int_eq(bcd[4] , 0xf4);
} }
END_TEST END_TEST
@@ -98,8 +98,8 @@ START_TEST (test_2bcd_binary)
unsigned char bcd[24]; unsigned char bcd[24];
size_t len = uc_ascii2bcd(ascii, bcd, 0xf); size_t len = uc_ascii2bcd(ascii, bcd, 0xf);
fail_if(len != 1, "len is %zu", len); ck_assert_int_eq(len , 1);
fail_if(bcd[0] != 0xf2,"0 was 0x%x",bcd[0]); ck_assert_int_eq(bcd[0], 0xf2);
} }
END_TEST END_TEST
@@ -110,13 +110,13 @@ START_TEST (test_2hex_1)
char ascii[sizeof bcd * 2 + 1]; char ascii[sizeof bcd * 2 + 1];
size_t len = uc_bcd2ascii(bcd, sizeof bcd, ascii); size_t len = uc_bcd2ascii(bcd, sizeof bcd, ascii);
fail_if(len != 4, "len is %zu", len); ck_assert_int_eq(len, 4);
fail_if(ascii[0] != '1',"0 was %c",ascii[0]); ck_assert_int_eq(ascii[0], '1');
fail_if(ascii[1] != '2',"1 was %c",ascii[1]); ck_assert_int_eq(ascii[1], '2');
fail_if(ascii[2] != '3',"2 was %c",ascii[2]); ck_assert_int_eq(ascii[2], '3');
fail_if(ascii[3] != '4',"3 was %c",ascii[3]); ck_assert_int_eq(ascii[3], '4');
fail_if(ascii[4] != 0, "4 was %c",ascii[4]); ck_assert_int_eq(ascii[4], 0);
fail_if(UC_ASCII_LEN(sizeof bcd) != len); ck_assert_int_eq(UC_ASCII_LEN(sizeof bcd) , len);
} }
END_TEST END_TEST
@@ -127,14 +127,14 @@ START_TEST (test_2hex_2)
char ascii[sizeof bcd * 2 + 1]; char ascii[sizeof bcd * 2 + 1];
size_t len = uc_bcd2ascii(bcd, sizeof bcd, ascii); size_t len = uc_bcd2ascii(bcd, sizeof bcd, ascii);
fail_if(len != 6, "len is %zu", len); ck_assert_int_eq(len , 6);
fail_if(ascii[0] != '0',"0 was %c",ascii[0]); ck_assert_int_eq(ascii[0] , '0');
fail_if(ascii[1] != 'F',"1 was %c",ascii[1]); ck_assert_int_eq(ascii[1] , 'F');
fail_if(ascii[2] != 'F',"2 was %c",ascii[2]); ck_assert_int_eq(ascii[2] , 'F');
fail_if(ascii[3] != 'F',"3 was %c",ascii[3]); ck_assert_int_eq(ascii[3] , 'F');
fail_if(ascii[4] != '0', "4 was %c",ascii[4]); ck_assert_int_eq(ascii[4] , '0');
fail_if(ascii[5] != '0', "5 was %c",ascii[5]); ck_assert_int_eq(ascii[5] , '0');
fail_if(ascii[6] != 0, "6 was %c",ascii[6]); ck_assert_int_eq(ascii[6] , 0);
} }
END_TEST END_TEST
@@ -146,8 +146,8 @@ START_TEST (test_2hex_empty)
ascii[0] = 0xFF; ascii[0] = 0xFF;
size_t len = uc_bcd2ascii(bcd, 0, ascii); size_t len = uc_bcd2ascii(bcd, 0, ascii);
fail_if(len != 0, "len is %zu", len); ck_assert_int_eq(len, 0);
fail_if(ascii[0] != 0, "0 was %c",ascii[0]); ck_assert_int_eq(ascii[0], 0);
} }
END_TEST END_TEST
+39 -12
View File
@@ -9,7 +9,7 @@ START_TEST (test_bitvec_1)
size_t i; size_t i;
for (i = 0; i < sizeof s * 8; i++) for (i = 0; i < sizeof s * 8; i++)
fail_if(uc_bv_get_bit(&v, i), "bit %zu is not 0", i); ck_assert_int_eq(uc_bv_get_bit(&v, i), 0);
} }
END_TEST END_TEST
@@ -23,7 +23,7 @@ START_TEST (test_bitvec_2)
uc_bv_set_bit(&v, i); uc_bv_set_bit(&v, i);
for (i = 0; i < sizeof s * 8; i++) for (i = 0; i < sizeof s * 8; i++)
fail_if(uc_bv_get_bit(&v, i) != 1 , "bit %zu is not 1", i); ck_assert_int_eq(uc_bv_get_bit(&v, i), 1);
} }
END_TEST END_TEST
@@ -34,13 +34,13 @@ START_TEST (test_bitvec_clearbit)
size_t i; size_t i;
for (i = 0; i < sizeof(uc_bv_integer) * 8; i++) for (i = 0; i < sizeof(uc_bv_integer) * 8; i++)
fail_if(uc_bv_get_bit(&v, i) != 1 , "bit %zu is not 1", i); ck_assert_int_eq(uc_bv_get_bit(&v, i), 1);
for (i = 0; i < sizeof(uc_bv_integer) * 8; i++) for (i = 0; i < sizeof(uc_bv_integer) * 8; i++)
uc_bv_clr_bit(&v, i); uc_bv_clr_bit(&v, i);
for (i = 0; i < sizeof(uc_bv_integer) * 8; i++) for (i = 0; i < sizeof(uc_bv_integer) * 8; i++)
fail_if(uc_bv_get_bit(&v, i) != 0 , "bit %zu is not 0", i); ck_assert_int_eq(uc_bv_get_bit(&v, i), 0);
} }
END_TEST END_TEST
@@ -48,14 +48,14 @@ END_TEST
START_TEST (test_bitvec_set_bits_from_array) START_TEST (test_bitvec_set_bits_from_array)
{ {
struct UCBitVec *v = uc_bv_new(5); struct UCBitVec *v = uc_bv_new(5);
char a[] = {1, 0,1 ,0, 1}; char a[] = {1, 0, 1 ,0, 1};
uc_bv_set_bits_from_array(v,a , 5); uc_bv_set_bits_from_array(v,a , 5);
fail_if(uc_bv_get_bit(v, 0) != 1 , "bit 0 is wrong"); ck_assert_int_eq(uc_bv_get_bit(v, 0), 1);
fail_if(uc_bv_get_bit(v, 1) != 0 , "bit 1 is wrong"); ck_assert_int_eq(uc_bv_get_bit(v, 1), 0);
fail_if(uc_bv_get_bit(v, 2) != 1 , "bit 2 is wrong"); ck_assert_int_eq(uc_bv_get_bit(v, 2), 1);
fail_if(uc_bv_get_bit(v, 3) != 0 , "bit 3 is wrong"); ck_assert_int_eq(uc_bv_get_bit(v, 3), 0);
fail_if(uc_bv_get_bit(v, 4) != 1 , "bit 4 is wrong"); ck_assert_int_eq(uc_bv_get_bit(v, 4), 1);
uc_bv_free(v); uc_bv_free(v);
} }
@@ -70,15 +70,40 @@ START_TEST (test_bitvec_setall_clearall)
uc_bv_set_all(v); uc_bv_set_all(v);
for (i = 0; i < 511; i++) for (i = 0; i < 511; i++)
fail_if(uc_bv_get_bit(v, i) != 1 , "bit %zu is not 1", i); ck_assert_int_eq(uc_bv_get_bit(v, i), 1);
uc_bv_clr_all(v); uc_bv_clr_all(v);
for (i = 0; i < sizeof(uc_bv_integer) * 8; i++) for (i = 0; i < sizeof(uc_bv_integer) * 8; i++)
fail_if(uc_bv_get_bit(v, i) != 0 , "bit %zu is not 0", i); ck_assert_int_eq(uc_bv_get_bit(v, i), 0);
uc_bv_free(v); uc_bv_free(v);
}
END_TEST
START_TEST (test_bitvec_find_first_zero)
{
uc_bv_integer buf[8];
struct UCBitVec v = UC_BV_STATIC_INIT(buf);
uc_bv_set_all(&v);
int bit = uc_bv_find_first_zero(&v);
ck_assert_int_eq(bit, -1);
uc_bv_clr_bit(&v, 0);
bit = uc_bv_find_first_zero(&v);
ck_assert_int_eq(bit, 0);
uc_bv_set_bit(&v, 0);
uc_bv_clr_bit(&v, 63);
bit = uc_bv_find_first_zero(&v);
ck_assert_int_eq(bit, 63);
uc_bv_set_bit(&v, 63);
uc_bv_clr_bit(&v, sizeof buf * CHAR_BIT - 1);
bit = uc_bv_find_first_zero(&v);
ck_assert_int_eq(bit, sizeof buf * CHAR_BIT - 1);
} }
END_TEST END_TEST
@@ -91,6 +116,8 @@ Suite *bitvec_suite(void)
tcase_add_test(tc, test_bitvec_set_bits_from_array); tcase_add_test(tc, test_bitvec_set_bits_from_array);
tcase_add_test(tc, test_bitvec_clearbit); tcase_add_test(tc, test_bitvec_clearbit);
tcase_add_test(tc, test_bitvec_setall_clearall); tcase_add_test(tc, test_bitvec_setall_clearall);
tcase_add_test(tc, test_bitvec_find_first_zero);
suite_add_tcase(s, tc); suite_add_tcase(s, tc);
return s; return s;
+9 -10
View File
@@ -60,8 +60,8 @@ START_TEST (test_gbuf_printf1)
fail_if(buf == NULL); fail_if(buf == NULL);
rc = uc_gbuf_printf(buf, "test %d", 1); rc = uc_gbuf_printf(buf, "test %d", 1);
fail_if(rc != 6, "rc was %d", rc); fail_if(rc != 6);
fail_if(buf->used != 6, "buf->used was %d", buf->used); fail_if(buf->used != 6);
fail_if(strcmp("test 1", buf->buf) != 0); fail_if(strcmp("test 1", buf->buf) != 0);
uc_gbuf_unref(buf); uc_gbuf_unref(buf);
@@ -76,8 +76,8 @@ START_TEST (test_gbuf_printf2)
fail_if(buf == NULL); fail_if(buf == NULL);
rc = uc_gbuf_printf(buf, "test %d test %d test %d", 1, 2, 3); rc = uc_gbuf_printf(buf, "test %d test %d test %d", 1, 2, 3);
fail_if(rc != 20, "rc was %d", rc); fail_if(rc != 20);
fail_if(buf->used != 20, "buf->used was %d", buf->used); fail_if(buf->used != 20);
fail_if(strcmp("test 1 test 2 test 3", buf->buf) != 0); fail_if(strcmp("test 1 test 2 test 3", buf->buf) != 0);
uc_gbuf_unref(buf); uc_gbuf_unref(buf);
@@ -92,14 +92,14 @@ START_TEST (test_gbuf_printf3)
fail_if(buf == NULL); fail_if(buf == NULL);
rc = uc_gbuf_printf(buf, "test %d test %d test %d", 1, 2, 3); rc = uc_gbuf_printf(buf, "test %d test %d test %d", 1, 2, 3);
fail_if(rc != 20, "rc was %d", rc); fail_if(rc != 20);
fail_if(buf->used != 20, "buf->used was %d", buf->used); fail_if(buf->used != 20);
fail_if(strcmp("test 1 test 2 test 3", buf->buf) != 0); fail_if(strcmp("test 1 test 2 test 3", buf->buf) != 0);
rc = uc_gbuf_printf(buf, " test %d test %d", 4, 5); rc = uc_gbuf_printf(buf, " test %d test %d", 4, 5);
fail_if(rc != 14, "rc was %d", rc); fail_if(rc != 14);
fail_if(buf->used != 34, "buf->used was %d", buf->used); fail_if(buf->used != 34);
fail_if(strcmp("test 1 test 2 test 3 test 4 test 5", buf->buf) != 0); fail_if(strcmp("test 1 test 2 test 3 test 4 test 5", buf->buf) != 0);
uc_gbuf_unref(buf); uc_gbuf_unref(buf);
@@ -110,11 +110,10 @@ START_TEST (test_gbuf_printf_empty_string)
{ {
int rc; int rc;
GBuf *buf = uc_new_gbuf(1); GBuf *buf = uc_new_gbuf(1);
const char *fmt = ""; //tricks gcc to not warn about empty format string
fail_if(buf == NULL); fail_if(buf == NULL);
rc = uc_gbuf_printf(buf, fmt); rc = uc_gbuf_printf(buf, "");
fail_if(rc != 0); fail_if(rc != 0);
fail_if(buf->used != 0); fail_if(buf->used != 0);
uc_gbuf_unref(buf); uc_gbuf_unref(buf);
+2 -2
View File
@@ -33,7 +33,7 @@ START_TEST (test_dbuf)
fail_if(uc_dbuf_remaining(&buf) != 105); fail_if(uc_dbuf_remaining(&buf) != 105);
fail_if(uc_dbuf_len(&buf) != 5); fail_if(uc_dbuf_len(&buf) != 5);
ck_assert_str_eq((char *)buf.start, "ABCD"); ck_assert_str_eq((char *)buf.start, "ABCD");
uc_dbuf_take(&buf, 5); uc_dbuf_take(&buf, 5);
fail_if(uc_dbuf_remaining(&buf) != 120); fail_if(uc_dbuf_remaining(&buf) != 120);
@@ -154,7 +154,7 @@ START_TEST (test_dbuf_add_ensure_take)
fail_if(rc != 0); fail_if(rc != 0);
//ok, dbuf adds the ensured capacity to the existing buflen //ok, dbuf adds the ensured capacity to the existing buflen
//so it becomes 100, not 90 even though the buffer is already empty //so it becomes 100, not 90 even though the buffer is already empty
fail_if(uc_dbuf_remaining(buf) != 100, "remaining %zu", (uc_dbuf_remaining(buf))); fail_if(uc_dbuf_remaining(buf) != 100);
fail_if(uc_dbuf_buflen(buf) != 100); fail_if(uc_dbuf_buflen(buf) != 100);
memset(buf->end, 0xDE, 90); memset(buf->end, 0xDE, 90);
uc_dbuf_added(buf, 90); uc_dbuf_added(buf, 90);
+14 -14
View File
@@ -22,7 +22,7 @@ START_TEST (test_uc_hex_encode_2)
uc_hex_encode(binary, sizeof binary, hex); uc_hex_encode(binary, sizeof binary, hex);
fail_if(strcmp(hex,"7F8081") != 0, "was %s", hex); fail_if(strcmp(hex,"7F8081") != 0);
} }
END_TEST END_TEST
@@ -34,7 +34,7 @@ START_TEST (test_uc_hex_encode_3)
uc_hex_encode(binary, sizeof binary, hex); uc_hex_encode(binary, sizeof binary, hex);
fail_if(strcmp(hex,"0001090B") != 0, "was %s", hex); fail_if(strcmp(hex,"0001090B") != 0);
} }
END_TEST END_TEST
@@ -62,7 +62,7 @@ START_TEST (test_uc_hex_decode_1)
fail_if(binary[0] != 0x1f); fail_if(binary[0] != 0x1f);
fail_if(binary[1] != 0x22); fail_if(binary[1] != 0x22);
fail_if(res != binary + 1, "binary %p, res %p", &binary[0], res); fail_if(res != binary + 1);
} }
END_TEST END_TEST
@@ -78,7 +78,7 @@ START_TEST (test_uc_hex_decode_2)
fail_if(binary[0] != 0x00); fail_if(binary[0] != 0x00);
fail_if(binary[1] != 0xFF); fail_if(binary[1] != 0xFF);
fail_if(binary[2] != 0x80); fail_if(binary[2] != 0x80);
fail_if(res != binary + 3, "binary %p, res %p", &binary[0], res); fail_if(res != binary + 3);
} }
END_TEST END_TEST
@@ -110,7 +110,7 @@ START_TEST (test_uc_hex_decode_empty_string)
fail_if(binary[0] != 0x11); fail_if(binary[0] != 0x11);
fail_if(binary[1] != 0x11); fail_if(binary[1] != 0x11);
fail_if(binary[2] != 0x11); fail_if(binary[2] != 0x11);
fail_if(res != binary, "length %zu\n", res - binary); fail_if(res != binary);
} }
END_TEST END_TEST
@@ -125,7 +125,7 @@ START_TEST (test_uc_hex_decode_spaces)
fail_if(binary[0] != 0x11); fail_if(binary[0] != 0x11);
fail_if(binary[1] != 0x12); fail_if(binary[1] != 0x12);
fail_if(binary[2] != 0x13); fail_if(binary[2] != 0x13);
fail_if(res != binary+3, "length %zu\n", res - binary); fail_if(res != binary+3);
} }
END_TEST END_TEST
@@ -141,7 +141,7 @@ START_TEST (test_uc_hex_decode_spaces2)
fail_if(binary[0] != 0x11); fail_if(binary[0] != 0x11);
fail_if(binary[1] != 0x12); fail_if(binary[1] != 0x12);
fail_if(binary[2] != 0x13); fail_if(binary[2] != 0x13);
fail_if(res != binary+3, "length %zu\n", res - binary); fail_if(res != binary+3);
} }
END_TEST END_TEST
@@ -156,7 +156,7 @@ START_TEST (test_uc_hex_decode_spaces_empty)
fail_if(binary[0] != 0x11); fail_if(binary[0] != 0x11);
fail_if(binary[1] != 0x12); fail_if(binary[1] != 0x12);
fail_if(res != binary, "length %zu\n", res - binary); fail_if(res != binary);
} }
END_TEST END_TEST
@@ -201,7 +201,7 @@ START_TEST (test_uc_hex_encode_delim_1)
res = uc_hex_encode_delim(binary, sizeof binary, hex, sizeof hex, " "); res = uc_hex_encode_delim(binary, sizeof binary, hex, sizeof hex, " ");
fail_if(strcmp(hex, "FF 00 7F 0A ") != 0, "hex was '%s'", hex); fail_if(strcmp(hex, "FF 00 7F 0A ") != 0);
*res = 0; *res = 0;
fail_if(res != hex + 12); fail_if(res != hex + 12);
@@ -216,8 +216,8 @@ START_TEST (test_uc_hex_encode_delim_2)
res = uc_hex_encode_delim(binary, sizeof binary, hex, sizeof hex, " \n"); res = uc_hex_encode_delim(binary, sizeof binary, hex, sizeof hex, " \n");
fail_if(strcmp(hex, "FF \n00 ") != 0, "hex was '%s'", hex); fail_if(strcmp(hex, "FF \n00 ") != 0);
fail_if(res != hex + 7, "sz was %zu", res - hex); fail_if(res != hex + 7);
} }
END_TEST END_TEST
@@ -230,7 +230,7 @@ START_TEST (test_uc_hex_encode_delim_zero_len)
res = uc_hex_encode_delim(binary, 0, hex, sizeof hex, " \n"); res = uc_hex_encode_delim(binary, 0, hex, sizeof hex, " \n");
fail_if(strcmp(hex, "") != 0, "hex was '%s'", hex); fail_if(strcmp(hex, "") != 0);
fail_if(res != hex); fail_if(res != hex);
} }
@@ -247,7 +247,7 @@ START_TEST (test_uc_hex_decode_lowercase)
fail_if(binary[0] != 0x1f); fail_if(binary[0] != 0x1f);
fail_if(binary[1] != 0x22); fail_if(binary[1] != 0x22);
fail_if(res != binary + 1, "binary %p, res %p", &binary[0], res); fail_if(res != binary + 1);
} }
END_TEST END_TEST
@@ -263,7 +263,7 @@ Suite *hex_suite(void)
tcase_add_test(tc, test_uc_hex_encode_delim_1); tcase_add_test(tc, test_uc_hex_encode_delim_1);
tcase_add_test(tc, test_uc_hex_encode_delim_2); tcase_add_test(tc, test_uc_hex_encode_delim_2);
tcase_add_test(tc, test_uc_hex_encode_delim_zero_len); tcase_add_test(tc, test_uc_hex_encode_delim_zero_len);
tcase_add_test(tc, test_uc_hex_decode_1); tcase_add_test(tc, test_uc_hex_decode_1);
tcase_add_test(tc, test_uc_hex_decode_2); tcase_add_test(tc, test_uc_hex_decode_2);
+44 -45
View File
@@ -10,7 +10,7 @@
#define FILE_NAME "logfile_test.log" #define FILE_NAME "logfile_test.log"
#define SUBDIR "log_subdir" #define SUBDIR "log_subdir"
#define SUBDIR_FILE_NAME SUBDIR "/" FILE_NAME #define SUBDIR_FILE_NAME SUBDIR "/" FILE_NAME
//Note that these tests are comewhat fragile as they depend on the //Note that these tests are comewhat fragile as they depend on the
//file sizes that are created, which depends on the (relative)paths of this file. //file sizes that are created, which depends on the (relative)paths of this file.
//for cleaning the created log files.. //for cleaning the created log files..
static void logging_rm_files(void) static void logging_rm_files(void)
@@ -61,8 +61,7 @@ START_TEST (test_logfile_location)
UC_LOGF(UC_LL_ERROR, 0, "Lorum ipson 5"); UC_LOGF(UC_LL_ERROR, 0, "Lorum ipson 5");
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 380, "was %ld", (long)st.st_size);
} }
END_TEST END_TEST
@@ -85,7 +84,7 @@ START_TEST (test_logfile_delete_destination)
uc_log_init(&mods); uc_log_init(&mods);
dest = uc_log_new_file(FILE_NAME, UC_LL_DEBUG, 1); dest = uc_log_new_file(FILE_NAME, UC_LL_DEBUG, 0);
fail_if(dest == NULL); fail_if(dest == NULL);
uc_log_add_destination(dest); uc_log_add_destination(dest);
uc_log_add_destination(dest); //adding this twice should do nothing uc_log_add_destination(dest); //adding this twice should do nothing
@@ -97,8 +96,8 @@ START_TEST (test_logfile_delete_destination)
UC_LOGF(UC_LL_ERROR, 0, "Lorum ipson 5"); UC_LOGF(UC_LL_ERROR, 0, "Lorum ipson 5");
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 380, "was %ld", (long)st.st_size); fail_if(st.st_size != 260);
uc_log_delete_destination(dest); uc_log_delete_destination(dest);
@@ -110,8 +109,8 @@ START_TEST (test_logfile_delete_destination)
//since we deleted destinatiion, no more logging should appear in the file //since we deleted destinatiion, no more logging should appear in the file
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 380, "was %ld", (long)st.st_size); fail_if(st.st_size != 260);
} }
END_TEST END_TEST
@@ -143,8 +142,8 @@ START_TEST (test_logfile_no_location)
UC_LOGF(UC_LL_DEBUG, 0, "Lorum ipson %d", 1); UC_LOGF(UC_LL_DEBUG, 0, "Lorum ipson %d", 1);
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 52*2, "was %ld", (long)st.st_size); fail_if(st.st_size != 52*2);
} }
END_TEST END_TEST
@@ -169,16 +168,16 @@ START_TEST (test_logfile_loglevel_surpressed_dest)
//file destination have UC_LL_WARNING, so nothing should be logged //file destination have UC_LL_WARNING, so nothing should be logged
dest = uc_log_new_file(FILE_NAME, UC_LL_WARNING, 10); dest = uc_log_new_file(FILE_NAME, UC_LL_WARNING, 10);
fail_if(dest == NULL); fail_if(dest == NULL);
uc_log_add_destination(dest); uc_log_add_destination(dest);
UC_LOGF(UC_LL_INFO, 1, "Lorum ipson %d", 1); UC_LOGF(UC_LL_INFO, 1, "Lorum ipson %d", 1);
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 0, "was %ld", (long)st.st_size); fail_if(st.st_size != 0);
} }
END_TEST END_TEST
@@ -203,16 +202,16 @@ START_TEST (test_logfile_loglevel_surpressed_module)
uc_log_init(&mods); uc_log_init(&mods);
dest = uc_log_new_file(FILE_NAME, UC_LL_DEBUG, 1); dest = uc_log_new_file(FILE_NAME, UC_LL_DEBUG, 1);
fail_if(dest == NULL); fail_if(dest == NULL);
uc_log_add_destination(dest); uc_log_add_destination(dest);
UC_LOGF(UC_LL_INFO, 0, "Lorum ipson %d", 100); UC_LOGF(UC_LL_INFO, 0, "Lorum ipson %d", 100);
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 0, "was %ld", (long)st.st_size); fail_if(st.st_size != 0);
} }
END_TEST END_TEST
@@ -235,7 +234,7 @@ START_TEST (test_logfile_reopen_files)
uc_log_init(&mods); uc_log_init(&mods);
dest = uc_log_new_file(FILE_NAME, UC_LL_DEBUG, 1); dest = uc_log_new_file(FILE_NAME, UC_LL_DEBUG, 0);
fail_if(dest == NULL); fail_if(dest == NULL);
uc_log_add_destination(dest); uc_log_add_destination(dest);
@@ -243,20 +242,20 @@ START_TEST (test_logfile_reopen_files)
UC_LOGF(UC_LL_DEBUG, 0, "Lorum ipson %d", 1); UC_LOGF(UC_LL_DEBUG, 0, "Lorum ipson %d", 1);
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 77*2, "was %ld", (long)st.st_size); fail_if(st.st_size != 104);
rc = remove(FILE_NAME); rc = remove(FILE_NAME);
fail_if(rc != 0, "Remove failed %s", strerror(errno)); fail_if(rc != 0);
rc = uc_log_reopen_files(); rc = uc_log_reopen_files();
fail_if(rc != 0, "uc_log_reopen_files failed: %d", rc); fail_if(rc != 0);
UC_LOGF(UC_LL_DEBUG, 0, "Lorum ipson %d", 1); UC_LOGF(UC_LL_DEBUG, 0, "Lorum ipson %d", 1);
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "2. stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 77, "was %ld", (long)st.st_size);//should only one line there now fail_if(st.st_size != 52);//should only one line there now
} }
END_TEST END_TEST
@@ -281,10 +280,10 @@ START_TEST (test_logfile_remove_dest)
uc_log_init(&mods); uc_log_init(&mods);
dest1 = uc_log_new_file(FILE_NAME, UC_LL_DEBUG, 1); dest1 = uc_log_new_file(FILE_NAME, UC_LL_DEBUG, 0);
fail_if(dest1 == NULL); fail_if(dest1 == NULL);
dest2 = uc_log_new_stderr(UC_LL_WARNING, 1); dest2 = uc_log_new_stderr(UC_LL_WARNING, 0);
fail_if(dest2 == NULL); fail_if(dest2 == NULL);
uc_log_add_destination(dest1); uc_log_add_destination(dest1);
@@ -294,25 +293,25 @@ START_TEST (test_logfile_remove_dest)
UC_LOGF(UC_LL_DEBUG, 0, "Lorum ipson %d", 1); UC_LOGF(UC_LL_DEBUG, 0, "Lorum ipson %d", 1);
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 77*2, "was %ld", (long)st.st_size); fail_if(st.st_size != 104);
uc_log_remove_destination(dest1); uc_log_remove_destination(dest1);
UC_LOGF(UC_LL_DEBUG, 0, "Lorum ipson %d", 1); //should not be logged now UC_LOGF(UC_LL_DEBUG, 0, "Lorum ipson %d", 1); //should not be logged now
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "2. stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 77*2, "was %ld", (long)st.st_size);//should be same size fail_if(st.st_size != 104);//should be same size
//removing the last destination should be fine too //removing the last destination should be fine too
uc_log_remove_destination(dest2); uc_log_remove_destination(dest2);
UC_LOGF(UC_LL_DEBUG, 0, "Lorum ipson %d", 1); UC_LOGF(UC_LL_DEBUG, 0, "Lorum ipson %d", 1);
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "2. stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 77*2, "was %ld", (long)st.st_size);//should be same size fail_if(st.st_size != 104);//should be same size
} }
END_TEST END_TEST
@@ -337,7 +336,7 @@ START_TEST (test_logfile_full_filesystem)
uc_log_init(&mods); uc_log_init(&mods);
dest = uc_log_new_file("/dev/full", UC_LL_DEBUG, 1); dest = uc_log_new_file("/dev/full", UC_LL_DEBUG, 1);
fail_if(dest == NULL, "Cannot open /dev/full"); fail_if(dest == NULL);
uc_log_add_destination(dest); uc_log_add_destination(dest);
for (i = 0; i < 1024; i++) { for (i = 0; i < 1024; i++) {
@@ -397,7 +396,7 @@ START_TEST (test_logfile_invalid_file_after_reopen)
logging_rm_subdir(); logging_rm_subdir();
rc = access(SUBDIR_FILE_NAME, W_OK); rc = access(SUBDIR_FILE_NAME, W_OK);
fail_if(rc == 0, "Test setup is wrong. Can still access" SUBDIR_FILE_NAME ""); fail_if(rc == 0);
UC_LOGF(UC_LL_DEBUG, 0, "Lorum ipson %d", 1); UC_LOGF(UC_LL_DEBUG, 0, "Lorum ipson %d", 1);
UC_LOGF(UC_LL_WARNING, 0, "Lorum ipson %d", 1); UC_LOGF(UC_LL_WARNING, 0, "Lorum ipson %d", 1);
@@ -440,8 +439,8 @@ START_TEST (test_logfile_raw)
UC_LOGFR(UC_LL_DEBUG, 0, "Lorum ipson %d\n", 1); UC_LOGFR(UC_LL_DEBUG, 0, "Lorum ipson %d\n", 1);
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 14*2, "was %ld", (long)st.st_size); fail_if(st.st_size != 14*2);
} }
END_TEST END_TEST
@@ -480,16 +479,16 @@ START_TEST (test_logfile_dest_mask)
UC_LOGFR(UC_LL_DEBUG, 0, "Lorum ipson %d", 1); UC_LOGFR(UC_LL_DEBUG, 0, "Lorum ipson %d", 1);
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 0, "was %ld", (long)st.st_size); fail_if(st.st_size != 0);
uc_log_destination_set_mask(dest, "MOD1=DEBUG:mod2=Debug"); uc_log_destination_set_mask(dest, "MOD1=DEBUG:mod2=Debug");
UC_LOGFR(UC_LL_DEBUG, 0, "Lorum ipson %d\n", 1); UC_LOGFR(UC_LL_DEBUG, 0, "Lorum ipson %d\n", 1);
UC_LOGFR(UC_LL_DEBUG, 1, "Lorum ipson %d\n", 1); UC_LOGFR(UC_LL_DEBUG, 1, "Lorum ipson %d\n", 1);
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 14*2, "was %ld", (long)st.st_size); fail_if(st.st_size != 14*2);
} }
END_TEST END_TEST
@@ -519,8 +518,8 @@ START_TEST (test_loglevel_module_none)
UC_LOGFR(UC_LL_ERROR, 0, "Lorum ipson %d\n", 1); UC_LOGFR(UC_LL_ERROR, 0, "Lorum ipson %d\n", 1);
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 0, "was %ld", (long)st.st_size); fail_if(st.st_size != 0);
} }
END_TEST END_TEST
@@ -550,8 +549,8 @@ START_TEST (test_loglevel_dest_none)
UC_LOGFR(UC_LL_WARNING, 0, "Lorum ipson %d\n", 1); UC_LOGFR(UC_LL_WARNING, 0, "Lorum ipson %d\n", 1);
rc = stat(FILE_NAME, &st); rc = stat(FILE_NAME, &st);
fail_if(rc != 0, "stat failed: %s", strerror(errno)); fail_if(rc != 0);
fail_if(st.st_size != 0, "was %ld", (long)st.st_size); fail_if(st.st_size != 0);
} }
END_TEST END_TEST
+84 -84
View File
@@ -9,8 +9,8 @@ START_TEST (test_pack16_le_1)
uc_pack_16_le(v,r); uc_pack_16_le(v,r);
fail_if(r[0] != 0x34,"was 0x%x",r[0]); fail_if(r[0] != 0x34);
fail_if(r[1] != 0x12,"was 0x%x",r[1]); fail_if(r[1] != 0x12);
} }
END_TEST END_TEST
@@ -21,8 +21,8 @@ START_TEST (test_pack16_le_2)
uc_pack_16_le(v,r); uc_pack_16_le(v,r);
fail_if(r[0] != 0xEF,"was 0x%x",r[0]); fail_if(r[0] != 0xEF);
fail_if(r[1] != 0xFE,"was 0x%x",r[1]); fail_if(r[1] != 0xFE);
} }
END_TEST END_TEST
@@ -33,8 +33,8 @@ START_TEST (test_pack16_be_1)
uc_pack_16_be(v,r); uc_pack_16_be(v,r);
fail_if(r[0] != 0x12,"was 0x%x",r[0]); fail_if(r[0] != 0x12);
fail_if(r[1] != 0x34,"was 0x%x",r[1]); fail_if(r[1] != 0x34);
} }
END_TEST END_TEST
@@ -45,8 +45,8 @@ START_TEST (test_pack16_be_2)
uc_pack_16_be(v, r); uc_pack_16_be(v, r);
fail_if(r[0] != 0xFE,"was 0x%x",r[0]); fail_if(r[0] != 0xFE);
fail_if(r[1] != 0xEF,"was 0x%x",r[1]); fail_if(r[1] != 0xEF);
} }
END_TEST END_TEST
@@ -57,7 +57,7 @@ START_TEST (test_unpack16_le_1)
v = uc_unpack_16_le(r); v = uc_unpack_16_le(r);
fail_if(v != 0x3412,"was 0x%x",v); fail_if(v != 0x3412);
} }
END_TEST END_TEST
@@ -68,7 +68,7 @@ START_TEST (test_unpack16_le_2)
v = uc_unpack_16_le(r); v = uc_unpack_16_le(r);
fail_if(v != 0xEFFE,"was 0x%x",v); fail_if(v != 0xEFFE);
} }
END_TEST END_TEST
@@ -79,7 +79,7 @@ START_TEST (test_unpack16_be_1)
v = uc_unpack_16_be(r); v = uc_unpack_16_be(r);
fail_if(v != 0x1234,"was 0x%x",v); fail_if(v != 0x1234);
} }
END_TEST END_TEST
@@ -90,7 +90,7 @@ START_TEST (test_unpack16_be_2)
v = uc_unpack_16_be(r); v = uc_unpack_16_be(r);
fail_if(v != 0xFEEF,"was 0x%x",v); fail_if(v != 0xFEEF);
} }
END_TEST END_TEST
@@ -101,9 +101,9 @@ START_TEST (test_pack24_le_1)
uc_pack_24_le(v,r); uc_pack_24_le(v,r);
fail_if(r[0] != 0x56,"was 0x%x",r[0]); fail_if(r[0] != 0x56);
fail_if(r[1] != 0x34,"was 0x%x",r[1]); fail_if(r[1] != 0x34);
fail_if(r[2] != 0x12,"was 0x%x",r[2]); fail_if(r[2] != 0x12);
} }
END_TEST END_TEST
@@ -114,9 +114,9 @@ START_TEST (test_pack24_le_2)
uc_pack_24_le(v,r); uc_pack_24_le(v,r);
fail_if(r[0] != 0xF6,"was 0x%x",r[0]); fail_if(r[0] != 0xF6);
fail_if(r[1] != 0xF7,"was 0x%x",r[1]); fail_if(r[1] != 0xF7);
fail_if(r[2] != 0xF8,"was 0x%x",r[2]); fail_if(r[2] != 0xF8);
} }
END_TEST END_TEST
@@ -127,9 +127,9 @@ START_TEST (test_pack24_be_1)
uc_pack_24_be(v,r); uc_pack_24_be(v,r);
fail_if(r[0] != 0x12,"was 0x%x",r[0]); fail_if(r[0] != 0x12);
fail_if(r[1] != 0x34,"was 0x%x",r[1]); fail_if(r[1] != 0x34);
fail_if(r[2] != 0x56,"was 0x%x",r[2]); fail_if(r[2] != 0x56);
} }
END_TEST END_TEST
@@ -140,9 +140,9 @@ START_TEST (test_pack24_be_2)
uc_pack_24_be(v,r); uc_pack_24_be(v,r);
fail_if(r[0] != 0xF8,"was 0x%x",r[0]); fail_if(r[0] != 0xF8);
fail_if(r[1] != 0xF7,"was 0x%x",r[1]); fail_if(r[1] != 0xF7);
fail_if(r[2] != 0xF6,"was 0x%x",r[2]); fail_if(r[2] != 0xF6);
} }
END_TEST END_TEST
@@ -153,10 +153,10 @@ START_TEST (test_pack32_le_1)
uc_pack_32_le(v,r); uc_pack_32_le(v,r);
fail_if(r[0] != 0x78,"was 0x%x",r[0]); fail_if(r[0] != 0x78);
fail_if(r[1] != 0x56,"was 0x%x",r[1]); fail_if(r[1] != 0x56);
fail_if(r[2] != 0x34,"was 0x%x",r[2]); fail_if(r[2] != 0x34);
fail_if(r[3] != 0x12,"was 0x%x",r[3]); fail_if(r[3] != 0x12);
} }
END_TEST END_TEST
@@ -167,10 +167,10 @@ START_TEST (test_pack32_le_2)
uc_pack_32_le(v,r); uc_pack_32_le(v,r);
fail_if(r[0] != 0xF4,"was 0x%x",r[0]); fail_if(r[0] != 0xF4);
fail_if(r[1] != 0xF6,"was 0x%x",r[1]); fail_if(r[1] != 0xF6);
fail_if(r[2] != 0xF7,"was 0x%x",r[2]); fail_if(r[2] != 0xF7);
fail_if(r[3] != 0xF8,"was 0x%x",r[3]); fail_if(r[3] != 0xF8);
} }
END_TEST END_TEST
@@ -181,10 +181,10 @@ START_TEST (test_pack32_be_1)
uc_pack_32_be(v,r); uc_pack_32_be(v,r);
fail_if(r[3] != 0x78,"was 0x%x",r[3]); fail_if(r[3] != 0x78);
fail_if(r[2] != 0x56,"was 0x%x",r[2]); fail_if(r[2] != 0x56);
fail_if(r[1] != 0x34,"was 0x%x",r[1]); fail_if(r[1] != 0x34);
fail_if(r[0] != 0x12,"was 0x%x",r[0]); fail_if(r[0] != 0x12);
} }
END_TEST END_TEST
@@ -195,10 +195,10 @@ START_TEST (test_pack32_be_2)
uc_pack_32_be(v,r); uc_pack_32_be(v,r);
fail_if(r[3] != 0xF4,"was 0x%x",r[3]); fail_if(r[3] != 0xF4);
fail_if(r[2] != 0xF6,"was 0x%x",r[2]); fail_if(r[2] != 0xF6);
fail_if(r[1] != 0xF7,"was 0x%x",r[1]); fail_if(r[1] != 0xF7);
fail_if(r[0] != 0xF8,"was 0x%x",r[0]); fail_if(r[0] != 0xF8);
} }
END_TEST END_TEST
@@ -209,7 +209,7 @@ START_TEST (test_unpack24_le_1)
v = uc_unpack_24_le(r); v = uc_unpack_24_le(r);
fail_if(v != 0x563412,"was 0x%x",v); fail_if(v != 0x563412);
} }
END_TEST END_TEST
@@ -220,7 +220,7 @@ START_TEST (test_unpack24_le_2)
v = uc_unpack_24_le(r); v = uc_unpack_24_le(r);
fail_if(v != 0xF6F7F8,"was 0x%x",v); fail_if(v != 0xF6F7F8);
} }
END_TEST END_TEST
@@ -231,7 +231,7 @@ START_TEST (test_unpack24_be_1)
v = uc_unpack_24_be(r); v = uc_unpack_24_be(r);
fail_if(v != 0x123456,"was 0x%x",v); fail_if(v != 0x123456);
} }
END_TEST END_TEST
@@ -242,7 +242,7 @@ START_TEST (test_unpack24_be_2)
v = uc_unpack_24_be(r); v = uc_unpack_24_be(r);
fail_if(v != 0xF8F7F6,"was 0x%x",v); fail_if(v != 0xF8F7F6);
} }
END_TEST END_TEST
@@ -253,7 +253,7 @@ START_TEST (test_unpack32_le_1)
v = uc_unpack_32_le(r); v = uc_unpack_32_le(r);
fail_if(v != 0x78563412,"was 0x%x",v); fail_if(v != 0x78563412);
} }
END_TEST END_TEST
@@ -264,7 +264,7 @@ START_TEST (test_unpack32_le_2)
v = uc_unpack_32_le(r); v = uc_unpack_32_le(r);
fail_if(v != 0xF4F6F7F8,"was 0x%x",v); fail_if(v != 0xF4F6F7F8);
} }
END_TEST END_TEST
@@ -275,7 +275,7 @@ START_TEST (test_unpack32_be_1)
v = uc_unpack_32_be(r); v = uc_unpack_32_be(r);
fail_if(v != 0x12345678,"was 0x%x",v); fail_if(v != 0x12345678);
} }
END_TEST END_TEST
@@ -286,7 +286,7 @@ START_TEST (test_unpack32_be_2)
v = uc_unpack_32_be(r); v = uc_unpack_32_be(r);
fail_if(v != 0xF8F7F6F4,"was 0x%x",v); fail_if(v != 0xF8F7F6F4);
} }
END_TEST END_TEST
@@ -297,14 +297,14 @@ START_TEST (test_pack64_le_1)
uc_pack_64_le(v, r); uc_pack_64_le(v, r);
fail_if(r[0] != 0x88,"was 0x%x",r[0]); fail_if(r[0] != 0x88);
fail_if(r[1] != 0x77,"was 0x%x",r[1]); fail_if(r[1] != 0x77);
fail_if(r[2] != 0x66,"was 0x%x",r[2]); fail_if(r[2] != 0x66);
fail_if(r[3] != 0x55,"was 0x%x",r[3]); fail_if(r[3] != 0x55);
fail_if(r[4] != 0x44,"was 0x%x",r[4]); fail_if(r[4] != 0x44);
fail_if(r[5] != 0x33,"was 0x%x",r[5]); fail_if(r[5] != 0x33);
fail_if(r[6] != 0x22,"was 0x%x",r[6]); fail_if(r[6] != 0x22);
fail_if(r[7] != 0x11,"was 0x%x",r[7]); fail_if(r[7] != 0x11);
} }
END_TEST END_TEST
@@ -315,14 +315,14 @@ START_TEST (test_pack64_le_2)
uc_pack_64_le(v, r); uc_pack_64_le(v, r);
fail_if(r[0] != 0xF8,"was 0x%x",r[0]); fail_if(r[0] != 0xF8);
fail_if(r[1] != 0xF9,"was 0x%x",r[1]); fail_if(r[1] != 0xF9);
fail_if(r[2] != 0xFA,"was 0x%x",r[2]); fail_if(r[2] != 0xFA);
fail_if(r[3] != 0xFB,"was 0x%x",r[3]); fail_if(r[3] != 0xFB);
fail_if(r[4] != 0xFC,"was 0x%x",r[4]); fail_if(r[4] != 0xFC);
fail_if(r[5] != 0xFD,"was 0x%x",r[5]); fail_if(r[5] != 0xFD);
fail_if(r[6] != 0xFE,"was 0x%x",r[6]); fail_if(r[6] != 0xFE);
fail_if(r[7] != 0xFF,"was 0x%x",r[7]); fail_if(r[7] != 0xFF);
} }
END_TEST END_TEST
@@ -333,7 +333,7 @@ START_TEST (test_unpack64_le_1)
v = uc_unpack_64_le(r); v = uc_unpack_64_le(r);
fail_if(v != 0x8877665544332211ULL,"was 0x%llx",v); fail_if(v != 0x8877665544332211ULL);
} }
END_TEST END_TEST
@@ -345,7 +345,7 @@ START_TEST (test_unpack64_le_2)
v = uc_unpack_64_le(r); v = uc_unpack_64_le(r);
fail_if(v != 0xF8F9FAFBFCFDFEFFULL,"was 0x%llx",v); fail_if(v != 0xF8F9FAFBFCFDFEFFULL);
} }
END_TEST END_TEST
@@ -356,14 +356,14 @@ START_TEST (test_pack64_be_1)
uc_pack_64_be(v, r); uc_pack_64_be(v, r);
fail_if(r[0] != 0x11,"was 0x%x",r[0]); fail_if(r[0] != 0x11);
fail_if(r[1] != 0x22,"was 0x%x",r[1]); fail_if(r[1] != 0x22);
fail_if(r[2] != 0x33,"was 0x%x",r[2]); fail_if(r[2] != 0x33);
fail_if(r[3] != 0x44,"was 0x%x",r[3]); fail_if(r[3] != 0x44);
fail_if(r[4] != 0x55,"was 0x%x",r[4]); fail_if(r[4] != 0x55);
fail_if(r[5] != 0x66,"was 0x%x",r[5]); fail_if(r[5] != 0x66);
fail_if(r[6] != 0x77,"was 0x%x",r[6]); fail_if(r[6] != 0x77);
fail_if(r[7] != 0x88,"was 0x%x",r[7]); fail_if(r[7] != 0x88);
} }
END_TEST END_TEST
@@ -374,14 +374,14 @@ START_TEST (test_pack64_be_2)
uc_pack_64_be(v, r); uc_pack_64_be(v, r);
fail_if(r[0] != 0xFF,"was 0x%x",r[0]); fail_if(r[0] != 0xFF);
fail_if(r[1] != 0xFE,"was 0x%x",r[1]); fail_if(r[1] != 0xFE);
fail_if(r[2] != 0xFD,"was 0x%x",r[2]); fail_if(r[2] != 0xFD);
fail_if(r[3] != 0xFC,"was 0x%x",r[3]); fail_if(r[3] != 0xFC);
fail_if(r[4] != 0xFB,"was 0x%x",r[4]); fail_if(r[4] != 0xFB);
fail_if(r[5] != 0xFA,"was 0x%x",r[5]); fail_if(r[5] != 0xFA);
fail_if(r[6] != 0xF9,"was 0x%x",r[6]); fail_if(r[6] != 0xF9);
fail_if(r[7] != 0xF8,"was 0x%x",r[7]); fail_if(r[7] != 0xF8);
} }
END_TEST END_TEST
@@ -392,7 +392,7 @@ START_TEST (test_unpack64_be_1)
v = uc_unpack_64_be(r); v = uc_unpack_64_be(r);
fail_if(v != 0x1122334455667788ULL,"was 0x%llx",v); fail_if(v != 0x1122334455667788ULL);
} }
END_TEST END_TEST
@@ -403,7 +403,7 @@ START_TEST (test_unpack64_be_2)
v = uc_unpack_64_be(r); v = uc_unpack_64_be(r);
fail_if(v != 0xFFFEFDFCFBFAF9F8ULL,"was 0x%llx",v); fail_if(v != 0xFFFEFDFCFBFAF9F8ULL);
} }
END_TEST END_TEST
+1 -1
View File
@@ -10,7 +10,7 @@ START_TEST (test_ratelimit_1)
uc_ratelimit_init(&r, 30, 2); uc_ratelimit_init(&r, 30, 2);
for (i = 0; i < 30; i++) { for (i = 0; i < 30; i++) {
fail_if(!uc_ratelimit_allow(&r, now), "i = %d", i); fail_if(!uc_ratelimit_allow(&r, now));
} }
fail_if(uc_ratelimit_allow(&r, now)); fail_if(uc_ratelimit_allow(&r, now));
} }
+25 -25
View File
@@ -18,8 +18,8 @@ START_TEST (test_read_file_non_existing_file)
content = uc_read_file("non existing file 123765", &len, 1000000000); content = uc_read_file("non existing file 123765", &len, 1000000000);
saved_errno = errno; saved_errno = errno;
fail_if(content != NULL); ck_assert_ptr_null(content);
fail_if(saved_errno == 0); ck_assert_int_ne(saved_errno, 0);
} }
END_TEST END_TEST
@@ -31,20 +31,20 @@ START_TEST (test_read_file_simple)
ssize_t rc; ssize_t rc;
int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0664); int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0664);
fail_if(fd == -1); ck_assert_int_ne(fd, -1);
rc = write(fd, "hello", 5); rc = write(fd, "hello", 5);
fail_if(rc != 5, "rc was %ld", (long)rc); ck_assert_int_eq(rc, 5);
close(fd); close(fd);
content = uc_read_file(filename, &len, 1000000000); content = uc_read_file(filename, &len, 1000000000);
unlink(filename); unlink(filename);
fail_if(content == NULL); ck_assert_ptr_nonnull(content);
fail_if(len != 5); ck_assert_uint_eq(len, 5);
fail_if(strlen(content) != 5); ck_assert_uint_eq(strlen(content), 5);
fail_if(strcmp("hello", content) != 0); ck_assert_str_eq("hello", content);
free(content); free(content);
} }
END_TEST END_TEST
@@ -61,7 +61,7 @@ START_TEST (test_read_file_greater_than_max)
fail_if(fd == -1); fail_if(fd == -1);
rc = write(fd, "hello", 5); rc = write(fd, "hello", 5);
fail_if(rc != 5, "rc was %ld", (long)rc); fail_if(rc != 5);
close(fd); close(fd);
@@ -69,8 +69,8 @@ START_TEST (test_read_file_greater_than_max)
saved_errno = errno; saved_errno = errno;
unlink(filename); unlink(filename);
fail_if(content != NULL); ck_assert_ptr_null(content);
fail_if(saved_errno != EMSGSIZE, "was %d", saved_errno); ck_assert_int_eq(saved_errno, EMSGSIZE);
} }
END_TEST END_TEST
@@ -87,16 +87,16 @@ START_TEST (test_read_file_boundary)
fail_if(fd == -1); fail_if(fd == -1);
rc = write(fd, buf, sizeof buf); rc = write(fd, buf, sizeof buf);
fail_if(rc != sizeof buf, "rc was %ld", (long)rc); ck_assert_uint_eq(rc, sizeof buf);
close(fd); close(fd);
content = uc_read_file(filename, &len, 1000000000); content = uc_read_file(filename, &len, 1000000000);
unlink(filename); unlink(filename);
fail_if(content == NULL); ck_assert_ptr_nonnull(content);
fail_if(len != sizeof buf); ck_assert_uint_eq(len, sizeof buf);
fail_if(strcmp("foobar", &content[1022]) != 0); ck_assert_str_eq("foobar", &content[1022]);
free(content); free(content);
} }
END_TEST END_TEST
@@ -107,10 +107,10 @@ START_TEST (test_read_file_devnull)
size_t len = 123; size_t len = 123;
content = uc_read_file("/dev/null", &len, 1024); content = uc_read_file("/dev/null", &len, 1024);
fail_if(content == NULL); ck_assert_ptr_nonnull(content);
fail_if(len != 0); ck_assert_uint_eq(len, 0);
free(content); free(content);
} }
END_TEST END_TEST
@@ -125,14 +125,14 @@ START_TEST (test_read_file_too_big)
fail_if(fd == -1); fail_if(fd == -1);
rc = write(fd, "hello", 5); rc = write(fd, "hello", 5);
fail_if(rc != 5, "rc was %ld", (long)rc); fail_if(rc != 5);
close(fd); close(fd);
content = uc_read_file(filename, &len, 4); content = uc_read_file(filename, &len, 4);
fail_if(errno != EMSGSIZE); ck_assert_int_eq(errno, EMSGSIZE);
fail_if(content != NULL); ck_assert_ptr_null(content);
unlink(filename); unlink(filename);
} }
@@ -147,18 +147,18 @@ START_TEST (test_read_file_big)
ssize_t rc; ssize_t rc;
int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0664); int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0664);
fail_if(fd == -1); ck_assert_int_ne(fd, -1);
memset(buf, 'a', sizeof buf); memset(buf, 'a', sizeof buf);
rc = write(fd, buf, sizeof buf); rc = write(fd, buf, sizeof buf);
fail_if(rc != sizeof buf, "rc was %ld", (long)rc); ck_assert_uint_eq(rc, sizeof buf);
close(fd); close(fd);
content = uc_read_file(filename, &len, 4096*16); content = uc_read_file(filename, &len, 4096*16);
fail_if(content == NULL); fail_if(content == NULL);
fail_if(len != sizeof buf); ck_assert_uint_eq(len, sizeof buf);
fail_if(memcmp(content, buf, sizeof buf) != 0); ck_assert_int_eq(memcmp(content, buf, sizeof buf), 0);
free(content); free(content);
+1 -1
View File
@@ -82,7 +82,7 @@ START_TEST (test_restart_counter_garble)
ck_assert_int_eq(0, uc_restart_counter_get(&cnt)); ck_assert_int_eq(0, uc_restart_counter_get(&cnt));
rc = uc_restart_counter_init(&cnt, FILE_NAME, 0); rc = uc_restart_counter_init(&cnt, FILE_NAME, 0);
fail_if(rc != UC_RC_OK, "%d", rc); fail_if(rc != UC_RC_OK);
ck_assert_int_eq(1, uc_restart_counter_get(&cnt)); ck_assert_int_eq(1, uc_restart_counter_get(&cnt));
} }