Methods
E
T
Instance Public methods
test_normalizations_C()
# File rails/activesupport/test/multibyte_conformance.rb, line 38
def test_normalizations_C
  each_line_of_norm_tests do |*cols|
    col1, col2, col3, col4, col5, comment = *cols
    
    # CONFORMANCE:
    # 1. The following invariants must be true for all conformant implementations
    #
    #    NFC
    #      c2 ==  NFC(c1) ==  NFC(c2) ==  NFC(c3)
    assert_equal col2.ui, @handler.normalize(col1, :c).ui, "Form C - Col 2 has to be NFC(1) - #{comment}"
    assert_equal col2.ui, @handler.normalize(col2, :c).ui, "Form C - Col 2 has to be NFC(2) - #{comment}"
    assert_equal col2.ui, @handler.normalize(col3, :c).ui, "Form C - Col 2 has to be NFC(3) - #{comment}"
    #
    #      c4 ==  NFC(c4) ==  NFC(c5)
    assert_equal col4.ui, @handler.normalize(col4, :c).ui, "Form C - Col 4 has to be C(4) - #{comment}"
    assert_equal col4.ui, @handler.normalize(col5, :c).ui, "Form C - Col 4 has to be C(5) - #{comment}"
  end
end
test_normalizations_D()
# File rails/activesupport/test/multibyte_conformance.rb, line 57
def test_normalizations_D
  each_line_of_norm_tests do |*cols|
    col1, col2, col3, col4, col5, comment = *cols
    #
    #    NFD
    #      c3 ==  NFD(c1) ==  NFD(c2) ==  NFD(c3)
    assert_equal col3.ui, @handler.normalize(col1, :d).ui, "Form D - Col 3 has to be NFD(1) - #{comment}"
    assert_equal col3.ui, @handler.normalize(col2, :d).ui, "Form D - Col 3 has to be NFD(2) - #{comment}"
    assert_equal col3.ui, @handler.normalize(col3, :d).ui, "Form D - Col 3 has to be NFD(3) - #{comment}"
    #      c5 ==  NFD(c4) ==  NFD(c5)
    assert_equal col5.ui, @handler.normalize(col4, :d).ui, "Form D - Col 5 has to be NFD(4) - #{comment}"
    assert_equal col5.ui, @handler.normalize(col5, :d).ui, "Form D - Col 5 has to be NFD(5) - #{comment}"
  end
end
test_normalizations_KC()
# File rails/activesupport/test/multibyte_conformance.rb, line 72
def test_normalizations_KC
  each_line_of_norm_tests do | *cols |
    col1, col2, col3, col4, col5, comment = *cols  
    #
    #    NFKC
    #      c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
    assert_equal col4.ui, @handler.normalize(col1, :kc).ui, "Form D - Col 4 has to be NFKC(1) - #{comment}"
    assert_equal col4.ui, @handler.normalize(col2, :kc).ui, "Form D - Col 4 has to be NFKC(2) - #{comment}"
    assert_equal col4.ui, @handler.normalize(col3, :kc).ui, "Form D - Col 4 has to be NFKC(3) - #{comment}"
    assert_equal col4.ui, @handler.normalize(col4, :kc).ui, "Form D - Col 4 has to be NFKC(4) - #{comment}"
    assert_equal col4.ui, @handler.normalize(col5, :kc).ui, "Form D - Col 4 has to be NFKC(5) - #{comment}"
  end
end
test_normalizations_KD()
# File rails/activesupport/test/multibyte_conformance.rb, line 86
def test_normalizations_KD
  each_line_of_norm_tests do | *cols |
    col1, col2, col3, col4, col5, comment = *cols  
    #
    #    NFKD
    #      c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
    assert_equal col5.ui, @handler.normalize(col1, :kd).ui, "Form KD - Col 5 has to be NFKD(1) - #{comment}"
    assert_equal col5.ui, @handler.normalize(col2, :kd).ui, "Form KD - Col 5 has to be NFKD(2) - #{comment}"
    assert_equal col5.ui, @handler.normalize(col3, :kd).ui, "Form KD - Col 5 has to be NFKD(3) - #{comment}"
    assert_equal col5.ui, @handler.normalize(col4, :kd).ui, "Form KD - Col 5 has to be NFKD(4) - #{comment}"
    assert_equal col5.ui, @handler.normalize(col5, :kd).ui, "Form KD - Col 5 has to be NFKD(5) - #{comment}"
  end
end
Instance Protected methods
each_line_of_norm_tests(&block)
# File rails/activesupport/test/multibyte_conformance.rb, line 101
def each_line_of_norm_tests(&block)
  lines = 0
  max_test_lines = 0 # Don't limit below 38, because that's the header of the testfile
  File.open(File.dirname(__FILE__) + '/cache' + UNIDATA_FILE, 'r') do | f |
    until f.eof? || (max_test_lines > 38 and lines > max_test_lines)
      lines += 1
      line = f.gets.chomp!
      next if (line.empty? || line =~ %r^\#/)      
      
      cols, comment = line.split("#")
      cols = cols.split(";").map{|e| e.strip}.reject{|e| e.empty? }
      next unless cols.length == 5
      
      # codepoints are in hex in the test suite, pack wants them as integers
      cols.map!{|c| c.split.map{|codepoint| codepoint.to_i(16)}.pack("U*") }
      cols << comment
      
      yield(*cols)
    end
  end
end