📄 mbyaml.t
字号:
#!/usr/local/bin/perl -wuse strict;use lib $ENV{PERL_CORE} ? '../lib/Module/Build/t/lib' : 't/lib';use MBTest 'no_plan';my ($dir);$dir = ".";$dir = "t" if (-d "t");{ use_ok("Module::Build::YAML"); my ($expected, $got, $var); ########################################################## # Test a typical-looking Module::Build structure (alphabetized) ########################################################## $var = { 'resources' => { 'license' => 'http://opensource.org/licenses/artistic-license.php' }, 'meta-spec' => { 'version' => '1.2', 'url' => 'http://module-build.sourceforge.net/META-spec-v1.2.html' }, 'generated_by' => 'Module::Build version 0.2709', 'version' => '0.13', 'name' => 'js-app', 'dynamic_config' => '1', 'author' => [ '"Stephen Adkins" <spadkins@gmail.com>' ], 'license' => 'lgpl', 'build_requires' => { 'App::Build' => '0', 'File::Spec' => '0', 'Module::Build' => '0' }, 'provides' => { 'JavaScript::App' => { 'version' => '0', 'file' => 'lib/JavaScript/App.pm' } }, 'requires' => { 'App::Options' => '0' }, 'abstract' => 'A framework for building dynamic widgets or full applications in Javascript' }; $expected = <<'EOF';---abstract: A framework for building dynamic widgets or full applications in Javascriptauthor: - '"Stephen Adkins" <spadkins@gmail.com>'build_requires: App::Build: 0 File::Spec: 0 Module::Build: 0dynamic_config: 1generated_by: Module::Build version 0.2709license: lgplmeta-spec: url: http://module-build.sourceforge.net/META-spec-v1.2.html version: 1.2name: js-appprovides: JavaScript::App: file: lib/JavaScript/App.pm version: 0requires: App::Options: 0resources: license: http://opensource.org/licenses/artistic-license.phpversion: 0.13EOF $got = &Module::Build::YAML::Dump($var); is($got, $expected, "Dump(): single deep hash"); ########################################################## # Test a typical-looking Module::Build structure (ordered) ########################################################## $expected = <<'EOF';---name: js-appversion: 0.13author: - '"Stephen Adkins" <spadkins@gmail.com>'abstract: A framework for building dynamic widgets or full applications in Javascriptlicense: lgplresources: license: http://opensource.org/licenses/artistic-license.phprequires: App::Options: 0build_requires: App::Build: 0 File::Spec: 0 Module::Build: 0dynamic_config: 1provides: JavaScript::App: file: lib/JavaScript/App.pm version: 0generated_by: Module::Build version 0.2709meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.2.html version: 1.2EOF $var->{_order} = [qw(name version author abstract license resources requires build_requires dynamic_config provides)]; $got = &Module::Build::YAML::Dump($var); is($got, $expected, "Dump(): single deep hash, ordered"); ########################################################## # Test that an array turns into multiple documents ########################################################## $var = [ "e", 2.71828, [ "pi", "is", 3.1416 ], { fun => "under_sun", 6 => undef, "more", undef }, ]; $expected = <<'EOF';---e---2.71828---- pi- is- 3.1416---6: ~fun: under_sunmore: ~EOF $got = &Module::Build::YAML::Dump(@$var); is($got, $expected, "Dump(): multiple, various"); ########################################################## # Test that a single array ref turns into one document ########################################################## $expected = <<'EOF';---- e- 2.71828- - pi - is - 3.1416- 6: ~ fun: under_sun more: ~EOF $got = &Module::Build::YAML::Dump($var); is($got, $expected, "Dump(): single array of various"); ########################################################## # Test Object-Oriented Flavor of the API ########################################################## my $y = Module::Build::YAML->new(); $got = $y->Dump($var); is($got, $expected, "Dump(): single array of various (OO)"); ########################################################## # Test Quoting Conditions (newlines, quotes, tildas, undefs) ########################################################## $var = { 'foo01' => '`~!@#$%^&*()_+-={}|[]\\;\':",./?<><nl>', 'foo02' => '~!@#$%^&*()_+-={}|[]\\;:,./<>?', 'foo03' => undef, 'foo04' => '~', }; $expected = <<'EOF';---foo01: "`~!@#$%^&*()_+-={}|[]\;':\",./?<>\n<nl>"foo02: "~!@#$%^&*()_+-={}|[]\;:,./<>?"foo03: ~foo04: "~"EOF $got = &Module::Build::YAML::Dump($var); is($got, $expected, "Dump(): tricky embedded characters"); $var = { 'foo10' => undef, 'foo40' => '!', 'foo41' => '@', 'foo42' => '#', 'foo43' => '$', 'foo44' => '%', 'foo45' => '^', 'foo47' => '&', 'foo48' => '*', 'foo49' => '(', 'foo50' => ')', 'foo51' => '_', 'foo52' => '+', 'foo53' => '-', 'foo54' => '=', 'foo55' => '{', 'foo56' => '}', 'foo57' => '|', 'foo58' => '[', 'foo59' => ']', 'foo60' => '\\', 'foo61' => ';', 'foo62' => ':', 'foo63' => ',', 'foo64' => '.', 'foo65' => '/', 'foo66' => '<', 'foo67' => '>', 'foo68' => '?', 'foo69' => '\'', 'foo70' => '"', 'foo71' => '`', 'foo72' => '', }; $expected = <<'EOF';---foo10: ~foo40: "!"foo41: '@'foo42: "#"foo43: $foo44: %foo45: "^"foo47: "&"foo48: "*"foo49: "("foo50: ")"foo51: _foo52: +foo53: -foo54: =foo55: "{"foo56: "}"foo57: "|"foo58: "["foo59: "]"foo60: \foo61: ;foo62: :foo63: ,foo64: .foo65: /foo66: '<'foo67: '>'foo68: "?"foo69: "'"foo70: '"'foo71: "`"foo72: "\n"EOF $got = &Module::Build::YAML::Dump($var); is($got, $expected, "Dump(): tricky embedded characters (singles)");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -