tc_yaml.rb

来自「用ruby on rails写的一个博客程序,还不错..ruby on rail」· RB 代码 · 共 229 行

RB
229
字号
$:.unshift File.dirname(__FILE__) +"/../../lib"require 'test/unit'require 'syntax/lang/yaml'class TC_Syntax_YAML < Test::Unit::TestCase  def setup    @yaml = Syntax::YAML.new  end  def test_empty    called = false    @yaml.tokenize( "" ) { |tok| called = true }    assert !called  end  def test_doc_notype    tok = []    @yaml.tokenize( "---\n" ) { |t| tok << t }    assert_equal [ :document, "---" ], [ tok.first.group, tok.shift ]  end  def test_doc_type    tok = []    @yaml.tokenize( "--- !foo/bar/^type \n" ) { |t| tok << t }    assert_equal [ :document, "--- !foo/bar/^type " ], [ tok.first.group, tok.shift ]  end  def test_key_no_indent    tok = []    @yaml.tokenize( "foo : bar" ) { |t| tok << t }    assert_equal [ :key, "foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " " ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " bar" ], [ tok.first.group, tok.shift ]  end  def test_key_indent    tok = []    @yaml.tokenize( "  foo : bar" ) { |t| tok << t }    assert_equal [ :normal, "  " ], [ tok.first.group, tok.shift ]    assert_equal [ :key, "foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " " ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " bar" ], [ tok.first.group, tok.shift ]  end  def test_key_quoted    tok = []    @yaml.tokenize( "  'foo' : bar" ) { |t| tok << t }    assert_equal [ :normal, "  " ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, "'" ], [ tok.first.group, tok.shift ]    assert_equal [ :string, "foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, "'" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " " ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " bar" ], [ tok.first.group, tok.shift ]  end  def test_key_no_value    tok = []    @yaml.tokenize( "  foo: \n  bar:\n" ) { |t| tok << t }    assert_equal [ :normal, "  " ], [ tok.first.group, tok.shift ]    assert_equal [ :key, "foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " \n  " ], [ tok.first.group, tok.shift ]    assert_equal [ :key, "bar" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, "\n" ], [ tok.first.group, tok.shift ]  end  def test_list_no_indent    tok = []    @yaml.tokenize( "- bar" ) { |t| tok << t }    assert_equal [ :punct, "-" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " bar" ], [ tok.first.group, tok.shift ]  end  def test_list_indent    tok = []    @yaml.tokenize( "  - bar" ) { |t| tok << t }    assert_equal [ :normal, "  " ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, "-" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " bar" ], [ tok.first.group, tok.shift ]  end  def test_blank_lines    tok = []    @yaml.tokenize( "foo: bar\n\n\nbaz: bang" ) { |t| tok << t }    assert_equal [ :key, "foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " bar\n\n\n" ], [ tok.first.group, tok.shift ]    assert_equal [ :key, "baz" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " bang" ], [ tok.first.group, tok.shift ]  end  def test_type    tok = []    @yaml.tokenize( "  - !name/space^type\n    - foo" ) { |t| tok << t }    assert_equal [ :normal, "  " ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, "-" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " " ], [ tok.first.group, tok.shift ]    assert_equal [ :type, "!name/space^type" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, "\n    " ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, "-" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " foo" ], [ tok.first.group, tok.shift ]  end  def test_anchor_ref    tok = []    @yaml.tokenize( "foo: &blah\nbar: *blah" ) { |t| tok << t }    assert_equal [ :key, "foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " " ], [ tok.first.group, tok.shift ]    assert_equal [ :anchor, "&blah" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, "\n" ], [ tok.first.group, tok.shift ]    assert_equal [ :key, "bar" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " " ], [ tok.first.group, tok.shift ]    assert_equal [ :ref, "*blah" ], [ tok.first.group, tok.shift ]  end  def test_time    tok = []    @yaml.tokenize( "foo: 01:23:45\n" ) { |t| tok << t }    assert_equal [ :key, "foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " " ], [ tok.first.group, tok.shift ]    assert_equal [ :time, "01:23:45" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, "\n" ], [ tok.first.group, tok.shift ]  end  def test_date    tok = []    @yaml.tokenize( "foo: 1234-56-78 01:23:45.123456 +01:23\n" ) { |t| tok << t }    assert_equal [ :key, "foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " " ], [ tok.first.group, tok.shift ]    assert_equal [ :date, "1234-56-78 01:23:45.123456 +01:23" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, "\n" ], [ tok.first.group, tok.shift ]  end  def test_string_dquote    tok = []    @yaml.tokenize( 'foo: "this is a \"string\""' ) { |t| tok << t }    assert_equal [ :key, "foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " " ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, '"' ], [ tok.first.group, tok.shift ]    assert_equal [ :string, 'this is a ' ], [ tok.first.group, tok.shift ]    assert_equal [ :expr, '\"' ], [ tok.first.group, tok.shift ]    assert_equal [ :string, 'string' ], [ tok.first.group, tok.shift ]    assert_equal [ :expr, '\"' ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, '"' ], [ tok.first.group, tok.shift ]  end  def test_string_squote    tok = []    @yaml.tokenize( "foo: 'this is a \\\"string\\\"'" ) { |t| tok << t }    assert_equal [ :key, "foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " " ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, "'" ], [ tok.first.group, tok.shift ]    assert_equal [ :string, 'this is a \"string\"' ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, "'" ], [ tok.first.group, tok.shift ]  end  def test_symbol    tok = []    @yaml.tokenize( "  :foo: 'this is a \\\"string\\\"'" ) { |t| tok << t }    assert_equal [ :normal, "  " ], [ tok.first.group, tok.shift ]    assert_equal [ :symbol, ":foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]  end  def test_comment    tok = []    @yaml.tokenize( "foo: a value # comment\n# another comment: foo\n" ) { |t| tok << t }    assert_equal [ :key, "foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " a value " ], [ tok.first.group, tok.shift ]    assert_equal [ :comment, "# comment" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, "\n" ], [ tok.first.group, tok.shift ]    assert_equal [ :comment, "# another comment: foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, "\n" ], [ tok.first.group, tok.shift ]  end  def test_long_text    tok = []    text = <<EOFfoo: >-  a b c d  e f g  h i  j k l  m nbar: bazEOF    @yaml.tokenize( text ) { |t| tok << t }    assert_equal [ :key, "foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " " ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ">-" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, "\n" ], [ tok.first.group, tok.shift ]    assert_equal [ :string, "  a b c d\n  e f g\n\n  h i\n\n\n  j k l\n  m n\n\n" ], [ tok.first.group, tok.shift ]    assert_equal [ :key, "bar" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " baz\n" ], [ tok.first.group, tok.shift ]  end  def test_long_test_at_eof    tok = []    @yaml.tokenize( "foo: >\n  one two\n  three four" ) { |t| tok << t }    assert_equal [ :key, "foo" ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ":" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, " " ], [ tok.first.group, tok.shift ]    assert_equal [ :punct, ">" ], [ tok.first.group, tok.shift ]    assert_equal [ :normal, "\n" ], [ tok.first.group, tok.shift ]    assert_equal [ :string, "  one two\n  three four" ], [ tok.first.group, tok.shift ]  endend

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?