Sha256: 6117cf4ee7aba8930cdff4849a6f8a97d4d69e96b8fc8fb60178dece940163d4

Contents?: true

Size: 1.36 KB

Versions: 49

Compression:

Stored size: 1.36 KB

Contents

module Bench
  module Utils
    include Logging
    
    def compare(name1,s1,name2,s2)
      r1 = diff([],name1,s1,name2,s2)
      r2 = diff([],name2,s2,name1,s1)
      r1.size > r2.size ? r1 : r2
    end
    
    def diff(res,lname,lvalue,rname,rvalue,path=[])

      return res if lvalue == rvalue
      
      if lvalue.is_a?(Array) and rvalue
        lvalue.each_index do |index| 
          p = Array.new(path)
          p << index
          diff(res,lname,lvalue[index],rname,rvalue.at(index),p)
        end                
      elsif lvalue.is_a?(Hash) and rvalue
        lvalue.each do |key,value| 
          p = Array.new(path)
          p << key
          diff(res,lname,value,rname,rvalue[key],p)
        end
      else            
        res << {:path=>path,lname=>lvalue,rname=>rvalue}
      end
      
      res 
    end
    
    def compare_and_log(expected,actual,caller)
      if expected != actual
        logger.error "#{log_prefix} Verify error at: " + caller
        logger.error "#{log_prefix} Message diff: "
        compare(:expected,expected,:actual,actual).each do |diff|
          logger.error "#{log_prefix} Path: #{diff[:path].join('/')}"
          logger.error "#{log_prefix} Expected: #{diff[:expected].inspect}"
          logger.error "#{log_prefix} Actual: #{diff[:actual].inspect}"
        end
        1
      else
        0
      end
    end
  end
end

Version data entries

49 entries across 49 versions & 1 rubygems

Version Path
rhosync-2.1.18.beta2 bench/lib/bench/utils.rb
rhosync-2.1.18.beta1 bench/lib/bench/utils.rb
rhosync-2.1.17 bench/lib/bench/utils.rb
rhosync-2.1.17.beta7 bench/lib/bench/utils.rb
rhosync-2.1.17.beta6 bench/lib/bench/utils.rb
rhosync-2.1.17.beta5 bench/lib/bench/utils.rb
rhosync-2.1.17.beta4 bench/lib/bench/utils.rb
rhosync-2.1.17.beta3 bench/lib/bench/utils.rb
rhosync-2.1.17.beta2 bench/lib/bench/utils.rb
rhosync-2.1.17.beta1 bench/lib/bench/utils.rb
rhosync-2.1.16 bench/lib/bench/utils.rb
rhosync-2.1.15 bench/lib/bench/utils.rb
rhosync-2.1.14 bench/lib/bench/utils.rb
rhosync-2.1.13 bench/lib/bench/utils.rb
rhosync-2.1.12 bench/lib/bench/utils.rb
rhosync-2.1.11 bench/lib/bench/utils.rb
rhosync-2.1.10 bench/lib/bench/utils.rb
rhosync-2.1.7 bench/lib/bench/utils.rb
rhosync-2.1.6 bench/lib/bench/utils.rb
rhosync-2.1.3 bench/lib/bench/utils.rb