name: Run Tests
on:
  - push
  - workflow_dispatch
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Install
        run: |
          sudo apt-get install sox ninja-build
      - name: Build
        run: |
          cmake -S. -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug
          cmake --build build
      - name: Run tests
        run: |
          cmake --build build --target check
  test-fixed:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Install
        run: |
          sudo apt-get install sox ninja-build
      - name: Build
        run: |
          cmake -S. -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug -DFIXED_POINT=ON
          cmake --build build
      - name: Run tests
        run: |
          cmake --build build --target check
  python-tests:
    name: test with ${{ matrix.py }} on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: true
      matrix:
        py:
          - "3.13"
          - "3.12"
          - "3.11"
          - "3.10"
          - "3.9"
          - "3.8"
        os:
          - ubuntu-latest
          - macos-latest
          - windows-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup python for test ${{ matrix.py }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.py }}
      - name: Install sox
        if: ${{ startsWith(matrix.os, 'ubuntu') }}
        run: sudo apt-get install sox
      - name: Install tox
        run: python -m pip install tox-gh>=1.2
      - name: Setup test suite
        run: tox -vv --notest
      - name: Run test suite
        run: tox --skip-pkg-install
  pytest-editable:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Install
        run: |
          sudo apt-get install sox
          python -m pip install --upgrade pip
          pip install pytest memory_profiler
          pip install -e .
      - name: Run tests
        run: pytest
