module T::Props::GeneratedCodeValidation
def self.validate_deserialize(source)
def self.validate_deserialize(source) parsed = parse(source) # def %<name>(hash) # ... # end assert_equal(:def, parsed.type) name, args, body = parsed.children assert_equal(:__t_props_generated_deserialize, name) assert_equal(s(:args, s(:arg, :hash)), args) assert_equal(:begin, body.type) init, *prop_clauses, ret = body.children # found = %<prop_count> # ... # found assert_equal(:lvasgn, init.type) init_name, init_val = init.children assert_equal(:found, init_name) assert_equal(:int, init_val.type) assert_equal(s(:lvar, :found), ret) prop_clauses.each_with_index do |clause, i| if i.even? validate_deserialize_hash_read(clause) else validate_deserialize_ivar_set(clause) end end end