diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9c4ccb8..cc97788 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,8 +15,8 @@ jobs: - name: Run Norminette run: make norm build: - name: build + check allowed functions - runs-on: macos-12 + name: check allowed functions + runs-on: macos-14 steps: - name: Checkout repository uses: actions/checkout@v4 @@ -24,17 +24,13 @@ jobs: submodules: recursive - name: Build push_swap run: make - - name: Clean push_swap - run: make fclean - name: Build checker run: make bonus - - name: Build push_swap - run: make - name: check allowed_functions run: test/check_allowed_functions.sh unit_test: name: unit_test - runs-on: macos-12 + runs-on: macos-14 steps: - name: Checkout repository uses: actions/checkout@v4 @@ -45,7 +41,7 @@ jobs: - name: Unit test run: make test e2e_test: - runs-on: macos-12 + runs-on: macos-14 steps: - name: Checkout repository uses: actions/checkout@v4 @@ -53,6 +49,8 @@ jobs: submodules: recursive - name: Build push_swap run: make + - name: Build checker + run: make bonus - name: Set up Ruby uses: ruby/setup-ruby@v1 with: diff --git a/Rakefile b/Rakefile index dbfcb05..8a8f637 100644 --- a/Rakefile +++ b/Rakefile @@ -6,11 +6,10 @@ RSpec::Core::RakeTask.new(:test) do |task| task.pattern = [ "test/e2e/spec/corner_cases_spec.rb", "test/e2e/spec/error_cases_spec.rb", + "test/e2e/spec/checker_spec.rb", ] end -RSpec::Core::RakeTask.new(:performance) do |task| - task.pattern = [ - "test/e2e/spec/performance_spec.rb", - ] +task(:performance) do + ruby "test/e2e/performance.rb" end diff --git a/test/e2e/performance.rb b/test/e2e/performance.rb new file mode 100644 index 0000000..90a3dfa --- /dev/null +++ b/test/e2e/performance.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require_relative "helper/command_helper" + +size = 500 +results = [] + +20.times do + input = (0...500).to_a.shuffle.map(&:to_s) + stdout, _stderr, _status = execute_push_swap(*input) + results << stdout.split("\n").count + + print "\e[32m.\e[0m" +end + +max_operations = results.max +min_operations = results.min +average_operations = results.sum / results.size.to_f + +puts "\nFor size #{size}: Max: #{max_operations}, Min: #{min_operations}, Average: #{average_operations}" diff --git a/test/e2e/spec/checker_spec.rb b/test/e2e/spec/checker_spec.rb new file mode 100644 index 0000000..b9f6945 --- /dev/null +++ b/test/e2e/spec/checker_spec.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require_relative "../helper/command_helper" + +describe("Performance test for push_swap") do + [5, 10, 50, 100, 200, 500, 1000].each do |size| + it "measures operations for random input of size #{size}" do + results = [] + input = (0...size).to_a.shuffle.map(&:to_s) + stdout, _stderr, status = execute_push_swap(*input) + expect(status.exitstatus).to(eq(0)) + results << stdout.split("\n").count + + stdout, _stderr, status = execute_checker(*input) + expect(status.exitstatus).to(eq(0)) + expect(stdout).to(eq("OK\n")) + end + end +end diff --git a/test/e2e/spec/performance_spec.rb b/test/e2e/spec/performance_spec.rb deleted file mode 100644 index aff88f2..0000000 --- a/test/e2e/spec/performance_spec.rb +++ /dev/null @@ -1,26 +0,0 @@ -# frozen_string_literal: true - -require_relative "../helper/command_helper" - -describe("Performance test for push_swap") do - size = 500 - it "measures operations for random input of size #{size}" do - results = [] - 20.times do - input = (0...500).to_a.shuffle.map(&:to_s) - stdout, _stderr, status = execute_push_swap(*input) - expect(status.exitstatus).to(eq(0)) - results << stdout.split("\n").count - - stdout, _stderr, status = execute_checker(*input) - expect(status.exitstatus).to(eq(0)) - expect(stdout).to(eq("OK\n")) - print "\e[32m.\e[0m" - end - max_operations = results.max - min_operations = results.min - average_operations = results.sum / results.size.to_f - print "\n" - print "For size #{size}: Max: #{max_operations}, Min: #{min_operations}, Average: #{average_operations}" - end -end diff --git a/test/pain.sh b/test/pain.sh index 5728bd9..17d4123 100755 --- a/test/pain.sh +++ b/test/pain.sh @@ -9,8 +9,8 @@ NBR_LINK=$( echo "$NBR" | tr ' ' ',' ) CMD_LINK=$( echo "$CMD" | sed -e"s/rra/g/g" -e"s/rrb/h/g" \ -e"s/rrr/i/g" -e"s/sa/a/g" -e"s/sb/b/g" -e"s/ss/c/g" \ -e"s/ra/d/g" -e"s/rb/e/g" -e"s/rr/f/g" -e"s/pa/j/g" -e"s/pb/k/g" | tr -d '\n') -# CMD_COUNT=${#CMD_LINK} -RESULT=$( echo $CMD | ./checker $NBR ) +CMD_COUNT=${#CMD_LINK} +# RESULT=$( echo $CMD | ./checker $NBR ) echo "Operations: $CMD_COUNT" echo "Result $RESULT" open "https://kaaaaakun.github.io/push-swap-pain/?&nbr=$NBR_LINK&cmd=$CMD_LINK"