Class: Test::Unit::Assertions::AssertionMessage
  
  
  
  
  
    - Inherits:
- 
      Object
      
        
          - Object
- Test::Unit::Assertions::AssertionMessage
 show all
      - Includes:
- Util::BacktraceFilter
    - Defined in:
- lib/test/unit/assertions.rb,
 lib/test/unit/assertions.rb,
 lib/test/unit/assertions.rb,
 lib/test/unit/assertions.rb,
 lib/test/unit/assertions.rb,
 lib/test/unit/assertions.rb,
 lib/test/unit/assertions.rb
 
Defined Under Namespace
  
    
  
    
      Classes: ArrayInspector, DelayedLiteral, HashInspector, Inspector, Literal, MaybeContainer, NumericInspector, Template
    
  
  
    
      Constant Summary
      collapse
    
    
      
        - MAX_DIFF_TARGET_STRING_SIZE =
          
        
- 1000 
- @@max_diff_target_string_size =
          
        
- nil 
Util::BacktraceFilter::POWERASSERT_PREFIX, Util::BacktraceFilter::TESTUNIT_FILE_SEPARATORS, Util::BacktraceFilter::TESTUNIT_PREFIX, Util::BacktraceFilter::TESTUNIT_RB_FILE
  Class Attribute Summary collapse
  
  
    
      Class Method Summary
      collapse
    
    
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  
  filter_backtrace
  Constructor Details
  
    
  
  
    #initialize(user_message, template_string, parameters)  ⇒ AssertionMessage 
  
  
  
  
    Returns a new instance of AssertionMessage.
   
 
  
  
    | 
2069
2070
2071
2072
2073 | # File 'lib/test/unit/assertions.rb', line 2069
def initialize(head, template_string, parameters)
  @head = head
  @template_string = template_string
  @parameters = parameters
end | 
 
  
 
  
    Class Attribute Details
    
      
      
      
  
  
    .use_pp  ⇒ Object 
  
  
  
  
    Returns the value of attribute use_pp
   
 
  
  
    | 
1697
1698
1699 | # File 'lib/test/unit/assertions.rb', line 1697
def use_pp
  @use_pp
end | 
 
    
   
  
    Class Method Details
    
      
  
  
    .convert(object)  ⇒ Object 
  
  
  
  
    | 
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802 | # File 'lib/test/unit/assertions.rb', line 1785
def convert(object)
  if object.is_a?(Exception)
    object = AssertExceptionHelper::WrappedException.new(object)
  end
  inspector = Inspector.new(object)
  if use_pp
    begin
      require "pp" unless defined?(PP)
      begin
        return PP.pp(inspector, String.new).chomp
      rescue NameError
      end
    rescue LoadError
      self.use_pp = false
    end
  end
  inspector.inspect
end | 
 
    
      
  
  
    .delayed_diff(from, to)  ⇒ Object 
  
  
  
  
    | 
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783 | # File 'lib/test/unit/assertions.rb', line 1762
def delayed_diff(from, to)
  delayed_literal do
    from, to = prepare_for_diff(from, to)
    diff = "" if from.nil? or to.nil?
    diff ||= Diff.readable(from, to)
    if /^[-+]/ !~ diff
      diff = ""
    elsif /^[ ?]/ =~ diff or /(?:.*\n){2,}/ =~ diff
      diff = "\n\ndiff:\n#{diff}"
    else
      diff = ""
    end
    if Diff.need_fold?(diff)
      folded_diff = Diff.folded_readable(from, to)
      diff += "\n\nfolded diff:\n#{folded_diff}"
    end
    diff
  end
end | 
 
    
      
  
  
    .delayed_literal(&block)  ⇒ Object 
  
  
  
  
    | 
1703
1704
1705 | # File 'lib/test/unit/assertions.rb', line 1703
def delayed_literal(&block)
  DelayedLiteral.new(block)
end | 
 
    
      
  
  
    .diff_target_string?(string)  ⇒ Boolean 
  
  
  
  
    | 
1731
1732
1733
1734
1735
1736
1737 | # File 'lib/test/unit/assertions.rb', line 1731
def diff_target_string?(string)
  if string.respond_to?(:bytesize)
    string.bytesize < max_diff_target_string_size
  else
    string.size < max_diff_target_string_size
  end
end | 
 
    
      
  
  
    .ensure_diffable_string(string)  ⇒ Object 
  
  
  
  
    | 
1739
1740
1741
1742
1743
1744
1745 | # File 'lib/test/unit/assertions.rb', line 1739
def ensure_diffable_string(string)
  if string.respond_to?(:encoding) and
      !string.encoding.ascii_compatible?
    string = string.dup.force_encoding("ASCII-8BIT")
  end
  string
end | 
 
    
      
  
  
    .literal(value)  ⇒ Object 
  
  
  
  
    | 
1699
1700
1701 | # File 'lib/test/unit/assertions.rb', line 1699
def literal(value)
  Literal.new(value)
end | 
 
    
      
  
  
    .max_diff_target_string_size  ⇒ Object 
  
  
  
  
    | 
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724 | # File 'lib/test/unit/assertions.rb', line 1712
def max_diff_target_string_size
  return @@max_diff_target_string_size if @@max_diff_target_string_size
  size = ENV["TEST_UNIT_MAX_DIFF_TARGET_STRING_SIZE"]
  if size
    begin
      size = Integer(size)
    rescue ArgumentError
      size = nil
    end
  end
  size || MAX_DIFF_TARGET_STRING_SIZE
end | 
 
    
      
  
  
    .max_diff_target_string_size=(size)  ⇒ Object 
  
  
  
  
    | 
1727
1728
1729 | # File 'lib/test/unit/assertions.rb', line 1727
def max_diff_target_string_size=(size)
  @@max_diff_target_string_size = size
end | 
 
    
      
  
  
    .maybe_container(value, &formatter)  ⇒ Object 
  
  
  
  
    | 
1707
1708
1709 | # File 'lib/test/unit/assertions.rb', line 1707
def maybe_container(value, &formatter)
  MaybeContainer.new(value, &formatter)
end | 
 
    
      
  
  
    .prepare_for_diff(from, to)  ⇒ Object 
  
  
  
  
    | 
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760 | # File 'lib/test/unit/assertions.rb', line 1747
def prepare_for_diff(from, to)
  if !from.is_a?(String) or !to.is_a?(String)
    from = convert(from)
    to = convert(to)
  end
  if diff_target_string?(from) and diff_target_string?(to)
    from = ensure_diffable_string(from)
    to = ensure_diffable_string(to)
    [from, to]
  else
    [nil, nil]
  end
end | 
 
    
   
  
    Instance Method Details
    
      
  
  
    #convert(object)  ⇒ Object 
  
  
  
  
    | 
2075
2076
2077 | # File 'lib/test/unit/assertions.rb', line 2075
def convert(object)
  self.class.convert(object)
end | 
 
    
      
  
  
    #template  ⇒ Object 
  
  
  
  
    | 
2079
2080
2081 | # File 'lib/test/unit/assertions.rb', line 2079
def template
  @template ||= Template.create(@template_string)
end | 
 
    
      
  
  
    #to_s  ⇒ Object 
  
  
  
  
    | 
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100 | # File 'lib/test/unit/assertions.rb', line 2087
def to_s
  message_parts = []
  if (@head)
    head = @head
    head = head.call if head.respond_to?(:call)
    head = head.to_s
    unless(head.empty?)
      message_parts << add_period(head)
    end
  end
  tail = template.result(@parameters.collect{|e| convert(e)})
  message_parts << tail unless(tail.empty?)
  message_parts.join("\n")
end | 
 
    
      
  
  
    #user_message  ⇒ Object 
  
  
  
  
    | 
2091
2092
2093
2094
2095
2096 | # File 'lib/test/unit/assertions.rb', line 2091
def user_message
  return nil unless @user_message
  message = @user_message
  message = message.call if message.respond_to?(:call)
  message.to_s
end |