< Summary - Backend C Tests - Coverage Report (WSL)

Information
Class: test_machine_service_real_c
Assembly: src.backend.tests.unit.database
File(s): ./src/backend/tests/unit/database/test_machine_service_real.c
Line coverage
94%
Covered lines: 54
Uncovered lines: 3
Coverable lines: 57
Total lines: 122
Line coverage: 94.7%
Branch coverage
91%
Covered branches: 11
Total branches: 12
Branch coverage: 91.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 2/18/2026 - 10:50:55 PM Line coverage: 94.7% (54/57) Branch coverage: 91.6% (11/12) Total lines: 122 2/18/2026 - 10:50:55 PM Line coverage: 94.7% (54/57) Branch coverage: 91.6% (11/12) Total lines: 122

File(s)

./src/backend/tests/unit/database/test_machine_service_real.c

#LineLine coverage
 1#include <stdarg.h>
 2#include <stddef.h>
 3#include <setjmp.h>
 4#include <cmocka.h>
 5#include <string.h>
 6#include <stdio.h>
 7#include <stdlib.h>
 8
 9// PostgreSQL Definitions
 10#define LIBPQ_FE_H
 11#define PGconn void
 12#define PGresult void
 13#define PGRES_TUPLES_OK 2
 14#define PGRES_FATAL_ERROR 3
 15
 16#include "machine_service.h"
 17#include "db_connection.h"
 18
 19// Logger mock
 020void LOG_INFO(const char *format, ...) {}
 021void LOG_ERROR(const char *format, ...) {}
 22
 23// Mock State
 24static DBConnection mock_conn;
 25static int mock_acquire_success = 1;
 26static int mock_result_status = PGRES_TUPLES_OK;
 27static int mock_ntuples = 1;
 28
 29// Mock DB functions
 430DBConnection *db_pool_acquire(void) {
 431    if (mock_acquire_success) {
 332        mock_conn.pg_conn = (void *)0x1234;
 333        return &mock_conn;
 34    }
 135    return NULL;
 36}
 37
 338void db_pool_release(DBConnection *conn) {}
 39
 340void *PQexec(void *conn, const char *query) {
 341    return (void *)0x5678;
 42}
 43
 344int PQresultStatus(const void *res) {
 345    return mock_result_status;
 46}
 47
 348void PQclear(void *res) {}
 49
 250int PQntuples(const void *res) {
 251    return mock_ntuples;
 52}
 53
 3054char *PQgetvalue(const void *res, int row, int field) {
 3055    if (field == 0) return "1"; // ID
 2456    if (field == 1) return "CNC-01"; // Name
 1857    if (field == 2) return "X100"; // Model
 1258    if (field == 3) return "FloorB"; // Location
 659    if (field == 4) return "running"; // Status
 060    return "";
 61}
 62
 163char *PQerrorMessage(const void *conn) {
 164    return "Machine Mock Error";
 65}
 66
 67/* ====================================================================
 68 * TEST CASES
 69 * ==================================================================== */
 70
 171static void test_get_all_machines_paths(void **state) {
 172    mock_acquire_success = 1;
 173    mock_result_status = PGRES_TUPLES_OK;
 174    mock_ntuples = 1;
 75
 76    Machine items[5];
 177    int count = get_all_machines(items, 5);
 178    assert_int_equal(count, 1);
 179    assert_string_equal(items[0].name, "CNC-01");
 80
 81    // Test truncation
 182    mock_ntuples = 10;
 183    count = get_all_machines(items, 5);
 184    assert_int_equal(count, 5);
 85
 86    // Acquire Fail
 187    mock_acquire_success = 0;
 188    count = get_all_machines(items, 5);
 189    assert_int_equal(count, 0);
 90
 91    // Query Fail
 192    mock_acquire_success = 1;
 193    mock_result_status = PGRES_FATAL_ERROR;
 194    count = get_all_machines(items, 5);
 195    assert_int_equal(count, 0);
 96
 97    // Param fail
 198    assert_int_equal(get_all_machines(NULL, 5), 0);
 199    assert_int_equal(get_all_machines(items, 0), 0);
 1100}
 101
 1102static void test_get_machine_by_id_simple(void **state) {
 103    Machine m;
 1104    int res = get_machine_by_id(10, &m);
 1105    assert_int_equal(res, 0);
 1106    assert_int_equal(m.id, 10);
 1107    assert_int_equal(get_machine_by_id(1, NULL), -1);
 1108}
 109
 1110static void test_get_health_score(void **state) {
 1111    double score = get_machine_health_score(1);
 1112    assert_true(score > 0.0);
 1113}
 114
 1115int main(void) {
 1116    const struct CMUnitTest tests[] = {
 117        cmocka_unit_test(test_get_all_machines_paths),
 118        cmocka_unit_test(test_get_machine_by_id_simple),
 119        cmocka_unit_test(test_get_health_score),
 120    };
 1121    return cmocka_run_group_tests(tests, NULL, NULL);
 122}

Methods/Properties