Chatterino
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Test and Benchmark

Chatterino includes a set of unit tests and benchmarks. These can be built using cmake by adding the -DBUILD_TESTS=On and -DBUILD_BENCHMARKS=On flags respectively.

Adding your own test

  1. Create a new file for the file you're adding tests for. If you're creating tests for src/providers/emoji/Emojis.cpp, create tests/src/Emojis.cpp.
  2. Add the newly created file to tests/CMakeLists.txt in the test_SOURCES variable (see the comment near it)

See tests/src/Emojis.cpp for simple tests you can base your tests off of.

Read up on http://google.github.io/googletest/primer.html to figure out how GoogleTest works.

Building and running tests

mkdir build-tests
cd build-tests
cmake -DBUILD_TESTS=On ..
make
./bin/chatterino-test

Example output

[==========] Running 26 tests from 8 test suites.
[----------] Global test environment set-up.
[----------] 2 tests from AccessGuardLocker
[ RUN ] AccessGuardLocker.NonConcurrentUsage
[ OK ] AccessGuardLocker.NonConcurrentUsage (0 ms)
[ RUN ] AccessGuardLocker.ConcurrentUsage
[ OK ] AccessGuardLocker.ConcurrentUsage (686 ms)
[----------] 2 tests from AccessGuardLocker (686 ms total)
[----------] 4 tests from NetworkCommon
[ RUN ] NetworkCommon.parseHeaderList1
[ OK ] NetworkCommon.parseHeaderList1 (0 ms)
[ RUN ] NetworkCommon.parseHeaderListTrimmed
[ OK ] NetworkCommon.parseHeaderListTrimmed (0 ms)
[ RUN ] NetworkCommon.parseHeaderListColonInValue
...
[ RUN ] TwitchAccount.NotEnoughForMoreThanOneBatch
[ OK ] TwitchAccount.NotEnoughForMoreThanOneBatch (0 ms)
[ RUN ] TwitchAccount.BatchThreeParts
[ OK ] TwitchAccount.BatchThreeParts (0 ms)
[----------] 3 tests from TwitchAccount (2 ms total)
[----------] Global test environment tear-down
[==========] 26 tests from 8 test suites ran. (10297 ms total)
[ PASSED ] 26 tests.

Adding your own benchmark

  1. Create a new file for the file you're adding benchmark for. If you're creating benchmarks for src/providers/emoji/Emojis.cpp, create benchmarks/src/Emojis.cpp.
  2. Add the newly created file to benchmarks/CMakeLists.txt in the benchmark_SOURCES variable (see the comment near it)

See benchmarks/src/Emojis.cpp for simple benchmark you can base your benchmarks off of.

Building and running benchmarks

mkdir build-benchmarks
cd build-benchmarks
cmake -DBUILD_BENCHMARKS=On ..
make
./bin/chatterino-benchmark

Example output

2021-07-18T13:12:11+02:00
Running ./bin/chatterino-benchmark
Run on (12 X 4000 MHz CPU s)
CPU Caches:
L1 Data 32 KiB (x6)
L1 Instruction 32 KiB (x6)
L2 Unified 256 KiB (x6)
L3 Unified 15360 KiB (x1)
Load Average: 2.86, 3.08, 3.51
***WARNING*** CPU scaling is enabled, the benchmark real time measurements may be noisy and will incur extra overhead.
--------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------
BM_ShortcodeParsing 2394 ns 2389 ns 278933