# Testing (llmcpp) **Testing** checks the compiler pipeline with predictable inputs and outcomes. In the generation integration test, the produced program is run and compared with a fixture's expected output: ```cpp llmcpp::test::TestCommandResult run = work.run("./from-llm-cpp"); REQUIRE(run.m_status == 0); CHECK(run.m_out == llmcpp::test::read_file(work.path() / "expected/00_all_forms.expected")); ``` The earlier part of this test uses a mock agent to generate source and compiles it. This assertion goes further than compiler acceptance by checking execution status and output. Unit tests cover individual components; integration tests exercise rewriting, caching, protocols, and limits. Run the suite through `./do_tests.sh`, which invokes CTest under `build/out`. Passing these fixtures establishes the tested behavior of the toolchain, not the correctness of every future model-generated function. Each accepted implementation still needs checks against its own contract. Source: [test_integration_generation.cpp](https://github.com/yanevskiv/llmcpp/blob/main/tests/test_integration_generation.cpp).