Guest User

Untitled

a guest
Jun 4th, 2020
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 19.04 KB | None | 0 0
  1. import unittest
  2.  
  3. from beer_song import recite
  4.  
  5. # Tests adapted from `problem-specifications//canonical-data.json` @ v2.1.0
  6.  
  7.  
  8. class BeerSongTest(unittest.TestCase):
  9.     def test_first_generic_verse(self):
  10.         expected = [
  11.             "99 bottles of beer on the wall, 99 bottles of beer.",
  12.             "Take one down and pass it around, 98 bottles of beer on the wall.",
  13.         ]
  14.         self.assertEqual(recite(start=99), expected)
  15.  
  16.     def test_last_generic_verse(self):
  17.         expected = [
  18.             "3 bottles of beer on the wall, 3 bottles of beer.",
  19.             "Take one down and pass it around, 2 bottles of beer on the wall.",
  20.         ]
  21.         self.assertEqual(recite(start=3), expected)
  22.  
  23.     def test_verse_with_2_bottles(self):
  24.         expected = [
  25.             "2 bottles of beer on the wall, 2 bottles of beer.",
  26.             "Take one down and pass it around, 1 bottle of beer on the wall.",
  27.         ]
  28.         self.assertEqual(recite(start=2), expected)
  29.  
  30.     def test_verse_with_1_bottle(self):
  31.         expected = [
  32.             "1 bottle of beer on the wall, 1 bottle of beer.",
  33.             "Take it down and pass it around, no more bottles of beer on the wall.",
  34.         ]
  35.         self.assertEqual(recite(start=1), expected)
  36.  
  37.     def test_verse_with_0_bottles(self):
  38.         expected = [
  39.             "No more bottles of beer on the wall, no more bottles of beer.",
  40.             "Go to the store and buy some more, 99 bottles of beer on the wall.",
  41.         ]
  42.         self.assertEqual(recite(start=0), expected)
  43.  
  44.     def test_first_two_verses(self):
  45.         expected = [
  46.             "99 bottles of beer on the wall, 99 bottles of beer.",
  47.             "Take one down and pass it around, 98 bottles of beer on the wall.",
  48.             "",
  49.             "98 bottles of beer on the wall, 98 bottles of beer.",
  50.             "Take one down and pass it around, 97 bottles of beer on the wall.",
  51.         ]
  52.         self.assertEqual(recite(start=99, take=2), expected)
  53.  
  54.     def test_last_three_verses(self):
  55.         expected = [
  56.             "2 bottles of beer on the wall, 2 bottles of beer.",
  57.             "Take one down and pass it around, 1 bottle of beer on the wall.",
  58.             "",
  59.             "1 bottle of beer on the wall, 1 bottle of beer.",
  60.             "Take it down and pass it around, no more bottles of beer on the wall.",
  61.             "",
  62.             "No more bottles of beer on the wall, no more bottles of beer.",
  63.             "Go to the store and buy some more, 99 bottles of beer on the wall.",
  64.         ]
  65.         self.assertEqual(recite(start=2, take=3), expected)
  66.  
  67.     def test_all_verses(self):
  68.         expected = [
  69.             "99 bottles of beer on the wall, 99 bottles of beer.",
  70.             "Take one down and pass it around, 98 bottles of beer on the wall.",
  71.             "",
  72.             "98 bottles of beer on the wall, 98 bottles of beer.",
  73.             "Take one down and pass it around, 97 bottles of beer on the wall.",
  74.             "",
  75.             "97 bottles of beer on the wall, 97 bottles of beer.",
  76.             "Take one down and pass it around, 96 bottles of beer on the wall.",
  77.             "",
  78.             "96 bottles of beer on the wall, 96 bottles of beer.",
  79.             "Take one down and pass it around, 95 bottles of beer on the wall.",
  80.             "",
  81.             "95 bottles of beer on the wall, 95 bottles of beer.",
  82.             "Take one down and pass it around, 94 bottles of beer on the wall.",
  83.             "",
  84.             "94 bottles of beer on the wall, 94 bottles of beer.",
  85.             "Take one down and pass it around, 93 bottles of beer on the wall.",
  86.             "",
  87.             "93 bottles of beer on the wall, 93 bottles of beer.",
  88.             "Take one down and pass it around, 92 bottles of beer on the wall.",
  89.             "",
  90.             "92 bottles of beer on the wall, 92 bottles of beer.",
  91.             "Take one down and pass it around, 91 bottles of beer on the wall.",
  92.             "",
  93.             "91 bottles of beer on the wall, 91 bottles of beer.",
  94.             "Take one down and pass it around, 90 bottles of beer on the wall.",
  95.             "",
  96.             "90 bottles of beer on the wall, 90 bottles of beer.",
  97.             "Take one down and pass it around, 89 bottles of beer on the wall.",
  98.             "",
  99.             "89 bottles of beer on the wall, 89 bottles of beer.",
  100.             "Take one down and pass it around, 88 bottles of beer on the wall.",
  101.             "",
  102.             "88 bottles of beer on the wall, 88 bottles of beer.",
  103.             "Take one down and pass it around, 87 bottles of beer on the wall.",
  104.             "",
  105.             "87 bottles of beer on the wall, 87 bottles of beer.",
  106.             "Take one down and pass it around, 86 bottles of beer on the wall.",
  107.             "",
  108.             "86 bottles of beer on the wall, 86 bottles of beer.",
  109.             "Take one down and pass it around, 85 bottles of beer on the wall.",
  110.             "",
  111.             "85 bottles of beer on the wall, 85 bottles of beer.",
  112.             "Take one down and pass it around, 84 bottles of beer on the wall.",
  113.             "",
  114.             "84 bottles of beer on the wall, 84 bottles of beer.",
  115.             "Take one down and pass it around, 83 bottles of beer on the wall.",
  116.             "",
  117.             "83 bottles of beer on the wall, 83 bottles of beer.",
  118.             "Take one down and pass it around, 82 bottles of beer on the wall.",
  119.             "",
  120.             "82 bottles of beer on the wall, 82 bottles of beer.",
  121.             "Take one down and pass it around, 81 bottles of beer on the wall.",
  122.             "",
  123.             "81 bottles of beer on the wall, 81 bottles of beer.",
  124.             "Take one down and pass it around, 80 bottles of beer on the wall.",
  125.             "",
  126.             "80 bottles of beer on the wall, 80 bottles of beer.",
  127.             "Take one down and pass it around, 79 bottles of beer on the wall.",
  128.             "",
  129.             "79 bottles of beer on the wall, 79 bottles of beer.",
  130.             "Take one down and pass it around, 78 bottles of beer on the wall.",
  131.             "",
  132.             "78 bottles of beer on the wall, 78 bottles of beer.",
  133.             "Take one down and pass it around, 77 bottles of beer on the wall.",
  134.             "",
  135.             "77 bottles of beer on the wall, 77 bottles of beer.",
  136.             "Take one down and pass it around, 76 bottles of beer on the wall.",
  137.             "",
  138.             "76 bottles of beer on the wall, 76 bottles of beer.",
  139.             "Take one down and pass it around, 75 bottles of beer on the wall.",
  140.             "",
  141.             "75 bottles of beer on the wall, 75 bottles of beer.",
  142.             "Take one down and pass it around, 74 bottles of beer on the wall.",
  143.             "",
  144.             "74 bottles of beer on the wall, 74 bottles of beer.",
  145.             "Take one down and pass it around, 73 bottles of beer on the wall.",
  146.             "",
  147.             "73 bottles of beer on the wall, 73 bottles of beer.",
  148.             "Take one down and pass it around, 72 bottles of beer on the wall.",
  149.             "",
  150.             "72 bottles of beer on the wall, 72 bottles of beer.",
  151.             "Take one down and pass it around, 71 bottles of beer on the wall.",
  152.             "",
  153.             "71 bottles of beer on the wall, 71 bottles of beer.",
  154.             "Take one down and pass it around, 70 bottles of beer on the wall.",
  155.             "",
  156.             "70 bottles of beer on the wall, 70 bottles of beer.",
  157.             "Take one down and pass it around, 69 bottles of beer on the wall.",
  158.             "",
  159.             "69 bottles of beer on the wall, 69 bottles of beer.",
  160.             "Take one down and pass it around, 68 bottles of beer on the wall.",
  161.             "",
  162.             "68 bottles of beer on the wall, 68 bottles of beer.",
  163.             "Take one down and pass it around, 67 bottles of beer on the wall.",
  164.             "",
  165.             "67 bottles of beer on the wall, 67 bottles of beer.",
  166.             "Take one down and pass it around, 66 bottles of beer on the wall.",
  167.             "",
  168.             "66 bottles of beer on the wall, 66 bottles of beer.",
  169.             "Take one down and pass it around, 65 bottles of beer on the wall.",
  170.             "",
  171.             "65 bottles of beer on the wall, 65 bottles of beer.",
  172.             "Take one down and pass it around, 64 bottles of beer on the wall.",
  173.             "",
  174.             "64 bottles of beer on the wall, 64 bottles of beer.",
  175.             "Take one down and pass it around, 63 bottles of beer on the wall.",
  176.             "",
  177.             "63 bottles of beer on the wall, 63 bottles of beer.",
  178.             "Take one down and pass it around, 62 bottles of beer on the wall.",
  179.             "",
  180.             "62 bottles of beer on the wall, 62 bottles of beer.",
  181.             "Take one down and pass it around, 61 bottles of beer on the wall.",
  182.             "",
  183.             "61 bottles of beer on the wall, 61 bottles of beer.",
  184.             "Take one down and pass it around, 60 bottles of beer on the wall.",
  185.             "",
  186.             "60 bottles of beer on the wall, 60 bottles of beer.",
  187.             "Take one down and pass it around, 59 bottles of beer on the wall.",
  188.             "",
  189.             "59 bottles of beer on the wall, 59 bottles of beer.",
  190.             "Take one down and pass it around, 58 bottles of beer on the wall.",
  191.             "",
  192.             "58 bottles of beer on the wall, 58 bottles of beer.",
  193.             "Take one down and pass it around, 57 bottles of beer on the wall.",
  194.             "",
  195.             "57 bottles of beer on the wall, 57 bottles of beer.",
  196.             "Take one down and pass it around, 56 bottles of beer on the wall.",
  197.             "",
  198.             "56 bottles of beer on the wall, 56 bottles of beer.",
  199.             "Take one down and pass it around, 55 bottles of beer on the wall.",
  200.             "",
  201.             "55 bottles of beer on the wall, 55 bottles of beer.",
  202.             "Take one down and pass it around, 54 bottles of beer on the wall.",
  203.             "",
  204.             "54 bottles of beer on the wall, 54 bottles of beer.",
  205.             "Take one down and pass it around, 53 bottles of beer on the wall.",
  206.             "",
  207.             "53 bottles of beer on the wall, 53 bottles of beer.",
  208.             "Take one down and pass it around, 52 bottles of beer on the wall.",
  209.             "",
  210.             "52 bottles of beer on the wall, 52 bottles of beer.",
  211.             "Take one down and pass it around, 51 bottles of beer on the wall.",
  212.             "",
  213.             "51 bottles of beer on the wall, 51 bottles of beer.",
  214.             "Take one down and pass it around, 50 bottles of beer on the wall.",
  215.             "",
  216.             "50 bottles of beer on the wall, 50 bottles of beer.",
  217.             "Take one down and pass it around, 49 bottles of beer on the wall.",
  218.             "",
  219.             "49 bottles of beer on the wall, 49 bottles of beer.",
  220.             "Take one down and pass it around, 48 bottles of beer on the wall.",
  221.             "",
  222.             "48 bottles of beer on the wall, 48 bottles of beer.",
  223.             "Take one down and pass it around, 47 bottles of beer on the wall.",
  224.             "",
  225.             "47 bottles of beer on the wall, 47 bottles of beer.",
  226.             "Take one down and pass it around, 46 bottles of beer on the wall.",
  227.             "",
  228.             "46 bottles of beer on the wall, 46 bottles of beer.",
  229.             "Take one down and pass it around, 45 bottles of beer on the wall.",
  230.             "",
  231.             "45 bottles of beer on the wall, 45 bottles of beer.",
  232.             "Take one down and pass it around, 44 bottles of beer on the wall.",
  233.             "",
  234.             "44 bottles of beer on the wall, 44 bottles of beer.",
  235.             "Take one down and pass it around, 43 bottles of beer on the wall.",
  236.             "",
  237.             "43 bottles of beer on the wall, 43 bottles of beer.",
  238.             "Take one down and pass it around, 42 bottles of beer on the wall.",
  239.             "",
  240.             "42 bottles of beer on the wall, 42 bottles of beer.",
  241.             "Take one down and pass it around, 41 bottles of beer on the wall.",
  242.             "",
  243.             "41 bottles of beer on the wall, 41 bottles of beer.",
  244.             "Take one down and pass it around, 40 bottles of beer on the wall.",
  245.             "",
  246.             "40 bottles of beer on the wall, 40 bottles of beer.",
  247.             "Take one down and pass it around, 39 bottles of beer on the wall.",
  248.             "",
  249.             "39 bottles of beer on the wall, 39 bottles of beer.",
  250.             "Take one down and pass it around, 38 bottles of beer on the wall.",
  251.             "",
  252.             "38 bottles of beer on the wall, 38 bottles of beer.",
  253.             "Take one down and pass it around, 37 bottles of beer on the wall.",
  254.             "",
  255.             "37 bottles of beer on the wall, 37 bottles of beer.",
  256.             "Take one down and pass it around, 36 bottles of beer on the wall.",
  257.             "",
  258.             "36 bottles of beer on the wall, 36 bottles of beer.",
  259.             "Take one down and pass it around, 35 bottles of beer on the wall.",
  260.             "",
  261.             "35 bottles of beer on the wall, 35 bottles of beer.",
  262.             "Take one down and pass it around, 34 bottles of beer on the wall.",
  263.             "",
  264.             "34 bottles of beer on the wall, 34 bottles of beer.",
  265.             "Take one down and pass it around, 33 bottles of beer on the wall.",
  266.             "",
  267.             "33 bottles of beer on the wall, 33 bottles of beer.",
  268.             "Take one down and pass it around, 32 bottles of beer on the wall.",
  269.             "",
  270.             "32 bottles of beer on the wall, 32 bottles of beer.",
  271.             "Take one down and pass it around, 31 bottles of beer on the wall.",
  272.             "",
  273.             "31 bottles of beer on the wall, 31 bottles of beer.",
  274.             "Take one down and pass it around, 30 bottles of beer on the wall.",
  275.             "",
  276.             "30 bottles of beer on the wall, 30 bottles of beer.",
  277.             "Take one down and pass it around, 29 bottles of beer on the wall.",
  278.             "",
  279.             "29 bottles of beer on the wall, 29 bottles of beer.",
  280.             "Take one down and pass it around, 28 bottles of beer on the wall.",
  281.             "",
  282.             "28 bottles of beer on the wall, 28 bottles of beer.",
  283.             "Take one down and pass it around, 27 bottles of beer on the wall.",
  284.             "",
  285.             "27 bottles of beer on the wall, 27 bottles of beer.",
  286.             "Take one down and pass it around, 26 bottles of beer on the wall.",
  287.             "",
  288.             "26 bottles of beer on the wall, 26 bottles of beer.",
  289.             "Take one down and pass it around, 25 bottles of beer on the wall.",
  290.             "",
  291.             "25 bottles of beer on the wall, 25 bottles of beer.",
  292.             "Take one down and pass it around, 24 bottles of beer on the wall.",
  293.             "",
  294.             "24 bottles of beer on the wall, 24 bottles of beer.",
  295.             "Take one down and pass it around, 23 bottles of beer on the wall.",
  296.             "",
  297.             "23 bottles of beer on the wall, 23 bottles of beer.",
  298.             "Take one down and pass it around, 22 bottles of beer on the wall.",
  299.             "",
  300.             "22 bottles of beer on the wall, 22 bottles of beer.",
  301.             "Take one down and pass it around, 21 bottles of beer on the wall.",
  302.             "",
  303.             "21 bottles of beer on the wall, 21 bottles of beer.",
  304.             "Take one down and pass it around, 20 bottles of beer on the wall.",
  305.             "",
  306.             "20 bottles of beer on the wall, 20 bottles of beer.",
  307.             "Take one down and pass it around, 19 bottles of beer on the wall.",
  308.             "",
  309.             "19 bottles of beer on the wall, 19 bottles of beer.",
  310.             "Take one down and pass it around, 18 bottles of beer on the wall.",
  311.             "",
  312.             "18 bottles of beer on the wall, 18 bottles of beer.",
  313.             "Take one down and pass it around, 17 bottles of beer on the wall.",
  314.             "",
  315.             "17 bottles of beer on the wall, 17 bottles of beer.",
  316.             "Take one down and pass it around, 16 bottles of beer on the wall.",
  317.             "",
  318.             "16 bottles of beer on the wall, 16 bottles of beer.",
  319.             "Take one down and pass it around, 15 bottles of beer on the wall.",
  320.             "",
  321.             "15 bottles of beer on the wall, 15 bottles of beer.",
  322.             "Take one down and pass it around, 14 bottles of beer on the wall.",
  323.             "",
  324.             "14 bottles of beer on the wall, 14 bottles of beer.",
  325.             "Take one down and pass it around, 13 bottles of beer on the wall.",
  326.             "",
  327.             "13 bottles of beer on the wall, 13 bottles of beer.",
  328.             "Take one down and pass it around, 12 bottles of beer on the wall.",
  329.             "",
  330.             "12 bottles of beer on the wall, 12 bottles of beer.",
  331.             "Take one down and pass it around, 11 bottles of beer on the wall.",
  332.             "",
  333.             "11 bottles of beer on the wall, 11 bottles of beer.",
  334.             "Take one down and pass it around, 10 bottles of beer on the wall.",
  335.             "",
  336.             "10 bottles of beer on the wall, 10 bottles of beer.",
  337.             "Take one down and pass it around, 9 bottles of beer on the wall.",
  338.             "",
  339.             "9 bottles of beer on the wall, 9 bottles of beer.",
  340.             "Take one down and pass it around, 8 bottles of beer on the wall.",
  341.             "",
  342.             "8 bottles of beer on the wall, 8 bottles of beer.",
  343.             "Take one down and pass it around, 7 bottles of beer on the wall.",
  344.             "",
  345.             "7 bottles of beer on the wall, 7 bottles of beer.",
  346.             "Take one down and pass it around, 6 bottles of beer on the wall.",
  347.             "",
  348.             "6 bottles of beer on the wall, 6 bottles of beer.",
  349.             "Take one down and pass it around, 5 bottles of beer on the wall.",
  350.             "",
  351.             "5 bottles of beer on the wall, 5 bottles of beer.",
  352.             "Take one down and pass it around, 4 bottles of beer on the wall.",
  353.             "",
  354.             "4 bottles of beer on the wall, 4 bottles of beer.",
  355.             "Take one down and pass it around, 3 bottles of beer on the wall.",
  356.             "",
  357.             "3 bottles of beer on the wall, 3 bottles of beer.",
  358.             "Take one down and pass it around, 2 bottles of beer on the wall.",
  359.             "",
  360.             "2 bottles of beer on the wall, 2 bottles of beer.",
  361.             "Take one down and pass it around, 1 bottle of beer on the wall.",
  362.             "",
  363.             "1 bottle of beer on the wall, 1 bottle of beer.",
  364.             "Take it down and pass it around, no more bottles of beer on the wall.",
  365.             "",
  366.             "No more bottles of beer on the wall, no more bottles of beer.",
  367.             "Go to the store and buy some more, 99 bottles of beer on the wall.",
  368.         ]
  369.         self.assertEqual(recite(start=99, take=100), expected)
  370.  
  371.  
  372. if __name__ == "__main__":
  373.     unittest.main()
Add Comment
Please, Sign In to add comment