Guest User

Untitled

a guest
Jan 26th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. require 'rspec'
  2.  
  3. class TriangleClassifier
  4. def classify(len1, len2, len3)
  5. lengths = [len1, len2, len3].sort
  6. raise ArgumentError unless lengths.select {|length| length <= 0}.empty?
  7. raise ArgumentError unless lengths[0] + lengths[1] > lengths[2]
  8. case lengths.uniq.count
  9. when 3 then :scalene
  10. when 2 then :isoceles
  11. when 1 then :equilateral
  12. end
  13. end
  14. end
  15.  
  16. describe TriangleClassifier do
  17. before(:each) do
  18. @classifier = TriangleClassifier.new
  19. end
  20.  
  21. it "returns scalene if all three sides are different lengths" do
  22. @classifier.classify(3, 4, 5).should == :scalene
  23. @classifier.classify(50, 87, 94).should == :scalene
  24. @classifier.classify(307, 9, 308).should == :scalene
  25. end
  26.  
  27. it "returns isoceles if two sides are equal lengths" do
  28. @classifier.classify(3, 3, 5).should == :isoceles
  29. @classifier.classify(4, 6, 4).should == :isoceles
  30. @classifier.classify(2, 200, 200).should == :isoceles
  31. end
  32.  
  33. it "returns equilateral if all three sides are equal lengths" do
  34. @classifier.classify(3, 3, 3).should == :equilateral
  35. @classifier.classify(1, 1, 1).should == :equilateral
  36. @classifier.classify(170, 170, 170).should == :equilateral
  37. end
  38.  
  39. it "raises ArgumentError if any given length is less than or equal to 0" do
  40. lambda {@classifier.classify(3, 2, 0)}.should raise_error ArgumentError
  41. lambda {@classifier.classify(4, 4, -4)}.should raise_error ArgumentError
  42. lambda {@classifier.classify(0, 0, 0)}.should raise_error ArgumentError
  43. end
  44.  
  45. it "raises ArgumentError if the sum of two lengths are not greater than the third" do
  46. lambda {@classifier.classify(1, 2, 3)}.should raise_error ArgumentError
  47. lambda {@classifier.classify(50, 87, 402)}.should raise_error ArgumentError
  48. lambda {@classifier.classify(307, 9, 117)}.should raise_error ArgumentError
  49. end
  50. end
Add Comment
Please, Sign In to add comment