We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
Post 9
Agent w/ Supervisor
Published on: 2025-04-04
Tags:
elixir, Agents, State, Testing
This was a fun project that had a few issues that came up as I was building it. Agents are an "easier" version of GenServer. Its meant to deal with a State and pids. Setting up the functions for each needed function was relatively easy once I new the style of the map I wanted to create. Where a player can be added to the map as more players are added. %{ player: %{ ping_pong: 0, rock_paper_scissors: 0, rubik_cube: 0 } ping_pong: %{ player: [...] }, rock_paper_scissors: %{ player: [...] }, rubik_cube: %{ player: [...] } } Having learned about Kernel put_in and update_in I was able to update and add to any map with a cleaner code than using Map or Enum. Once that was done I learned that to do tests for the Agent you need to be sure that you have a setup and pass the __MODULE__ to the functions. setup/0 will be run before every test and will be sure to exit out of the Agent before the next test so that you start with a clean state. This required that I added a param for each function and the start_link/1 that will use the same __MODULE__ for each test. This makes sure that each time that you start a new link that it will be passed to the function that needs to access the pid/__MODULE__. Once that was done it was easy to set all the tests that I wanted.
