Class: Contracts::Xor
- Inherits:
-
CallableClass
- Object
- CallableClass
- Contracts::Xor
- Defined in:
- lib/contracts/builtin_contracts.rb
Overview
Takes a variable number of contracts. The contract passes if exactly one of those contracts pass. Example: Xor[Fixnum, Float]
Instance Method Summary collapse
-
#initialize(*vals) ⇒ Xor
constructor
A new instance of Xor.
- #test_data ⇒ Object
- #testable? ⇒ Boolean
- #to_s ⇒ Object
- #valid?(val) ⇒ Boolean
Methods inherited from CallableClass
Constructor Details
#initialize(*vals) ⇒ Xor
Returns a new instance of Xor.
131 132 133 |
# File 'lib/contracts/builtin_contracts.rb', line 131 def initialize(*vals) @vals = vals end |
Instance Method Details
#test_data ⇒ Object
153 154 155 156 157 |
# File 'lib/contracts/builtin_contracts.rb', line 153 def test_data @vals.map { |val| Testable.test_data val }.flatten end |
#testable? ⇒ Boolean
147 148 149 150 151 |
# File 'lib/contracts/builtin_contracts.rb', line 147 def testable? @vals.all? do |val| Testable.testable? val end end |
#to_s ⇒ Object
143 144 145 |
# File 'lib/contracts/builtin_contracts.rb', line 143 def to_s @vals[0, @vals.size-1].join(", ") + " xor " + @vals[-1].to_s end |