Module: DBC
- Defined in:
- lib/dbc.rb
Overview
DBC = Design By Contract, approche proposee initialement par Bertrand Meyer, notamment dans le langage Eiffel.
Support pour l'approche DBC... tres informel et "light"!
Defined Under Namespace
Classes: Failure
Class Method Summary collapse
-
.assert(condition, message = nil) ⇒ void
Verifie une assertion generale.
-
.check_keyword_arguments(args, expected_keywords, message = '*** ') ⇒ void
Verifie si les arguments specifies par mot-cles contiennent uniquement certains mots-cles permis.
-
.check_type(val, expected_type, message = '*** ') ⇒ void
Verifie le type d'un argument d'une methode.
-
.check_value(val, expected_value, message = '*** ') ⇒ void
Verifie la valeur specifique d'un argument d'une methode.
-
.ensure(condition, message = nil) ⇒ void
Verifie une postcondition (consequent).
-
.invariant(condition, message = nil) ⇒ void
Verifie un invariant.
-
.require(condition, message = nil) ⇒ void
Verifie une precondition (antecedent).
Class Method Details
.assert(condition, message = nil) ⇒ void
This method returns an undefined value.
Verifie une assertion generale.
22 23 24 |
# File 'lib/dbc.rb', line 22 def assert( condition, = nil ) fail Failure, "Assertion failed: #{}" unless condition end |
.check_keyword_arguments(args, expected_keywords, message = '*** ') ⇒ void
This method returns an undefined value.
Verifie si les arguments specifies par mot-cles contiennent uniquement certains mots-cles permis.
96 97 98 99 100 |
# File 'lib/dbc.rb', line 96 def check_keyword_arguments( args, expected_keywords, = '*** ' ) invalid_kw = args.keys.select { |kw| !(expected_keywords.include? kw) } fail Failure, + "A keyword argument (in #{invalid_kw}) is not appropriate (not in #{expected_keywords})" unless invalid_kw.empty? end |
.check_type(val, expected_type, message = '*** ') ⇒ void
This method returns an undefined value.
Verifie le type d'un argument d'une methode. Utile pour avoir des constructeurs flexibles.
64 65 66 67 68 69 70 |
# File 'lib/dbc.rb', line 64 def check_type( val, expected_type, = '*** ' ) if expected_type.class == Array fail Failure, + "The type of #{val} is not in #{expected_type.inspect}" unless expected_type.include? val.class else fail Failure, + "The type of #{val} is not #{expected_type.inspect}" unless val.kind_of? expected_type end end |
.check_value(val, expected_value, message = '*** ') ⇒ void
This method returns an undefined value.
Verifie la valeur specifique d'un argument d'une methode. Utile pour avoir des constructeurs flexibles.
80 81 82 83 84 85 86 |
# File 'lib/dbc.rb', line 80 def check_value( val, expected_value, = '*** ' ) if expected_value.class == Array fail Failure, + "Value #{val} is not in #{expected_value.inspect}" unless expected_value.include? val else fail Failure, + "Value #{val} is not equal to #{expected_value.inspect}" unless val == expected_value end end |
.ensure(condition, message = nil) ⇒ void
This method returns an undefined value.
Verifie une postcondition (consequent).
42 43 44 |
# File 'lib/dbc.rb', line 42 def ensure( condition, = nil ) fail Failure, "Postcondition failed: #{}" unless condition end |
.invariant(condition, message = nil) ⇒ void
This method returns an undefined value.
Verifie un invariant.
52 53 54 |
# File 'lib/dbc.rb', line 52 def invariant( condition, = nil ) fail Failure, "Invariant failed: #{}" unless condition end |
.require(condition, message = nil) ⇒ void
This method returns an undefined value.
Verifie une precondition (antecedent).
32 33 34 |
# File 'lib/dbc.rb', line 32 def require( condition, = nil ) fail Failure, "Precondition failed: #{}" unless condition end |