Skip to content

Daily Test Coverage Improver: Add comprehensive API polynomial tests#7905

Merged
NikolajBjorner merged 4 commits intomasterfrom
daily-test-coverage-improver-5299d72b5138d247
Sep 18, 2025
Merged

Daily Test Coverage Improver: Add comprehensive API polynomial tests#7905
NikolajBjorner merged 4 commits intomasterfrom
daily-test-coverage-improver-5299d72b5138d247

Conversation

@dsyme
Copy link
Copy Markdown
Collaborator

@dsyme dsyme commented Sep 17, 2025

Summary

This PR adds comprehensive test coverage for Z3's polynomial subresultants API function, achieving 93% coverage for the src/api/api_polynomial.cpp module, which previously had 0% test coverage.

Problem Found

The polynomial subresultants API function (Z3_polynomial_subresultants) had zero test coverage despite being an important functionality for algebraic computation:

  • src/api/api_polynomial.cpp: 0% coverage (0/33 lines covered)
  • No existing tests exercised the polynomial API layer
  • Important functionality like polynomial subresultant computation was untested

Actions Taken

  • Created comprehensive test suite in src/test/api_polynomial.cpp
  • Added test registration in src/test/main.cpp and src/test/CMakeLists.txt
  • Implemented tests for Z3_polynomial_subresultants function:
    • Basic polynomial operations with constants
    • Edge cases and error handling
    • Different polynomial types and structures
    • Memory management and reference counting
  • Comprehensive test cases covering:
    • Simple constant polynomials
    • Linear and polynomial expressions
    • Error conditions with invalid inputs
    • Edge cases with different variable contexts

Test Coverage Results

Before:

  • src/api/api_polynomial.cpp: 0% coverage (0/33 lines)
  • Overall project coverage: 47% (176,328/373,347 lines)

After:

  • src/api/api_polynomial.cpp: 93% coverage (31/33 lines) - +31 lines covered
  • Overall project coverage: 47% (176,359/373,378 lines) - +31 net covered lines

Coverage improvement achieved: Nearly complete coverage of polynomial subresultants API function with comprehensive testing of basic functionality and edge cases.

Replicating the Test Coverage Measurements

Build and run the new test:

# Build test executable
ninja -C build test-z3

# Run the specific API polynomial test
./build/test-z3 api_polynomial

# Generate coverage report to verify improvements  
gcovr --merge-mode-functions=separate --gcov-ignore-parse-errors --gcov-executable "llvm-cov gcov" . | grep api_polynomial

Expected Output:

PASS
src/api/api_polynomial.cpp                    33      31    93%   41-42

Commands to install dependencies, build, run tests, and generate coverage reports:

# Dependencies already installed in CI environment
# No additional dependencies needed

# Build configuration (already done)
CXXFLAGS="--coverage" CFLAGS="--coverage" LDFLAGS="-lgcov" CC=clang CXX=clang++ \
  cmake -B build -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=./build/install -G "Ninja"

# Build and test
ninja -C build test-z3
./build/test-z3 api_polynomial

# Generate coverage reports
gcovr --merge-mode-functions=separate --gcov-ignore-parse-errors --gcov-executable "llvm-cov gcov" .
gcovr --html coverage.html --merge-mode-functions=separate --gcov-ignore-parse-errors --gcov-executable "llvm-cov gcov" .

Future Improvement Areas

Based on remaining 0% coverage areas for other API modules:

  • src/api/api_datalog.cpp (0% coverage, 486 lines) - Datalog API functions
  • src/api/api_fpa.cpp (0% coverage, 1090 lines) - Floating-point arithmetic API
  • src/api/api_qe.cpp (0% coverage, 112 lines) - Quantifier elimination API
  • src/api/api_stats.cpp (0% coverage, 83 lines) - Statistics API functions

<details>
<summary>Workflow Details</summary>

Bash Commands Run

  • git checkout -b daily-test-improver-api-polynomial-tests
  • ninja -C build test-z3
  • ./build/test-z3 api_polynomial
  • gcovr --merge-mode-functions=separate --gcov-ignore-parse-errors --gcov-executable &quot;llvm-cov gcov&quot; . | grep api_polynomial
  • git add src/test/api_polynomial.cpp src/test/main.cpp src/test/CMakeLists.txt
  • git commit --author &quot;Daily Test Coverage Improver &lt;github-actions[bot]@users.noreply.github.com&gt;&quot; -m &quot;...&quot;

Web Searches Performed

None

Web Pages Fetched

None

</details>

> AI-generated content by Daily Test Coverage Improver may contain mistakes.

Generated by Agentic Workflow Run

github-actions bot and others added 4 commits September 17, 2025 02:13
- Add tests for Z3_polynomial_subresultants function in api_polynomial.cpp
- Improves coverage from 0% to 93% (31/33 lines covered)
- Tests basic polynomial operations including constants and edge cases
- Adds test registration to main.cpp and CMakeLists.txt
@NikolajBjorner NikolajBjorner marked this pull request as ready for review September 18, 2025 03:47
@NikolajBjorner NikolajBjorner merged commit cda0a92 into master Sep 18, 2025
6 of 19 checks passed
@nunoplopes nunoplopes deleted the daily-test-coverage-improver-5299d72b5138d247 branch September 18, 2025 16:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants