From 94ebedc8a2aff7b7f22b086a8f47535a7a1fdb44 Mon Sep 17 00:00:00 2001 From: rodrigo-morais Date: Tue, 26 Dec 2017 14:29:34 +0100 Subject: [PATCH 1/3] Adding container to Clojure --- clojure/.gitignore | 2 + clojure/beer_song_test.clj | 47 ------ clojure/project.clj | 10 +- clojure/src/beer_song.clj | 13 ++ clojure/test/beer_song_test.clj | 252 ++++++++++++++++++++++++++++++++ 5 files changed, 273 insertions(+), 51 deletions(-) create mode 100644 clojure/.gitignore delete mode 100644 clojure/beer_song_test.clj create mode 100644 clojure/src/beer_song.clj create mode 100644 clojure/test/beer_song_test.clj diff --git a/clojure/.gitignore b/clojure/.gitignore new file mode 100644 index 0000000..9a64430 --- /dev/null +++ b/clojure/.gitignore @@ -0,0 +1,2 @@ +.lein-* +/target diff --git a/clojure/beer_song_test.clj b/clojure/beer_song_test.clj deleted file mode 100644 index b658bec..0000000 --- a/clojure/beer_song_test.clj +++ /dev/null @@ -1,47 +0,0 @@ -(ns beer-song-test - (:require [clojure.test :refer [deftest is]] - beer-song)) - -(def verse-8 - (str "8 bottles of beer on the wall, 8 bottles of beer.\n" - "Take one down and pass it around, 7 bottles of beer on the wall.\n")) - -(def verse-2 - (str "2 bottles of beer on the wall, 2 bottles of beer.\n" - "Take one down and pass it around, 1 bottle of beer on the wall.\n")) - -(def verse-1 - (str "1 bottle of beer on the wall, 1 bottle of beer.\n" - "Take it down and pass it around, no more bottles of beer on the wall.\n")) - -(def verse-0 - (str "No more bottles of beer on the wall, no more bottles of beer.\n" - "Go to the store and buy some more, 99 bottles of beer on the wall.\n")) - -(def song-8-6 - (str "8 bottles of beer on the wall, 8 bottles of beer.\n" - "Take one down and pass it around, 7 bottles of beer on the wall.\n\n" - "7 bottles of beer on the wall, 7 bottles of beer.\n" - "Take one down and pass it around, 6 bottles of beer on the wall.\n\n" - "6 bottles of beer on the wall, 6 bottles of beer.\n" - "Take one down and pass it around, 5 bottles of beer on the wall.\n")) - -(def song-3-0 - (str "3 bottles of beer on the wall, 3 bottles of beer.\n" - "Take one down and pass it around, 2 bottles of beer on the wall.\n\n" - "2 bottles of beer on the wall, 2 bottles of beer.\n" - "Take one down and pass it around, 1 bottle of beer on the wall.\n\n" - "1 bottle of beer on the wall, 1 bottle of beer.\n" - "Take it down and pass it around, no more bottles of beer on the wall.\n\n" - "No more bottles of beer on the wall, no more bottles of beer.\n" - "Go to the store and buy some more, 99 bottles of beer on the wall.\n")) - -(deftest test-verse - (is (= verse-8 (beer-song/verse 8))) - (is (= verse-2 (beer-song/verse 2))) - (is (= verse-1 (beer-song/verse 1))) - (is (= verse-0 (beer-song/verse 0)))) - -(deftest test-song - (is (= song-8-6 (beer-song/sing 8 6))) - (is (= song-3-0 (beer-song/sing 3)))) diff --git a/clojure/project.clj b/clojure/project.clj index f1e7156..d454142 100644 --- a/clojure/project.clj +++ b/clojure/project.clj @@ -1,4 +1,6 @@ -(defproject beer-song "0.1.0-SNAPSHOT" - :description "beer-song exercise." - :url "https://github.com/exercism/clojure/tree/master/exercises/beer-song" - :dependencies [[org.clojure/clojure "1.8.0"]]) +(defproject beer-song "0.1.0" + :description "Beer song challenge" + :dependencies [[org.clojure/clojure "1.8.0"]] + :main ^:skip-aot beer-song + :target-path "target/%s" + :profiles {:uberjar {:aot :all}}) diff --git a/clojure/src/beer_song.clj b/clojure/src/beer_song.clj new file mode 100644 index 0000000..e7736c4 --- /dev/null +++ b/clojure/src/beer_song.clj @@ -0,0 +1,13 @@ +(ns beer-song) + +(defn verse + [number] + "") + +(defn verses + [begin end] + "") + +(defn sing + [] + "") diff --git a/clojure/test/beer_song_test.clj b/clojure/test/beer_song_test.clj new file mode 100644 index 0000000..b24d79b --- /dev/null +++ b/clojure/test/beer_song_test.clj @@ -0,0 +1,252 @@ +(ns beer-song-test + (:require [clojure.test :refer [deftest is]] + beer-song)) + +(def verse-99 + (str "99 bottles of beer on the wall, 99 bottles of beer.\n" + "Take one down and pass it around, 98 bottles of beer on the wall.\n\n")) + +(def verse-3 + (str "3 bottles of beer on the wall, 3 bottles of beer.\n" + "Take one down and pass it around, 2 bottles of beer on the wall.\n\n")) + +(def verse-2 + (str "2 bottles of beer on the wall, 2 bottles of beer.\n" + "Take one down and pass it around, 1 bottle of beer on the wall.\n")) + +(def verse-1 + (str "1 bottle of beer on the wall, 1 bottle of beer.\n" + "Take it down and pass it around, no more bottles of beer on the wall.\n\n")) + +(def verse-0 + (str "No more bottles of beer on the wall, no more bottles of beer.\n" + "Go to the store and buy some more, 99 bottles of beer on the wall.\n\n")) + +(def song-99-97 + (str "99 bottles of beer on the wall, 99 bottles of beer.\n" + "Take one down and pass it around, 98 bottles of beer on the wall.\n\n" + "98 bottles of beer on the wall, 98 bottles of beer.\n" + "Take one down and pass it around, 97 bottles of beer on the wall.\n\n" + "97 bottles of beer on the wall, 97 bottles of beer.\n" + "Take one down and pass it around, 96 bottles of beer on the wall.\n\n")) + +(def song-2-0 + (str "2 bottles of beer on the wall, 2 bottles of beer.\n" + "Take one down and pass it around, 1 bottle of beer on the wall.\n\n" + "1 bottle of beer on the wall, 1 bottle of beer.\n" + "Take it down and pass it around, no more bottles of beer on the wall.\n\n" + "No more bottles of beer on the wall, no more bottles of beer.\n" + "Go to the store and buy some more, 99 bottles of beer on the wall.\n\n")) + +(def full-song + (str "99 bottles of beer on the wall, 99 bottles of beer.\n" + "Take one down and pass it around, 98 bottles of beer on the wall.\n\n" + "98 bottles of beer on the wall, 98 bottles of beer.\n" + "Take one down and pass it around, 97 bottles of beer on the wall.\n\n" + "97 bottles of beer on the wall, 97 bottles of beer.\n" + "Take one down and pass it around, 96 bottles of beer on the wall.\n\n" + "96 bottles of beer on the wall, 96 bottles of beer.\n" + "Take one down and pass it around, 95 bottles of beer on the wall.\n\n" + "95 bottles of beer on the wall, 95 bottles of beer.\n" + "Take one down and pass it around, 94 bottles of beer on the wall.\n\n" + "94 bottles of beer on the wall, 94 bottles of beer.\n" + "Take one down and pass it around, 93 bottles of beer on the wall.\n\n" + "93 bottles of beer on the wall, 93 bottles of beer.\n" + "Take one down and pass it around, 92 bottles of beer on the wall.\n\n" + "92 bottles of beer on the wall, 92 bottles of beer.\n" + "Take one down and pass it around, 91 bottles of beer on the wall.\n\n" + "91 bottles of beer on the wall, 91 bottles of beer.\n" + "Take one down and pass it around, 90 bottles of beer on the wall.\n\n" + "90 bottles of beer on the wall, 90 bottles of beer.\n" + "Take one down and pass it around, 89 bottles of beer on the wall.\n\n" + "89 bottles of beer on the wall, 89 bottles of beer.\n" + "Take one down and pass it around, 88 bottles of beer on the wall.\n\n" + "88 bottles of beer on the wall, 88 bottles of beer.\n" + "Take one down and pass it around, 87 bottles of beer on the wall.\n\n" + "87 bottles of beer on the wall, 87 bottles of beer.\n" + "Take one down and pass it around, 86 bottles of beer on the wall.\n\n" + "86 bottles of beer on the wall, 86 bottles of beer.\n" + "Take one down and pass it around, 85 bottles of beer on the wall.\n\n" + "85 bottles of beer on the wall, 85 bottles of beer.\n" + "Take one down and pass it around, 84 bottles of beer on the wall.\n\n" + "84 bottles of beer on the wall, 84 bottles of beer.\n" + "Take one down and pass it around, 83 bottles of beer on the wall.\n\n" + "83 bottles of beer on the wall, 83 bottles of beer.\n" + "Take one down and pass it around, 82 bottles of beer on the wall.\n\n" + "82 bottles of beer on the wall, 82 bottles of beer.\n" + "Take one down and pass it around, 81 bottles of beer on the wall.\n\n" + "81 bottles of beer on the wall, 81 bottles of beer.\n" + "Take one down and pass it around, 80 bottles of beer on the wall.\n\n" + "80 bottles of beer on the wall, 80 bottles of beer.\n" + "Take one down and pass it around, 79 bottles of beer on the wall.\n\n" + "79 bottles of beer on the wall, 79 bottles of beer.\n" + "Take one down and pass it around, 78 bottles of beer on the wall.\n\n" + "78 bottles of beer on the wall, 78 bottles of beer.\n" + "Take one down and pass it around, 77 bottles of beer on the wall.\n\n" + "77 bottles of beer on the wall, 77 bottles of beer.\n" + "Take one down and pass it around, 76 bottles of beer on the wall.\n\n" + "76 bottles of beer on the wall, 76 bottles of beer.\n" + "Take one down and pass it around, 75 bottles of beer on the wall.\n\n" + "75 bottles of beer on the wall, 75 bottles of beer.\n" + "Take one down and pass it around, 74 bottles of beer on the wall.\n\n" + "74 bottles of beer on the wall, 74 bottles of beer.\n" + "Take one down and pass it around, 73 bottles of beer on the wall.\n\n" + "73 bottles of beer on the wall, 73 bottles of beer.\n" + "Take one down and pass it around, 72 bottles of beer on the wall.\n\n" + "72 bottles of beer on the wall, 72 bottles of beer.\n" + "Take one down and pass it around, 71 bottles of beer on the wall.\n\n" + "71 bottles of beer on the wall, 71 bottles of beer.\n" + "Take one down and pass it around, 70 bottles of beer on the wall.\n\n" + "70 bottles of beer on the wall, 70 bottles of beer.\n" + "Take one down and pass it around, 69 bottles of beer on the wall.\n\n" + "69 bottles of beer on the wall, 69 bottles of beer.\n" + "Take one down and pass it around, 68 bottles of beer on the wall.\n\n" + "68 bottles of beer on the wall, 68 bottles of beer.\n" + "Take one down and pass it around, 67 bottles of beer on the wall.\n\n" + "67 bottles of beer on the wall, 67 bottles of beer.\n" + "Take one down and pass it around, 66 bottles of beer on the wall.\n\n" + "66 bottles of beer on the wall, 66 bottles of beer.\n" + "Take one down and pass it around, 65 bottles of beer on the wall.\n\n" + "65 bottles of beer on the wall, 65 bottles of beer.\n" + "Take one down and pass it around, 64 bottles of beer on the wall.\n\n" + "64 bottles of beer on the wall, 64 bottles of beer.\n" + "Take one down and pass it around, 63 bottles of beer on the wall.\n\n" + "63 bottles of beer on the wall, 63 bottles of beer.\n" + "Take one down and pass it around, 62 bottles of beer on the wall.\n\n" + "62 bottles of beer on the wall, 62 bottles of beer.\n" + "Take one down and pass it around, 61 bottles of beer on the wall.\n\n" + "61 bottles of beer on the wall, 61 bottles of beer.\n" + "Take one down and pass it around, 60 bottles of beer on the wall.\n\n" + "60 bottles of beer on the wall, 60 bottles of beer.\n" + "Take one down and pass it around, 59 bottles of beer on the wall.\n\n" + "59 bottles of beer on the wall, 59 bottles of beer.\n" + "Take one down and pass it around, 58 bottles of beer on the wall.\n\n" + "58 bottles of beer on the wall, 58 bottles of beer.\n" + "Take one down and pass it around, 57 bottles of beer on the wall.\n\n" + "57 bottles of beer on the wall, 57 bottles of beer.\n" + "Take one down and pass it around, 56 bottles of beer on the wall.\n\n" + "56 bottles of beer on the wall, 56 bottles of beer.\n" + "Take one down and pass it around, 55 bottles of beer on the wall.\n\n" + "55 bottles of beer on the wall, 55 bottles of beer.\n" + "Take one down and pass it around, 54 bottles of beer on the wall.\n\n" + "54 bottles of beer on the wall, 54 bottles of beer.\n" + "Take one down and pass it around, 53 bottles of beer on the wall.\n\n" + "53 bottles of beer on the wall, 53 bottles of beer.\n" + "Take one down and pass it around, 52 bottles of beer on the wall.\n\n" + "52 bottles of beer on the wall, 52 bottles of beer.\n" + "Take one down and pass it around, 51 bottles of beer on the wall.\n\n" + "51 bottles of beer on the wall, 51 bottles of beer.\n" + "Take one down and pass it around, 50 bottles of beer on the wall.\n\n" + "50 bottles of beer on the wall, 50 bottles of beer.\n" + "Take one down and pass it around, 49 bottles of beer on the wall.\n\n" + "49 bottles of beer on the wall, 49 bottles of beer.\n" + "Take one down and pass it around, 48 bottles of beer on the wall.\n\n" + "48 bottles of beer on the wall, 48 bottles of beer.\n" + "Take one down and pass it around, 47 bottles of beer on the wall.\n\n" + "47 bottles of beer on the wall, 47 bottles of beer.\n" + "Take one down and pass it around, 46 bottles of beer on the wall.\n\n" + "46 bottles of beer on the wall, 46 bottles of beer.\n" + "Take one down and pass it around, 45 bottles of beer on the wall.\n\n" + "45 bottles of beer on the wall, 45 bottles of beer.\n" + "Take one down and pass it around, 44 bottles of beer on the wall.\n\n" + "44 bottles of beer on the wall, 44 bottles of beer.\n" + "Take one down and pass it around, 43 bottles of beer on the wall.\n\n" + "43 bottles of beer on the wall, 43 bottles of beer.\n" + "Take one down and pass it around, 42 bottles of beer on the wall.\n\n" + "42 bottles of beer on the wall, 42 bottles of beer.\n" + "Take one down and pass it around, 41 bottles of beer on the wall.\n\n" + "41 bottles of beer on the wall, 41 bottles of beer.\n" + "Take one down and pass it around, 40 bottles of beer on the wall.\n\n" + "40 bottles of beer on the wall, 40 bottles of beer.\n" + "Take one down and pass it around, 39 bottles of beer on the wall.\n\n" + "39 bottles of beer on the wall, 39 bottles of beer.\n" + "Take one down and pass it around, 38 bottles of beer on the wall.\n\n" + "38 bottles of beer on the wall, 38 bottles of beer.\n" + "Take one down and pass it around, 37 bottles of beer on the wall.\n\n" + "37 bottles of beer on the wall, 37 bottles of beer.\n" + "Take one down and pass it around, 36 bottles of beer on the wall.\n\n" + "36 bottles of beer on the wall, 36 bottles of beer.\n" + "Take one down and pass it around, 35 bottles of beer on the wall.\n\n" + "35 bottles of beer on the wall, 35 bottles of beer.\n" + "Take one down and pass it around, 34 bottles of beer on the wall.\n\n" + "34 bottles of beer on the wall, 34 bottles of beer.\n" + "Take one down and pass it around, 33 bottles of beer on the wall.\n\n" + "33 bottles of beer on the wall, 33 bottles of beer.\n" + "Take one down and pass it around, 32 bottles of beer on the wall.\n\n" + "32 bottles of beer on the wall, 32 bottles of beer.\n" + "Take one down and pass it around, 31 bottles of beer on the wall.\n\n" + "31 bottles of beer on the wall, 31 bottles of beer.\n" + "Take one down and pass it around, 30 bottles of beer on the wall.\n\n" + "30 bottles of beer on the wall, 30 bottles of beer.\n" + "Take one down and pass it around, 29 bottles of beer on the wall.\n\n" + "29 bottles of beer on the wall, 29 bottles of beer.\n" + "Take one down and pass it around, 28 bottles of beer on the wall.\n\n" + "28 bottles of beer on the wall, 28 bottles of beer.\n" + "Take one down and pass it around, 27 bottles of beer on the wall.\n\n" + "27 bottles of beer on the wall, 27 bottles of beer.\n" + "Take one down and pass it around, 26 bottles of beer on the wall.\n\n" + "26 bottles of beer on the wall, 26 bottles of beer.\n" + "Take one down and pass it around, 25 bottles of beer on the wall.\n\n" + "25 bottles of beer on the wall, 25 bottles of beer.\n" + "Take one down and pass it around, 24 bottles of beer on the wall.\n\n" + "24 bottles of beer on the wall, 24 bottles of beer.\n" + "Take one down and pass it around, 23 bottles of beer on the wall.\n\n" + "23 bottles of beer on the wall, 23 bottles of beer.\n" + "Take one down and pass it around, 22 bottles of beer on the wall.\n\n" + "22 bottles of beer on the wall, 22 bottles of beer.\n" + "Take one down and pass it around, 21 bottles of beer on the wall.\n\n" + "21 bottles of beer on the wall, 21 bottles of beer.\n" + "Take one down and pass it around, 20 bottles of beer on the wall.\n\n" + "20 bottles of beer on the wall, 20 bottles of beer.\n" + "Take one down and pass it around, 19 bottles of beer on the wall.\n\n" + "19 bottles of beer on the wall, 19 bottles of beer.\n" + "Take one down and pass it around, 18 bottles of beer on the wall.\n\n" + "18 bottles of beer on the wall, 18 bottles of beer.\n" + "Take one down and pass it around, 17 bottles of beer on the wall.\n\n" + "17 bottles of beer on the wall, 17 bottles of beer.\n" + "Take one down and pass it around, 16 bottles of beer on the wall.\n\n" + "16 bottles of beer on the wall, 16 bottles of beer.\n" + "Take one down and pass it around, 15 bottles of beer on the wall.\n\n" + "15 bottles of beer on the wall, 15 bottles of beer.\n" + "Take one down and pass it around, 14 bottles of beer on the wall.\n\n" + "14 bottles of beer on the wall, 14 bottles of beer.\n" + "Take one down and pass it around, 13 bottles of beer on the wall.\n\n" + "13 bottles of beer on the wall, 13 bottles of beer.\n" + "Take one down and pass it around, 12 bottles of beer on the wall.\n\n" + "12 bottles of beer on the wall, 12 bottles of beer.\n" + "Take one down and pass it around, 11 bottles of beer on the wall.\n\n" + "11 bottles of beer on the wall, 11 bottles of beer.\n" + "Take one down and pass it around, 10 bottles of beer on the wall.\n\n" + "10 bottles of beer on the wall, 10 bottles of beer.\n" + "Take one down and pass it around, 9 bottles of beer on the wall.\n\n" + "9 bottles of beer on the wall, 9 bottles of beer.\n" + "Take one down and pass it around, 8 bottles of beer on the wall.\n\n" + "8 bottles of beer on the wall, 8 bottles of beer.\n" + "Take one down and pass it around, 7 bottles of beer on the wall.\n\n" + "7 bottles of beer on the wall, 7 bottles of beer.\n" + "Take one down and pass it around, 6 bottles of beer on the wall.\n\n" + "6 bottles of beer on the wall, 6 bottles of beer.\n" + "Take one down and pass it around, 5 bottles of beer on the wall.\n\n" + "5 bottles of beer on the wall, 5 bottles of beer.\n" + "Take one down and pass it around, 4 bottles of beer on the wall.\n\n" + "4 bottles of beer on the wall, 4 bottles of beer.\n" + "Take one down and pass it around, 3 bottles of beer on the wall.\n\n" + "3 bottles of beer on the wall, 3 bottles of beer.\n" + "Take one down and pass it around, 2 bottles of beer on the wall.\n\n" + "2 bottles of beer on the wall, 2 bottles of beer.\n" + "Take one down and pass it around, 1 bottle of beer on the wall.\n\n" + "1 bottle of beer on the wall, 1 bottle of beer.\n" + "Take it down and pass it around, no more bottles of beer on the wall.\n\n" + "No more bottles of beer on the wall, no more bottles of beer.\n" + "Go to the store and buy some more, 99 bottles of beer on the wall.\n\n")) + +(deftest test-verse + (is (= verse-99 (beer-song/verse 99))) + (is (= verse-3 (beer-song/verse 3))) + (is (= verse-2 (beer-song/verse 2))) + (is (= verse-1 (beer-song/verse 1))) + (is (= verse-0 (beer-song/verse 0)))) + +(deftest test-verses + (is (= song-99-97 (beer-song/verses 99 97))) + (is (= song-2-0 (beer-song/verses 2 0)))) From ff938ebb5e35eef48d0299854be3ef9cdfe7b8a9 Mon Sep 17 00:00:00 2001 From: rodrigo-morais Date: Thu, 28 Dec 2017 17:43:39 +0100 Subject: [PATCH 2/3] Fixing test. --- clojure/test/beer_song_test.clj | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/clojure/test/beer_song_test.clj b/clojure/test/beer_song_test.clj index b24d79b..d4c456b 100644 --- a/clojure/test/beer_song_test.clj +++ b/clojure/test/beer_song_test.clj @@ -12,7 +12,7 @@ (def verse-2 (str "2 bottles of beer on the wall, 2 bottles of beer.\n" - "Take one down and pass it around, 1 bottle of beer on the wall.\n")) + "Take one down and pass it around, 1 bottle of beer on the wall.\n\n")) (def verse-1 (str "1 bottle of beer on the wall, 1 bottle of beer.\n" @@ -250,3 +250,6 @@ (deftest test-verses (is (= song-99-97 (beer-song/verses 99 97))) (is (= song-2-0 (beer-song/verses 2 0)))) + +(deftest test-sing + (is (= full-song (beer-song/sing)))) From 5c131e6c90b0bc5ef2aa7f6c14d4f3b8375e5d67 Mon Sep 17 00:00:00 2001 From: rodrigo-morais Date: Thu, 28 Dec 2017 17:45:57 +0100 Subject: [PATCH 3/3] Updating README file. --- clojure/README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/clojure/README.md b/clojure/README.md index 0bbe293..352a274 100644 --- a/clojure/README.md +++ b/clojure/README.md @@ -3,3 +3,20 @@ 99 Bottles of Beer is an algorithmic children's song which has just enough complexity to teach you deep truths about object oriented programming. Our goal is to produce the lyrics to that beloved classic, that field-trip favorite. You can find them @ [`dcarral/99bottles-polyglot/SONG_LYRICS.md`](https://github.com/dcarral/99bottles-polyglot/blob/master/SONG_LYRICS.md). + +## Running + +To run the environment is necessary `Docker`. + +In `clojure` directory run: + +```sh +docker run -ti --rm -v $(pwd):/code -w /code clojure bash +``` + +You can run the test suite from the exercise +directory with: + +```sh +lein test +```