Last active
December 20, 2015 11:09
-
-
Save danielfone/6120974 to your computer and use it in GitHub Desktop.
1. Download `devowelr.rb`
2. Make sure you can run it from the terminal `ruby ./devowelr.rb`
3. Make sure the result on the first run looks something like the first run below
4. Write code and run the tests until you get as many as possible green :)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env ruby | |
| # | |
| # Write a method that takes in a string and returns it | |
| # with all the vowels removed | |
| # | |
| def devowel(string) | |
| # Write code here... | |
| end | |
| # ------------------------------------- | |
| # Don't worry about anything below here | |
| # ------------------------------------- | |
| class MicroTest | |
| def self.test | |
| yield test = new | |
| test.puts_totals | |
| end | |
| def initialize | |
| @pass_count = 0 | |
| @fail_count = 0 | |
| end | |
| def puts_totals | |
| puts "---" | |
| puts_pass "Passed: #{@pass_count}" if @pass_count > 0 | |
| puts_fail "Failed: #{@fail_count}" if @fail_count > 0 | |
| end | |
| def assert_returns(method, input, expected) | |
| call_name = "devowel(#{input.inspect})" | |
| actual = send method, input rescue (puts_fail "#{call_name} raised exception #{$!}"; return) | |
| if actual == expected | |
| @pass_count += 1 | |
| puts_pass "#{call_name} returned #{actual.inspect}" | |
| else | |
| @fail_count += 1 | |
| puts_fail "Expected #{call_name} to return #{expected.inspect}" | |
| puts_fail "\t Returned #{actual.inspect} instead." | |
| end | |
| ensure | |
| puts | |
| end | |
| private | |
| def puts_pass(message) | |
| puts_color message, '32' | |
| end | |
| def puts_fail(message) | |
| puts_color message, '31' | |
| end | |
| def puts_color(message, color_code) | |
| puts "\e[0;#{color_code}m" << message << "\e[0m" | |
| end | |
| end | |
| MicroTest.test do |test| | |
| test.assert_returns :devowel, 'flicker', 'flckr' | |
| test.assert_returns :devowel, 'aaa', '' | |
| test.assert_returns :devowel, 'aeiou', '' | |
| test.assert_returns :devowel, 'google', 'ggl' | |
| test.assert_returns :devowel, 'Sage Harris','Sg Hrrs' | |
| test.assert_returns :devowel, nil, nil | |
| test.assert_returns :devowel, 1.2, 1.2 | |
| test.assert_returns :devowel, ['a', 'Dan'], ['a', 'Dan'] | |
| test.assert_returns :devowel, 'Dåñîêl', 'Dñl' | |
| rand_string = ("a" * rand(10)) + ("b" * rand(5)) | |
| test.assert_returns :devowel, rand_string, rand_string.delete('a') # hmmm, this could be helpful | |
| end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| $ ruby ./devowelr.rb | |
| Expected devowel("flicker") to return "flckr" | |
| Returned nil instead. | |
| Expected devowel("aaa") to return "" | |
| Returned nil instead. | |
| Expected devowel("aeiou") to return "" | |
| Returned nil instead. | |
| Expected devowel("google") to return "ggl" | |
| Returned nil instead. | |
| Expected devowel("Daniel") to return "Dnl" | |
| Returned nil instead. | |
| Expected devowel("Dåñîêl") to return "Dñl" | |
| Returned nil instead. | |
| devowel(nil) returned nil | |
| Expected devowel(1.2) to return 1.2 | |
| Returned nil instead. | |
| Expected devowel(["a", "Dan"]) to return ["a", "Dan"] | |
| Returned nil instead. | |
| --- | |
| Passed: 1 | |
| Failed: 8 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment