Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. #!/bin/ruby
  2.  
  3. require 'test/unit'
  4. require 'test/unit/ui/console/testrunner'
  5.  
  6. class Array
  7.  
  8. # Flatten the Array of nested arrays recursively
  9. # without using any pre-written methods.
  10. def flatten_array(result = [])
  11. self.each do |element|
  12. if element.instance_of?( Array )
  13. element.flatten_array(result)
  14. else
  15. result.push(element)
  16. end
  17. end
  18. result
  19. end
  20.  
  21. end
  22.  
  23. class ArrayTest < Test::Unit::TestCase
  24.  
  25. # Main test case
  26. def test_array
  27. array = [[1,2,[3]],4]
  28. expected_result = [1,2,3,4]
  29. actual_result = array.flatten_array
  30.  
  31. puts "Result: #{actual_result}"
  32.  
  33. assert_equal expected_result, actual_result, 'Arrays are not equal!'
  34. end
  35.  
  36. def test_array_individual_nesting
  37. array = [[[1],[2],[3]],[4]]
  38. expected_result = [1,2,3,4]
  39. actual_result = array.flatten_array
  40.  
  41. puts "Result: #{actual_result}"
  42.  
  43. assert_equal expected_result, actual_result, 'Arrays are not equal!'
  44. end
  45.  
  46. def test_array_multiple_nesting
  47. array = [[[1],[[[2]]],[3]],[4]]
  48. expected_result = [1,2,3,4]
  49. actual_result = array.flatten_array
  50.  
  51. puts "Result: #{actual_result}"
  52.  
  53. assert_equal expected_result, actual_result, 'Arrays are not equal!'
  54. end
  55.  
  56. end
  57.  
  58. # Run it...
  59. my_tests = Test::Unit::TestSuite.new('Array tests')
  60. my_tests << ArrayTest.new('test_array')
  61. my_tests << ArrayTest.new('test_array_individual_nesting')
  62. my_tests << ArrayTest.new('test_array_multiple_nesting')
  63.  
  64. Test::Unit::UI::Console::TestRunner.run(my_tests)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement