From 32c925a2a177c66d3348a962918b43825bd874c3 Mon Sep 17 00:00:00 2001 From: Angelika Tyborska Date: Sat, 20 Nov 2021 00:14:13 +0100 Subject: [PATCH] Fix high-score default argument check (#234) * Add failing test * Fix high-score default argument check --- lib/elixir_analyzer/test_suite/high_score.ex | 4 ++ .../test_suite/high_score_test.exs | 54 +++++++++++++------ 2 files changed, 41 insertions(+), 17 deletions(-) diff --git a/lib/elixir_analyzer/test_suite/high_score.ex b/lib/elixir_analyzer/test_suite/high_score.ex index cc589b78..bc4bf1e0 100644 --- a/lib/elixir_analyzer/test_suite/high_score.ex +++ b/lib/elixir_analyzer/test_suite/high_score.ex @@ -16,6 +16,10 @@ defmodule ElixirAnalyzer.TestSuite.HighScore do _ignore end end + + form do + def add_player(_ignore, _ignore, _ignore \\ @_ignore) + end end feature "uses a module attribute to define the initial score" do diff --git a/test/elixir_analyzer/test_suite/high_score_test.exs b/test/elixir_analyzer/test_suite/high_score_test.exs index 4ad69cbb..a23a2627 100644 --- a/test/elixir_analyzer/test_suite/high_score_test.exs +++ b/test/elixir_analyzer/test_suite/high_score_test.exs @@ -64,30 +64,50 @@ defmodule ElixirAnalyzer.ExerciseTest.HighScoreTest do ] end - test_exercise_analysis "requires add_player to have a default argument that's a module attribute", - comments_include: [Constants.high_score_use_default_argument_with_module_attribute()] do - [ - defmodule HighScore do - def add_player(scores, name) do - Map.put(scores, name, @any_name) - end + describe "add_player and default argument" do + test_exercise_analysis "requires add_player to have a default argument that's a module attribute", + comments_include: [Constants.high_score_use_default_argument_with_module_attribute()] do + [ + defmodule HighScore do + def add_player(scores, name) do + Map.put(scores, name, @any_name) + end - def add_player(scores, name, score) do - Map.put(scores, name, score) + def add_player(scores, name, score) do + Map.put(scores, name, score) + end + end, + defmodule HighScore do + def add_player(scores, name, score \\ nil) do + score = score || @initial_score + Map.put(scores, name, score) + end + end, + defmodule HighScore do + def add_player(scores, name, score \\ 0) do + Map.put(scores, name, score) + end end - end, + ] + end + + test_exercise_analysis "accepts an empty function head", + comments_exclude: [Constants.high_score_use_default_argument_with_module_attribute()] do defmodule HighScore do - def add_player(scores, name, score \\ nil) do - score = score || @initial_score + def new(), do: %{} + + @score 0 + def add_player(scores, name, score \\ @score) + + def add_player(scores, name, score) do Map.put(scores, name, score) end - end, - defmodule HighScore do - def add_player(scores, name, score \\ 0) do - Map.put(scores, name, score) + + def reset_score(scores, name) do + Map.put(scores, name, @score) end end - ] + end end describe "looks for a module attribute with the initial score of 0" do