File: gjs-test-misc.cpp

package info (click to toggle)
gjs 1.87.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 6,848 kB
  • sloc: cpp: 38,389; javascript: 31,953; ansic: 15,960; sh: 1,777; python: 791; xml: 137; makefile: 40
file content (64 lines) | stat: -rw-r--r-- 2,196 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
// SPDX-License-Identifier: MIT OR LGPL-2.0-or-later
// SPDX-FileCopyrightText: 2025 Philip Chimento <philip.chimento@gmail.com>

#include <config.h>

#include <string>

#include <glib.h>

#include "test/gjs-test-utils.h"
#include "util/misc.h"

namespace Gjs::Test {

static void statm_expected() {
    StatmParseResult result =
        parse_statm_file_rss("21601 1458 1376 73 0 2316 0\n");
    g_assert_ok(result);
    g_assert_cmpuint(result.unwrap(), ==, 1458);
}

static void statm_cutoff_line() {
    StatmParseResult result = parse_statm_file_rss("0 435");
    g_assert_ok(result);
    g_assert_cmpuint(result.unwrap(), ==, 435);
}

static void statm_max_value() {
    StatmParseResult result =
        parse_statm_file_rss("21601 18446744073709551615 1376 73 0 2316 0\n");
    g_assert_ok(result);
    g_assert_cmpuint(result.unwrap(), ==, G_MAXUINT64);
}

static void statm_failure_case(int*, const void* data) {
    auto* contents = static_cast<const char*>(data);
    g_assert_err(parse_statm_file_rss(contents));
}

void add_tests_for_misc_utils() {
    g_test_add_func("/misc/statm/expected", statm_expected);
    g_test_add_func("/misc/statm/cutoff-line", statm_cutoff_line);
    g_test_add_func("/misc/statm/max-value", statm_max_value);

#define ADD_STATM_FAILURE_CASE(path, contents)              \
    g_test_add("/misc/statm/" path, int, contents, nullptr, \
               statm_failure_case, nullptr)

    ADD_STATM_FAILURE_CASE("empty", "");
    ADD_STATM_FAILURE_CASE("empty-line", "\n");
    ADD_STATM_FAILURE_CASE("one-field", "21601\n");
    ADD_STATM_FAILURE_CASE("negative", "21601 -1458 1376 73 0 2316 0\n");
    ADD_STATM_FAILURE_CASE("junk-after-number", "21601 1458foobar 1376");
    ADD_STATM_FAILURE_CASE("non-numeric", "21601 foobar 1376 73 0 2316 0\n");
    ADD_STATM_FAILURE_CASE("exponential", "21601 1.23e4 1376 73 0 2316 0\n");
    ADD_STATM_FAILURE_CASE("too-big", "21601 18446744073709551616 1376 73 0");
    ADD_STATM_FAILURE_CASE("infinity", "21601 inf 1376 73 0");
    ADD_STATM_FAILURE_CASE("nan", "21601 NaN 1376 73 0");

#undef ADD_STATM_FAILURE_CASE
}

}  // namespace Gjs::Test