twelve_days
This commit is contained in:
		
							parent
							
								
									2b764143c4
								
							
						
					
					
						commit
						d00a9787f9
					
				
							
								
								
									
										27
									
								
								elixir/twelve-days/.exercism/config.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								elixir/twelve-days/.exercism/config.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,27 @@
 | 
			
		||||
{
 | 
			
		||||
  "authors": [
 | 
			
		||||
    "DoggettCK"
 | 
			
		||||
  ],
 | 
			
		||||
  "contributors": [
 | 
			
		||||
    "angelikatyborska",
 | 
			
		||||
    "Cohen-Carlisle",
 | 
			
		||||
    "devonestes",
 | 
			
		||||
    "neenjaw",
 | 
			
		||||
    "PatrickMcSweeny",
 | 
			
		||||
    "sotojuan"
 | 
			
		||||
  ],
 | 
			
		||||
  "files": {
 | 
			
		||||
    "solution": [
 | 
			
		||||
      "lib/twelve_days.ex"
 | 
			
		||||
    ],
 | 
			
		||||
    "test": [
 | 
			
		||||
      "test/twelve_days_test.exs"
 | 
			
		||||
    ],
 | 
			
		||||
    "example": [
 | 
			
		||||
      ".meta/example.ex"
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  "blurb": "Output the lyrics to 'The Twelve Days of Christmas'.",
 | 
			
		||||
  "source": "Wikipedia",
 | 
			
		||||
  "source_url": "https://en.wikipedia.org/wiki/The_Twelve_Days_of_Christmas_(song)"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1
									
								
								elixir/twelve-days/.exercism/metadata.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								elixir/twelve-days/.exercism/metadata.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
{"track":"elixir","exercise":"twelve-days","id":"0a1590f9cd004ef09f8e5e9a6558e92d","url":"https://exercism.org/tracks/elixir/exercises/twelve-days","handle":"negrienko","is_requester":true,"auto_approve":false}
 | 
			
		||||
							
								
								
									
										4
									
								
								elixir/twelve-days/.formatter.exs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								elixir/twelve-days/.formatter.exs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
# Used by "mix format"
 | 
			
		||||
[
 | 
			
		||||
  inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"]
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										24
									
								
								elixir/twelve-days/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								elixir/twelve-days/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
			
		||||
# The directory Mix will write compiled artifacts to.
 | 
			
		||||
/_build/
 | 
			
		||||
 | 
			
		||||
# If you run "mix test --cover", coverage assets end up here.
 | 
			
		||||
/cover/
 | 
			
		||||
 | 
			
		||||
# The directory Mix downloads your dependencies sources to.
 | 
			
		||||
/deps/
 | 
			
		||||
 | 
			
		||||
# Where third-party dependencies like ExDoc output generated docs.
 | 
			
		||||
/doc/
 | 
			
		||||
 | 
			
		||||
# Ignore .fetch files in case you like to edit your project deps locally.
 | 
			
		||||
/.fetch
 | 
			
		||||
 | 
			
		||||
# If the VM crashes, it generates a dump, let's ignore it too.
 | 
			
		||||
erl_crash.dump
 | 
			
		||||
 | 
			
		||||
# Also ignore archive artifacts (built via "mix archive.build").
 | 
			
		||||
*.ez
 | 
			
		||||
 | 
			
		||||
# Ignore package tarball (built via "mix hex.build").
 | 
			
		||||
twelve_days-*.tar
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										75
									
								
								elixir/twelve-days/HELP.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								elixir/twelve-days/HELP.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,75 @@
 | 
			
		||||
# Help
 | 
			
		||||
 | 
			
		||||
## Running the tests
 | 
			
		||||
 | 
			
		||||
From the terminal, change to the base directory of the exercise then execute the tests with:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
$ mix test
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
This will execute the test file found in the `test` subfolder -- a file ending in `_test.exs`
 | 
			
		||||
 | 
			
		||||
Documentation:
 | 
			
		||||
 | 
			
		||||
* [`mix test` - Elixir's test execution tool](https://hexdocs.pm/mix/Mix.Tasks.Test.html)
 | 
			
		||||
* [`ExUnit` - Elixir's unit test library](https://hexdocs.pm/ex_unit/ExUnit.html)
 | 
			
		||||
 | 
			
		||||
## Pending tests
 | 
			
		||||
 | 
			
		||||
In test suites of practice exercises, all but the first test have been tagged to be skipped.
 | 
			
		||||
 | 
			
		||||
Once you get a test passing, you can unskip the next one by commenting out the relevant `@tag :pending` with a `#` symbol.
 | 
			
		||||
 | 
			
		||||
For example:
 | 
			
		||||
 | 
			
		||||
```elixir
 | 
			
		||||
# @tag :pending
 | 
			
		||||
test "shouting" do
 | 
			
		||||
  assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
 | 
			
		||||
end
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
If you wish to run all tests at once, you can include all skipped test by using the `--include` flag on the `mix test` command:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
$ mix test --include pending
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Or, you can enable all the tests by commenting out the `ExUnit.configure` line in the file `test/test_helper.exs`.
 | 
			
		||||
 | 
			
		||||
```elixir
 | 
			
		||||
# ExUnit.configure(exclude: :pending, trace: true)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Useful `mix test` options
 | 
			
		||||
 | 
			
		||||
* `test/<FILE>.exs:LINENUM` - runs only a single test, the test from `<FILE>.exs` whose definition is on line `LINENUM`
 | 
			
		||||
* `--failed` - runs only tests that failed the last time they ran
 | 
			
		||||
* `--max-failures` - the suite stops evaluating tests when this number of test failures
 | 
			
		||||
is reached
 | 
			
		||||
* `--seed 0` - disables randomization so the tests in a single file will always be ran
 | 
			
		||||
in the same order they were defined in
 | 
			
		||||
 | 
			
		||||
## Submitting your solution
 | 
			
		||||
 | 
			
		||||
You can submit your solution using the `exercism submit lib/twelve_days.ex` command.
 | 
			
		||||
This command will upload your solution to the Exercism website and print the solution page's URL.
 | 
			
		||||
 | 
			
		||||
It's possible to submit an incomplete solution which allows you to:
 | 
			
		||||
 | 
			
		||||
- See how others have completed the exercise
 | 
			
		||||
- Request help from a mentor
 | 
			
		||||
 | 
			
		||||
## Need to get help?
 | 
			
		||||
 | 
			
		||||
If you'd like help solving the exercise, check the following pages:
 | 
			
		||||
 | 
			
		||||
- The [Elixir track's documentation](https://exercism.org/docs/tracks/elixir)
 | 
			
		||||
- The [Elixir track's programming category on the forum](https://forum.exercism.org/c/programming/elixir)
 | 
			
		||||
- [Exercism's programming category on the forum](https://forum.exercism.org/c/programming/5)
 | 
			
		||||
- The [Frequently Asked Questions](https://exercism.org/docs/using/faqs)
 | 
			
		||||
 | 
			
		||||
Should those resources not suffice, you could submit your (incomplete) solution to request mentoring.
 | 
			
		||||
 | 
			
		||||
If you're stuck on something, it may help to look at some of the [available resources](https://exercism.org/docs/tracks/elixir/resources) out there where answers might be found.
 | 
			
		||||
							
								
								
									
										60
									
								
								elixir/twelve-days/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								elixir/twelve-days/README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,60 @@
 | 
			
		||||
# Twelve Days
 | 
			
		||||
 | 
			
		||||
Welcome to Twelve Days on Exercism's Elixir Track.
 | 
			
		||||
If you need help running the tests or submitting your code, check out `HELP.md`.
 | 
			
		||||
 | 
			
		||||
## Instructions
 | 
			
		||||
 | 
			
		||||
Your task in this exercise is to write code that returns the lyrics of the song: "The Twelve Days of Christmas."
 | 
			
		||||
 | 
			
		||||
"The Twelve Days of Christmas" is a common English Christmas carol.
 | 
			
		||||
Each subsequent verse of the song builds on the previous verse.
 | 
			
		||||
 | 
			
		||||
The lyrics your code returns should _exactly_ match the full song text shown below.
 | 
			
		||||
 | 
			
		||||
## Lyrics
 | 
			
		||||
 | 
			
		||||
```text
 | 
			
		||||
On the first day of Christmas my true love gave to me: a Partridge in a Pear Tree.
 | 
			
		||||
 | 
			
		||||
On the second day of Christmas my true love gave to me: two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
 | 
			
		||||
On the third day of Christmas my true love gave to me: three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
 | 
			
		||||
On the fourth day of Christmas my true love gave to me: four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
 | 
			
		||||
On the fifth day of Christmas my true love gave to me: five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
 | 
			
		||||
On the sixth day of Christmas my true love gave to me: six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
 | 
			
		||||
On the seventh day of Christmas my true love gave to me: seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
 | 
			
		||||
On the eighth day of Christmas my true love gave to me: eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
 | 
			
		||||
On the ninth day of Christmas my true love gave to me: nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
 | 
			
		||||
On the tenth day of Christmas my true love gave to me: ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
 | 
			
		||||
On the eleventh day of Christmas my true love gave to me: eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
 | 
			
		||||
On the twelfth day of Christmas my true love gave to me: twelve Drummers Drumming, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Source
 | 
			
		||||
 | 
			
		||||
### Created by
 | 
			
		||||
 | 
			
		||||
- @DoggettCK
 | 
			
		||||
 | 
			
		||||
### Contributed to by
 | 
			
		||||
 | 
			
		||||
- @angelikatyborska
 | 
			
		||||
- @Cohen-Carlisle
 | 
			
		||||
- @devonestes
 | 
			
		||||
- @neenjaw
 | 
			
		||||
- @PatrickMcSweeny
 | 
			
		||||
- @sotojuan
 | 
			
		||||
 | 
			
		||||
### Based on
 | 
			
		||||
 | 
			
		||||
Wikipedia - https://en.wikipedia.org/wiki/The_Twelve_Days_of_Christmas_(song)
 | 
			
		||||
							
								
								
									
										37
									
								
								elixir/twelve-days/lib/twelve_days.ex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								elixir/twelve-days/lib/twelve_days.ex
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
			
		||||
defmodule TwelveDays do
 | 
			
		||||
  @doc """
 | 
			
		||||
  Given a `number`, return the song's verse for that specific day, including
 | 
			
		||||
  all gifts for previous days in the same line.
 | 
			
		||||
  """
 | 
			
		||||
  @spec verse(number :: integer) :: String.t()
 | 
			
		||||
  def verse(1), do: "On the first day of Christmas my true love gave to me: a Partridge in a Pear Tree."
 | 
			
		||||
  def verse(2), do: "On the second day of Christmas my true love gave to me: two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
  def verse(3), do: "On the third day of Christmas my true love gave to me: three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
  def verse(4), do: "On the fourth day of Christmas my true love gave to me: four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
  def verse(5), do: "On the fifth day of Christmas my true love gave to me: five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
  def verse(6), do: "On the sixth day of Christmas my true love gave to me: six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
  def verse(7), do: "On the seventh day of Christmas my true love gave to me: seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
  def verse(8), do: "On the eighth day of Christmas my true love gave to me: eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
  def verse(9), do: "On the ninth day of Christmas my true love gave to me: nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
  def verse(10), do: "On the tenth day of Christmas my true love gave to me: ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
  def verse(11), do: "On the eleventh day of Christmas my true love gave to me: eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
  def verse(12), do: "On the twelfth day of Christmas my true love gave to me: twelve Drummers Drumming, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Given a `starting_verse` and an `ending_verse`, return the verses for each
 | 
			
		||||
  included day, one per line.
 | 
			
		||||
  """
 | 
			
		||||
  @spec verses(starting_verse :: integer, ending_verse :: integer) :: String.t()
 | 
			
		||||
  def verses(starting_verse, ending_verse) do
 | 
			
		||||
    starting_verse..ending_verse
 | 
			
		||||
    |> Enum.map(&verse/1)
 | 
			
		||||
    |> Enum.join("\n")
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Sing all 12 verses, in order, one verse per line.
 | 
			
		||||
  """
 | 
			
		||||
  @spec sing() :: String.t()
 | 
			
		||||
  def sing(), do: verses(1, 12)
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										28
									
								
								elixir/twelve-days/mix.exs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								elixir/twelve-days/mix.exs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
defmodule TwelveDays.MixProject do
 | 
			
		||||
  use Mix.Project
 | 
			
		||||
 | 
			
		||||
  def project do
 | 
			
		||||
    [
 | 
			
		||||
      app: :twelve_days,
 | 
			
		||||
      version: "0.1.0",
 | 
			
		||||
      # elixir: "~> 1.8",
 | 
			
		||||
      start_permanent: Mix.env() == :prod,
 | 
			
		||||
      deps: deps()
 | 
			
		||||
    ]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Run "mix help compile.app" to learn about applications.
 | 
			
		||||
  def application do
 | 
			
		||||
    [
 | 
			
		||||
      extra_applications: [:logger]
 | 
			
		||||
    ]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Run "mix help deps" to learn about dependencies.
 | 
			
		||||
  defp deps do
 | 
			
		||||
    [
 | 
			
		||||
      # {:dep_from_hexpm, "~> 0.3.0"},
 | 
			
		||||
      # {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
 | 
			
		||||
    ]
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										2
									
								
								elixir/twelve-days/test/test_helper.exs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								elixir/twelve-days/test/test_helper.exs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
ExUnit.start()
 | 
			
		||||
ExUnit.configure(exclude: :pending, trace: true)
 | 
			
		||||
							
								
								
									
										127
									
								
								elixir/twelve-days/test/twelve_days_test.exs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								elixir/twelve-days/test/twelve_days_test.exs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,127 @@
 | 
			
		||||
defmodule TwelveDaysTest do
 | 
			
		||||
  use ExUnit.Case
 | 
			
		||||
 | 
			
		||||
  describe "verse" do
 | 
			
		||||
    test "first verse" do
 | 
			
		||||
      assert TwelveDays.verse(1) ==
 | 
			
		||||
               "On the first day of Christmas my true love gave to me: a Partridge in a Pear Tree."
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "second verse" do
 | 
			
		||||
      assert TwelveDays.verse(2) ==
 | 
			
		||||
               "On the second day of Christmas my true love gave to me: two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "third verse" do
 | 
			
		||||
      assert TwelveDays.verse(3) ==
 | 
			
		||||
               "On the third day of Christmas my true love gave to me: three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "fourth verse" do
 | 
			
		||||
      assert TwelveDays.verse(4) ==
 | 
			
		||||
               "On the fourth day of Christmas my true love gave to me: four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "fifth verse" do
 | 
			
		||||
      assert TwelveDays.verse(5) ==
 | 
			
		||||
               "On the fifth day of Christmas my true love gave to me: five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "sixth verse" do
 | 
			
		||||
      assert TwelveDays.verse(6) ==
 | 
			
		||||
               "On the sixth day of Christmas my true love gave to me: six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "seventh verse" do
 | 
			
		||||
      assert TwelveDays.verse(7) ==
 | 
			
		||||
               "On the seventh day of Christmas my true love gave to me: seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "eighth verse" do
 | 
			
		||||
      assert TwelveDays.verse(8) ==
 | 
			
		||||
               "On the eighth day of Christmas my true love gave to me: eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "ninth verse" do
 | 
			
		||||
      assert TwelveDays.verse(9) ==
 | 
			
		||||
               "On the ninth day of Christmas my true love gave to me: nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "tenth verse" do
 | 
			
		||||
      assert TwelveDays.verse(10) ==
 | 
			
		||||
               "On the tenth day of Christmas my true love gave to me: ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "eleventh verse" do
 | 
			
		||||
      assert TwelveDays.verse(11) ==
 | 
			
		||||
               "On the eleventh day of Christmas my true love gave to me: eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "twelfth verse" do
 | 
			
		||||
      assert TwelveDays.verse(12) ==
 | 
			
		||||
               "On the twelfth day of Christmas my true love gave to me: twelve Drummers Drumming, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe "verses" do
 | 
			
		||||
    test "1-3" do
 | 
			
		||||
      assert TwelveDays.verses(1, 3) ==
 | 
			
		||||
               """
 | 
			
		||||
               On the first day of Christmas my true love gave to me: a Partridge in a Pear Tree.
 | 
			
		||||
               On the second day of Christmas my true love gave to me: two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the third day of Christmas my true love gave to me: three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               """
 | 
			
		||||
               |> String.trim()
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "4-6" do
 | 
			
		||||
      assert TwelveDays.verses(4, 6) ==
 | 
			
		||||
               """
 | 
			
		||||
               On the fourth day of Christmas my true love gave to me: four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the fifth day of Christmas my true love gave to me: five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the sixth day of Christmas my true love gave to me: six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               """
 | 
			
		||||
               |> String.trim()
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    test "1-12" do
 | 
			
		||||
      assert TwelveDays.verses(1, 12) ==
 | 
			
		||||
               """
 | 
			
		||||
               On the first day of Christmas my true love gave to me: a Partridge in a Pear Tree.
 | 
			
		||||
               On the second day of Christmas my true love gave to me: two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the third day of Christmas my true love gave to me: three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the fourth day of Christmas my true love gave to me: four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the fifth day of Christmas my true love gave to me: five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the sixth day of Christmas my true love gave to me: six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the seventh day of Christmas my true love gave to me: seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the eighth day of Christmas my true love gave to me: eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the ninth day of Christmas my true love gave to me: nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the tenth day of Christmas my true love gave to me: ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the eleventh day of Christmas my true love gave to me: eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the twelfth day of Christmas my true love gave to me: twelve Drummers Drumming, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               """
 | 
			
		||||
               |> String.trim()
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe "sing" do
 | 
			
		||||
    test "all 12 verses" do
 | 
			
		||||
      assert TwelveDays.sing() ==
 | 
			
		||||
               """
 | 
			
		||||
               On the first day of Christmas my true love gave to me: a Partridge in a Pear Tree.
 | 
			
		||||
               On the second day of Christmas my true love gave to me: two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the third day of Christmas my true love gave to me: three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the fourth day of Christmas my true love gave to me: four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the fifth day of Christmas my true love gave to me: five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the sixth day of Christmas my true love gave to me: six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the seventh day of Christmas my true love gave to me: seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the eighth day of Christmas my true love gave to me: eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the ninth day of Christmas my true love gave to me: nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the tenth day of Christmas my true love gave to me: ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the eleventh day of Christmas my true love gave to me: eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               On the twelfth day of Christmas my true love gave to me: twelve Drummers Drumming, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.
 | 
			
		||||
               """
 | 
			
		||||
               |> String.trim()
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user