From 546154ddb71b125794c5eed36817ad27ac373dd5 Mon Sep 17 00:00:00 2001 From: Jeremy Ebler Date: Sun, 7 Feb 2021 18:39:07 -0800 Subject: feat: allow scalars and sequences to be styled when dumped --- test/psych/test_coder.rb | 121 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) (limited to 'test') diff --git a/test/psych/test_coder.rb b/test/psych/test_coder.rb index 5ea8cab..aaf66fc 100644 --- a/test/psych/test_coder.rb +++ b/test/psych/test_coder.rb @@ -112,6 +112,16 @@ module Psych end end + class CustomEncode + def initialize(**opts) + @opts = opts + end + + def encode_with(coder) + @opts.each { |k,v| coder.public_send :"#{k}=", v } + end + end + def test_self_referential x = Referential.new copy = Psych.load Psych.dump x @@ -203,5 +213,116 @@ module Psych assert_equal foo.b, bar.b assert_nil bar.c end + + def test_coder_style_map_default + foo = Psych.dump a: 1, b: 2 + assert_equal foo, "---\n:a: 1\n:b: 2\n" + end + + def test_coder_style_map_any + foo = Psych.dump CustomEncode.new \ + map: {a: 1, b: 2}, + style: Psych::Nodes::Mapping::ANY, + tag: nil + assert_equal foo, "---\n:a: 1\n:b: 2\n" + end + + def test_coder_style_map_block + foo = Psych.dump CustomEncode.new \ + map: {a: 1, b: 2}, + style: Psych::Nodes::Mapping::BLOCK, + tag: nil + assert_equal foo, "---\n:a: 1\n:b: 2\n" + end + + def test_coder_style_map_flow + foo = Psych.dump CustomEncode.new \ + map: { a: 1, b: 2 }, + style: Psych::Nodes::Mapping::FLOW, + tag: nil + assert_equal foo, "--- {! ':a': 1, ! ':b': 2}\n" + end + + def test_coder_style_seq_default + foo = Psych.dump [ 1, 2, 3 ] + assert_equal foo, "---\n- 1\n- 2\n- 3\n" + end + + def test_coder_style_seq_any + foo = Psych.dump CustomEncode.new \ + seq: [ 1, 2, 3 ], + style: Psych::Nodes::Sequence::ANY, + tag: nil + assert_equal foo, "---\n- 1\n- 2\n- 3\n" + end + + def test_coder_style_seq_block + foo = Psych.dump CustomEncode.new \ + seq: [ 1, 2, 3 ], + style: Psych::Nodes::Sequence::BLOCK, + tag: nil + assert_equal foo, "---\n- 1\n- 2\n- 3\n" + end + + def test_coder_style_seq_flow + foo = Psych.dump CustomEncode.new \ + seq: [ 1, 2, 3 ], + style: Psych::Nodes::Sequence::FLOW, + tag: nil + assert_equal foo, "--- [1, 2, 3]\n" + end + + def test_coder_style_scalar_default + foo = Psych.dump 'some scalar' + assert_equal foo, "--- some scalar\n" + end + + def test_coder_style_scalar_any + foo = Psych.dump CustomEncode.new \ + scalar: 'some scalar', + style: Psych::Nodes::Scalar::ANY, + tag: nil + assert_equal foo, "--- some scalar\n" + end + + def test_coder_style_scalar_plain + foo = Psych.dump CustomEncode.new \ + scalar: 'some scalar', + style: Psych::Nodes::Scalar::PLAIN, + tag: nil + assert_equal foo, "--- some scalar\n" + end + + def test_coder_style_scalar_single_quoted + foo = Psych.dump CustomEncode.new \ + scalar: 'some scalar', + style: Psych::Nodes::Scalar::SINGLE_QUOTED, + tag: nil + assert_equal foo, "--- ! 'some scalar'\n" + end + + def test_coder_style_scalar_double_quoted + foo = Psych.dump CustomEncode.new \ + scalar: 'some scalar', + style: Psych::Nodes::Scalar::DOUBLE_QUOTED, + tag: nil + assert_equal foo, %Q'--- ! "some scalar"\n' + end + + def test_coder_style_scalar_literal + foo = Psych.dump CustomEncode.new \ + scalar: 'some scalar', + style: Psych::Nodes::Scalar::LITERAL, + tag: nil + assert_equal foo, "--- ! |-\n some scalar\n" + end + + def test_coder_style_scalar_folded + foo = Psych.dump CustomEncode.new \ + scalar: 'some scalar', + style: Psych::Nodes::Scalar::FOLDED, + tag: nil + assert_equal foo, "--- ! >-\n some scalar\n" + end end end -- cgit v1.2.3