It covers:
logger_default_default_cfg()logger_default_default_env()logger_default_create_logger()logger API and lifecycle entry points:
See logger_default_default_cfg() specifications
| WHEN | EXPECT |
|---|---|
logger_default_default_cfg() is called | returns a well-formed default logger_default_cfg_t;ret.append_newline == true |
logger_default adapter.See logger_default_default_env() specifications
env.stream == stream.env.time_ops == time_ops.env.adapter_mem == adapter_mem.env.port_env == *port_env.stream_t *osal_time_ops_t *osal_mem_ops_t *logger_env_t| WHEN | EXPECT |
|---|---|
logger_default_default_env(stream, time_ops, adapter_mem, port_env) is called with valid inputs | returns a logger_default_env_t such that env.stream == stream, env.time_ops == time_ops, env.adapter_mem == adapter_mem, and env.port_env == *port_env |
stream handle, borrowed time_ops table, or borrowed adapter_mem table.See logger_default_create_logger() specifications
out must not be NULL.cfg must not be NULL.env must not be NULL.LOGGER_STATUS_OK.NULL logger handle in *out.LOGGER_STATUS_INVALID for invalid argumentsLOGGER_STATUS_OOM on allocation failureout != NULL, leaves *out unchanged on failure.fake_streamfake_timefake_memory| WHEN | EXPECT |
|---|---|
logger_default_create_logger(out, cfg, env) is called with valid arguments | returns LOGGER_STATUS_OK;stores a non- NULL logger handle in *out |
out == NULL | returns LOGGER_STATUS_INVALID |
cfg == NULL and out != NULL | returns LOGGER_STATUS_INVALID;leaves *out unchanged |
env == NULL and out != NULL | returns LOGGER_STATUS_INVALID;leaves *out unchanged |
allocation required by logger_default_create_logger() fails | returns LOGGER_STATUS_OOM;leaves *out unchanged |
fake_memory.See logger_default_log() specifications
This private callback is exercised through:
on a logger previously created by logger_default_create_logger().
logger designates a valid logger instance previously created by logger_default_create_logger().0.message designates a valid null-terminated string.message must not be NULL.LOGGER_STATUS_OK.[YYYY-MM-DD HH:MM:SS UTC+0]0 corresponds to: [1970-01-01 00:00:00 UTC+0]message immediately after the trailing space of the timestamp prefix.append_newline == true, appends a trailing newline after the message.[timestamp error] instead of a formatted UTC+0 timestamp prefix.LOGGER_STATUS_INVALID if message == NULLLOGGER_STATUS_IO_ERROR when a required stream write fails or is partialLOGGER_STATUS_OK provided the fallback prefix is written successfully.fake_streamfake_timefake_memory| WHEN | EXPECT |
|---|---|
a logger_default-backed logger is created with append_newline == false, the injected time service returns epoch time 0, and logger_log(logger, "abc") is called | returns LOGGER_STATUS_OK;writes "[1970-01-01 00:00:00 UTC+0] abc" to the target stream |
a logger_default-backed logger is created with append_newline == true, the injected time service returns epoch time 0, and logger_log(logger, "abc") is called | returns LOGGER_STATUS_OK;writes "[1970-01-01 00:00:00 UTC+0] abc\n" to the target stream |
a logger_default-backed logger is created, the injected time service returns epoch time 0, and logger_log(logger, NULL) is called | returns LOGGER_STATUS_INVALID |
the underlying stream write operation returns STREAM_STATUS_IO_ERROR during logger_log(logger, "abc") | returns LOGGER_STATUS_IO_ERROR |
the injected time service returns OSAL_TIME_STATUS_ERROR during logger_log(logger, "abc") | returns LOGGER_STATUS_OK;writes "[timestamp error] abc" to the target stream |
logger borrower API on a concrete logger produced by logger_default_create_logger().fake_stream.fake_time.See logger_default_destroy() specifications
This private callback is exercised through:
on a logger previously created by logger_default_create_logger().
logger_destroy().NULL.fake_streamfake_timefake_memory| WHEN | EXPECT |
|---|---|
a logger_default-backed logger is created and later destroyed through logger_destroy(&logger) | releases backend-owned resources; destroys the public logger handle; sets logger to NULL |
logger lifecycle API.