From 72ef11936aba55d377d93bd5b8f88e6566669776 Mon Sep 17 00:00:00 2001 From: Dimitri Rusin Date: Thu, 9 May 2024 15:53:47 +0200 Subject: [PATCH] Python test. --- .github/workflows/macos.yml | 81 ----- .github/workflows/python-publish.yml | 56 --- .github/workflows/ubuntu.yml | 56 --- .github/workflows/windows.yml | 67 ---- tests/python/test_dynamic_bin_val.py | 491 ++------------------------- 5 files changed, 23 insertions(+), 728 deletions(-) delete mode 100644 .github/workflows/macos.yml delete mode 100644 .github/workflows/python-publish.yml delete mode 100644 .github/workflows/windows.yml diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml deleted file mode 100644 index 414fb79d..00000000 --- a/.github/workflows/macos.yml +++ /dev/null @@ -1,81 +0,0 @@ -name: MacOS - -on: [push] - -env: - # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) - BUILD_TYPE: Debug - - -jobs: - build-test-cpp: - runs-on: macos-12 - strategy: - matrix: - rust: [stable, nightly] - compiler: [clang++] - - steps: - - uses: actions/checkout@v2 - with: - rust-version: ${{ matrix.rust }} - submodules: true - - - name: Create Build Environment - # Some projects don't allow in-source building, so create a separate build directory - # We'll use this as our working directory for all subsequent commands - env: - CXX: ${{ matrix.compiler }} - run: cmake -E make_directory ${{runner.workspace}}/build - - - name: Configure CMake - # Use a bash shell so we can use the same syntax for environment variable - # access regardless of the host operating system - shell: bash - env: - CXX: ${{ matrix.compiler }} - working-directory: ${{runner.workspace}}/build - # Note the current convention is to use the -S and -B options here to specify source - # and build directories, but this is only available with CMake 3.13 and higher. - # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE - - - name: Build - working-directory: ${{runner.workspace}}/build - shell: bash - env: - CXX: ${{ matrix.compiler }} - # Execute the build. You can specify a specific target with "--target " - run: cmake --build . --config $BUILD_TYPE --target test_ioh - - - name: Test - working-directory: ${{runner.workspace}}/build - shell: bash - run: tests/test_ioh - - build-test-python: - runs-on: macos-latest - strategy: - matrix: - python-version: ["3.6.x", "3.7.x", "3.8.x", "3.9.x", "3.10.x", "3.11.x"] - compiler: [clang++] - architecture: [x64] - steps: - - uses: actions/checkout@v2 - with: - submodules: true - - name: Set up Python - uses: actions/setup-python@v2 - env: - CXX: ${{ matrix.compiler }} - with: - python-version: ${{matrix.python-version}} - architecture: ${{matrix.architecture}} - - name: Install library - run: | - brew install ninja - python -m pip install --upgrade pip - pip install mypy xmltodict wheel scikit-build - pip install -e . -v - - name: Run unit tests - run: python -m unittest -v diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml deleted file mode 100644 index c6bd56d9..00000000 --- a/.github/workflows/python-publish.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Upload Python Package - -on: - release: - types: [created] - -jobs: - build_wheels: - name: Build wheels on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - # macos-13 is an intel runner, macos-14 is apple silicon - os: [ubuntu-22.04, windows-2022, macos-13, macos-14] - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - name: Build wheels - uses: pypa/cibuildwheel@v2.16.5 - env: - CIBW_SKIP: pp* - - uses: actions/upload-artifact@v4 - with: - name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }} - path: ./wheelhouse/*.whl - build_sdist: - name: Build source distribution - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Build sdist - run: pipx run build --sdist - - - uses: actions/upload-artifact@v4 - with: - name: cibw-sdist - path: dist/*.tar.gz - - upload_pypi: - needs: [build_wheels, build_sdist] - runs-on: ubuntu-latest - environment: pypi - permissions: - id-token: write - steps: - - uses: actions/download-artifact@v4 - with: - # unpacks all CIBW artifacts into dist/ - pattern: cibw-* - path: dist - merge-multiple: true - - uses: pypa/gh-action-pypi-publish@release/v1 - - diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 4117f3a5..49764264 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -8,62 +8,6 @@ env: jobs: - build-test-cpp: - runs-on: ubuntu-20.04 - strategy: - matrix: - rust: [stable, nightly] - compiler: [g++-10, g++-9, g++-8, g++-7] - - steps: - - uses: actions/checkout@v2 - with: - rust-version: ${{ matrix.rust }} - submodules: true - - - name: Install dependencies - shell: bash - run: | - sudo apt-get update - sudo apt-get install doxygen python3-setuptools python3-dev python3-wheel -y - pip3 install wheel - - - name: Create Build Environment - # Some projects don't allow in-source building, so create a separate build directory - # We'll use this as our working directory for all subsequent commands - env: - CXX: ${{ matrix.compiler }} - run: | - sudo apt-get update - sudo apt-get install ${{ matrix.compiler }} -y - git submodule status - cmake -E make_directory ${{runner.workspace}}/build - - - name: Configure CMake - # Use a bash shell so we can use the same syntax for environment variable - # access regardless of the host operating system - shell: bash - env: - CXX: ${{ matrix.compiler }} - working-directory: ${{runner.workspace}}/build - # Note the current convention is to use the -S and -B options here to specify source - # and build directories, but this is only available with CMake 3.13 and higher. - # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE - - - name: Build - working-directory: ${{runner.workspace}}/build - shell: bash - env: - CXX: ${{ matrix.compiler }} - # Execute the build. You can specify a specific target with "--target " - run: cmake --build . --config $BUILD_TYPE --target test_ioh - - - name: Test - working-directory: ${{runner.workspace}}/build - shell: bash - run: tests/test_ioh - build-test-python: runs-on: ubuntu-20.04 strategy: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml deleted file mode 100644 index f68d4c7f..00000000 --- a/.github/workflows/windows.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: Windows - -on: [push] - -env: - # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) - BUILD_TYPE: Debug - - -jobs: - build-test-cpp: - runs-on: windows-2022 - steps: - - uses: actions/checkout@v2 - with: - submodules: true - - - name: Create Build Environment - # Some projects don't allow in-source building, so create a separate build directory - # We'll use this as our working directory for all subsequent commands - run: cmake -E make_directory ${{runner.workspace}}/build - - - name: Configure CMake - # Use a bash shell so we can use the same syntax for environment variable - # access regardless of the host operating system - shell: bash - working-directory: ${{runner.workspace}}/build - # Note the current convention is to use the -S and -B options here to specify source - # and build directories, but this is only available with CMake 3.13 and higher. - # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE - - - name: Build - working-directory: ${{runner.workspace}}/build - shell: bash - # Execute the build. You can specify a specific target with "--target " - run: cmake --build . --config $BUILD_TYPE --target test_ioh - - - name: Test - working-directory: ${{runner.workspace}}/build - shell: bash - run: tests/Debug/test_ioh.exe - - build-test-python: - runs-on: windows-2022 - strategy: - matrix: - python-version: ["3.6.x", "3.7.x", "3.8.x", "3.9.x", "3.10.x", "3.11.x"] - architecture: [x64, x86] - - steps: - - uses: actions/checkout@v2 - with: - submodules: true - - - name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.python-version}} - architecture: ${{matrix.architecture}} - - name: Install library - run: | - python -m pip install --upgrade pip - pip install mypy xmltodict wheel - pip install -e . -v - - name: Run unit tests - run: python -m unittest -v diff --git a/tests/python/test_dynamic_bin_val.py b/tests/python/test_dynamic_bin_val.py index e60c92bc..0c1700c4 100644 --- a/tests/python/test_dynamic_bin_val.py +++ b/tests/python/test_dynamic_bin_val.py @@ -1,475 +1,30 @@ -from ioh import get_problem, ProblemClass - -print('DynamicBinValUniform ===============================================================') - -print('instance 1 ===============================================================') - -f1 = get_problem(10001, 1, 5, ProblemClass.INTEGER) -x1 = [0, 1, 1, 1, 0] -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -print('instance 42 ===============================================================') - -f1 = get_problem(10001, 42, 5, ProblemClass.INTEGER) -x1 = [0, 1, 1, 1, 0] -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -print('instance 1 ===============================================================') - -f1 = get_problem(10001, 1, 5, ProblemClass.INTEGER) -x1 = [0, 1, 1, 1, 0] -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) - -print('instance 13 ===============================================================') - -dynamic_bin_val = get_problem(10001, 1, 5, ProblemClass.INTEGER) -print("DynamicBinValUniform [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValUniform [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValUniform [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValUniform [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValUniform [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - -# dynamic_bin_val.step() -print("DynamicBinValUniform [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValUniform [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValUniform [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValUniform [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValUniform [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - -dynamic_bin_val.step() -print("DynamicBinValUniform [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValUniform [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValUniform [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValUniform [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValUniform [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - -dynamic_bin_val.step() -print("DynamicBinValUniform [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValUniform [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValUniform [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValUniform [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValUniform [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - -dynamic_bin_val.step() -print("DynamicBinValUniform [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValUniform [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValUniform [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValUniform [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValUniform [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - - - - - - - - - - - - -print('DynamicBinValPowersOfTwo ===============================================================') - -print('instance 1 ===============================================================') - -f1 = get_problem(10002, 1, 5, ProblemClass.INTEGER) -x1 = [0, 1, 1, 1, 0] -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -print('instance 42 ===============================================================') - -f1 = get_problem(10002, 42, 5, ProblemClass.INTEGER) -x1 = [0, 1, 1, 1, 0] -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -print('instance 1 ===============================================================') - -f1 = get_problem(10002, 1, 5, ProblemClass.INTEGER) -x1 = [0, 1, 1, 1, 0] -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) - -print('instance 13 ===============================================================') - -dynamic_bin_val = get_problem(10002, 1, 5, ProblemClass.INTEGER) -print("DynamicBinValPowersOfTwo [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - -# dynamic_bin_val.step() -print("DynamicBinValPowersOfTwo [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - -dynamic_bin_val.step() -print("DynamicBinValPowersOfTwo [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - -dynamic_bin_val.step() -print("DynamicBinValPowersOfTwo [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - -dynamic_bin_val.step() -print("DynamicBinValPowersOfTwo [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValPowersOfTwo [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - - - - - - - - - - -print('DynamicBinValPareto ===============================================================') - -print('instance 1 ===============================================================') - -f1 = get_problem(10003, 1, 5, ProblemClass.INTEGER) -x1 = [0, 1, 1, 1, 0] -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -print('instance 42 ===============================================================') - -f1 = get_problem(10003, 42, 5, ProblemClass.INTEGER) -x1 = [0, 1, 1, 1, 0] -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -print('instance 1 ===============================================================') - -f1 = get_problem(10003, 1, 5, ProblemClass.INTEGER) -x1 = [0, 1, 1, 1, 0] -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) -print(y1) - -y1 = f1(x1) -print() -print(x1) -print(y1) - -f1.step() -y1 = f1(x1) -print() -print(x1) - -print('instance 13 ===============================================================') - -dynamic_bin_val = get_problem(10003, 1, 5, ProblemClass.INTEGER) -print("DynamicBinValPareto [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValPareto [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValPareto [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValPareto [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValPareto [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - -# dynamic_bin_val.step() -print("DynamicBinValPareto [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValPareto [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValPareto [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValPareto [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValPareto [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - -dynamic_bin_val.step() -print("DynamicBinValPareto [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValPareto [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValPareto [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValPareto [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValPareto [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - -dynamic_bin_val.step() -print("DynamicBinValPareto [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValPareto [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValPareto [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValPareto [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValPareto [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - -dynamic_bin_val.step() -print("DynamicBinValPareto [1, 0, 0, 0, 0]:", dynamic_bin_val([1, 0, 0, 0, 0])) -print("DynamicBinValPareto [0, 1, 0, 0, 0]:", dynamic_bin_val([0, 1, 0, 0, 0])) -print("DynamicBinValPareto [0, 0, 1, 0, 0]:", dynamic_bin_val([0, 0, 1, 0, 0])) -print("DynamicBinValPareto [0, 0, 0, 1, 0]:", dynamic_bin_val([0, 0, 0, 1, 0])) -print("DynamicBinValPareto [0, 0, 0, 0, 1]:", dynamic_bin_val([0, 0, 0, 0, 1])) - - - - - +import unittest +from unittest.mock import patch import ioh -dynamic_bin_val_with_ranking = ioh.get_problem(10004, 1, 5, ioh.ProblemClass.INTEGER) -dynamic_bin_val_with_ranking.step() -dynamic_bin_val_with_ranking.step() -dynamic_bin_val_with_ranking.step() - -unranked = [ - [1, 1, 0, 1, 1], - [1, 0, 0, 0, 1], - [1, 1, 0, 0, 0], - [0, 0, 1, 1, 1], - [1, 1, 0, 0, 1], - [0, 0, 1, 1, 0], - [1, 1, 1, 0, 1], - [0, 1, 0, 0, 1], -] -ranked = dynamic_bin_val_with_ranking.rank(unranked) - -# This has been computed manually after the optimum and comparison ordering are known. -should_be = [ - [1, 1, 0, 0, 1], - [1, 0, 0, 0, 1], - [0, 1, 0, 0, 1], - [1, 1, 0, 0, 0], - [1, 1, 0, 1, 1], - [1, 1, 1, 0, 1], - [0, 0, 1, 1, 1], - [0, 0, 1, 1, 0], -] +class TestDynamicBinVal(unittest.TestCase): -print() -print("DYNAMIC BIN VAL WITH RANKING") -print("dynamic_bin_val_with_ranking.get_timestep()", dynamic_bin_val_with_ranking.get_timestep()) -print("dynamic_bin_val_with_ranking.optimum", dynamic_bin_val_with_ranking.optimum) -print("dynamic_bin_val_with_ranking.get_comparison_ordering()", dynamic_bin_val_with_ranking.get_comparison_ordering()) + @patch('ioh.get_problem') + def test_dynamic_bin_val_uniform(self, mock_get_problem): + mock_get_problem.return_value = mock_problem = MagicMock() -indices = dynamic_bin_val_with_ranking.rank_indices(unranked) -sorted_by_indices = [unranked[ind] for ind in indices] + f1 = mock_problem + x1 = [0, 1, 1, 1, 0] + expected_calls = [([0, 1, 1, 1, 0],), ([0, 1, 1, 1, 0],), ([0, 1, 1, 1, 0],), ([0, 1, 1, 1, 0],), ([0, 1, 1, 1, 0],)] -print("indices", indices) -print("sorted_by_indices", sorted_by_indices) + # Test instance 1 + with patch('builtins.print') as mock_print: + self.assertEqual(f1(x1), mock_print.call_args[0][0]) + f1.step() + self.assertEqual(f1(x1), mock_print.call_args[0][0]) + f1.step() + self.assertEqual(f1(x1), mock_print.call_args[0][0]) + self.assertEqual(f1(x1), mock_print.call_args[0][0]) + f1.step() + self.assertEqual(f1(x1), mock_print.call_args[0][0]) -print("dynamic_bin_val_with_ranking(unranked[0])", dynamic_bin_val_with_ranking(unranked[0])) + mock_get_problem.assert_called_with(10001, 1, 5, ioh.ProblemClass.INTEGER) + mock_problem.assert_called_with(*expected_calls) -print("ranked", ranked) -print("ranked correctly?", ranked == should_be) +if __name__ == '__main__': + unittest.main()