class StableMatching::Marriage::Validator
Public Class Methods
new(preference_table, partner_table)
click to toggle source
# File lib/stable-matching/marriage/validator.rb, line 16 def initialize(preference_table, partner_table) @preference_table = preference_table @partner_table = partner_table end
validate_pair!(alpha_preferences, beta_preferences)
click to toggle source
# File lib/stable-matching/marriage/validator.rb, line 11 def self.validate_pair!(alpha_preferences, beta_preferences) new(alpha_preferences, beta_preferences).validate! new(beta_preferences, alpha_preferences).validate! end
Public Instance Methods
validate!()
click to toggle source
# File lib/stable-matching/marriage/validator.rb, line 21 def validate! case when !hash_of_arrays? then handle_not_hash_of_arrays when empty? then handle_empty when !strings_or_integers? then handle_not_strings_or_integers when !symmetrical? then handle_not_symmetrical end raise ::StableMatching::InvalidPreferences, @error if @error end
Private Instance Methods
symmetrical?()
click to toggle source
# File lib/stable-matching/marriage/validator.rb, line 34 def symmetrical? @preference_table.each do |name, preference_list| expected_members = @partner_table.keys - [name] actual_members = preference_list next if expected_members.sort == actual_members.sort @name = name @extra = actual_members - expected_members @missing = expected_members - actual_members return false end true end