dte test coverage


Directory: ./
File: test/sizes.h
Date: 2025-10-16 19:09:21
Exec Total Coverage
Lines: 0 10 0.0%
Functions: 0 1 0.0%
Branches: 0 4 0.0%

Line Branch Exec Source
1 #ifndef TEST_SIZES_H
2 #define TEST_SIZES_H
3
4 #include "command/cache.h"
5 #include "command/run.h"
6 #include "compiler.h"
7 #include "editor.h"
8 #include "editorconfig/editorconfig.h"
9 #include "editorconfig/ini.h"
10 #include "indent.h"
11 #include "load-save.h"
12 #include "regexp.h"
13 #include "selection.h"
14 #include "spawn.h"
15 #include "syntax/syntax.h"
16 #include "terminal/parse.h"
17 #include "terminal/terminal.h"
18 #include "ui.h"
19 #include "util/exitcode.h"
20
21 #define entry(type, level) { \
22 .name = #type, \
23 .size = sizeof(type), \
24 .indent_level = level \
25 }
26
27 #define S(type) entry(type, 0)
28 #define S1(type) entry(type, 1)
29 #define S2(type) entry(type, 2)
30 #define DIVIDER {NULL, 0, 0}
31
32 static const struct {
33 const char *name;
34 unsigned int size;
35 uint8_t indent_level;
36 } ssizes[] = {
37 S(EditorState),
38 S1(Terminal),
39 S2(TermOutputBuffer),
40 S2(TermInputBuffer),
41 S1(ErrorBuffer),
42 S1(StyleMap),
43 S2(TermStyle),
44 S1(CommandLine),
45 S2(CompletionState),
46 S1(Clipboard),
47 S1(FileHistory),
48 S1(FileLocksContext),
49 S1(GlobalOptions),
50 S1(History),
51 S1(MacroRecorder),
52 S1(MessageList),
53 S1(ModeHandler),
54 S1(SearchState),
55 S1(SyntaxLoader),
56 S1(TagFile),
57
58 DIVIDER,
59 S(Buffer),
60 S1(FileInfo),
61 S1(Change),
62 S1(LocalOptions),
63
64 DIVIDER,
65 S(View),
66 S1(BlockIter),
67
68 DIVIDER,
69 S(Window),
70 S(Frame),
71 S(Block),
72
73 DIVIDER,
74 S(Command),
75 S(CachedCommand),
76 S1(CommandArgs),
77 S(CommandRunner),
78 S(CommandSet),
79
80 DIVIDER,
81 S(Syntax),
82 S(State),
83 S(Condition),
84 S1(ConditionData),
85 S1(Action),
86 S(HeredocState),
87 S(StringList),
88
89 DIVIDER,
90 S(Compiler),
91 S(EditorConfigOptions),
92 S(ErrorFormat),
93 S(FileHistoryEntry),
94 S(FileLocation),
95 S(FileSaveContext),
96 S(HistoryEntry),
97 S(IndentInfo),
98 S(IniParser),
99 S(InternedRegexp),
100 S1(regex_t),
101 S(Message),
102 S(ScreenState),
103 S(SelectionInfo),
104 S(SpawnContext),
105 S(Tag),
106 S(TermControlParams),
107 S(TermCursorStyle),
108 };
109
110 /*
111 For a list of typedef'd struct names, see:
112
113 make tags && readtags -lF '(if
114 (and (eq? $kind "t") (prefix? $typeref "struct"))
115 (list $name #t)
116 #f
117 )'
118
119 See also:
120 • make print-struct-sizes
121 • build/test/test -h
122 • build/test/test -s
123 */
124
125 static inline ExitCode print_struct_sizes(void)
126 {
127 puts (
128 "\n"
129 "---------------------------------\n"
130 " Struct Size\n"
131 "---------------------------------"
132 );
133
134 for (size_t i = 0; i < ARRAYLEN(ssizes); i++) {
135 const char *name = ssizes[i].name;
136 int indent = 3 * ssizes[i].indent_level;
137 if (name) {
138 printf("%*s %-*s %5u\n", indent, "", 24 - indent, name, ssizes[i].size);
139 } else {
140 putchar('\n');
141 }
142 }
143
144 putchar('\n');
145 return EC_OK;
146 }
147
148 #endif
149