1require 'psych/helper'
2
3module Psych
4  class TestSet < TestCase
5    def setup
6      super
7      @set = Psych::Set.new
8      @set['foo'] = 'bar'
9      @set['bar'] = 'baz'
10    end
11
12    def test_dump
13      assert_match(/!set/, Psych.dump(@set))
14    end
15
16    def test_roundtrip
17      assert_cycle(@set)
18    end
19
20    ###
21    # FIXME: Syck should also support !!set as shorthand
22    def test_load_from_yaml
23      loaded = Psych.load(<<-eoyml)
24--- !set
25foo: bar
26bar: baz
27      eoyml
28      assert_equal(@set, loaded)
29    end
30
31    def test_loaded_class
32      assert_instance_of(Psych::Set, Psych.load(Psych.dump(@set)))
33    end
34
35    def test_set_shorthand
36      loaded = Psych.load(<<-eoyml)
37--- !!set
38foo: bar
39bar: baz
40      eoyml
41      assert_instance_of(Psych::Set, loaded)
42    end
43
44    def test_set_self_reference
45      @set['self'] = @set
46      assert_cycle(@set)
47    end
48  end
49end
50