Guest User

Untitled

a guest
May 24th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. class Should
  2. def initialize(source, reverse = false)
  3. @source = source
  4. @reverse = reverse
  5. self
  6. end
  7.  
  8. def ==( arg )
  9. result = execute_and_check(:==, arg)
  10.  
  11. unless result
  12. raise RuntimeError.new("Expected #{@source} to == #{result}")
  13. end
  14. true
  15. end
  16.  
  17. def method_missing(method_name, *args)
  18. if @source.respond_to?(method_name)
  19. result = execute_and_check(method_name, *args)
  20.  
  21. unless result
  22. raise RuntimeError.new("Expected #{@source} to #{method_name} #{args.first}")
  23. end
  24. true
  25. else
  26. super
  27. end
  28. end
  29.  
  30. def execute_and_check( method_name, *args )
  31. result = @source.send(method_name, *args)
  32. boolean_result = @reverse ? !result : result
  33.  
  34. boolean_result
  35. end
  36.  
  37. end
  38.  
  39. class Object
  40. def should
  41. Should.new(self)
  42. end
  43.  
  44. alias :should_be :should
  45.  
  46. def should_not
  47. Should.new(self, true)
  48. end
  49.  
  50. alias :should_not_be :should_not
  51. end
  52.  
  53. require 'test/unit'
  54. require 'rubygems'
  55. require 'shoulda'
  56.  
  57. class ShouldTest < Test::Unit::TestCase
  58. context "it should" do
  59. should "work" do
  60. 1.should == 1
  61. 1.should_not == 2
  62. 1.should_be >= 1
  63. 1.should_not_be > 1
  64. 1.should_not_be <= 0
  65. end
  66.  
  67. should "work in the negative" do
  68. assert_raises(RuntimeError) do
  69. 1.should == 2
  70. end
  71. end
  72. end
  73. end
Add Comment
Please, Sign In to add comment