summaryrefslogtreecommitdiffhomepage
path: root/samples/10_advanced_debugging/03_unit_tests/pretty_format_tests.rb
blob: 6ac7b05b76777e8b114232fc853cade3ce3d5e10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
def H opts
  opts
end

def A *opts
  opts
end

def assert_format args, assert, hash, expected
  actual = args.fn.pretty_format hash
  assert.are_equal! actual, expected
end

def test_pretty_print args, assert
  # =============================
  # hash with single value
  # =============================
  input = (H first_name: "John")
  expected = <<-S
{:first_name "John"}
S
  (assert_format args, assert, input, expected)

  # =============================
  # hash with two values
  # =============================
  input = (H first_name: "John", last_name: "Smith")
  expected = <<-S
{:first_name "John"
 :last_name "Smith"}
S

  (assert_format args, assert, input, expected)

  # =============================
  # hash with inner hash
  # =============================
  input = (H first_name: "John",
             last_name: "Smith",
             middle_initial: "I",
             so: (H first_name: "Pocahontas",
                    last_name: "Tsenacommacah"),
             friends: (A (H first_name: "Side", last_name: "Kick"),
                         (H first_name: "Tim", last_name: "Wizard")))
  expected = <<-S
{:first_name "John"
 :last_name "Smith"
 :middle_initial "I"
 :so {:first_name "Pocahontas"
      :last_name "Tsenacommacah"}
 :friends [{:first_name "Side"
            :last_name "Kick"}
           {:first_name "Tim"
            :last_name "Wizard"}]}
S

  (assert_format args, assert, input, expected)

  # =============================
  # array with one value
  # =============================
  input = (A 1)
  expected = <<-S
[1]
S
  (assert_format args, assert, input, expected)

  # =============================
  # array with multiple values
  # =============================
  input = (A 1, 2, 3)
  expected = <<-S
[1
 2
 3]
S
  (assert_format args, assert, input, expected)

  # =============================
  # array with multiple values hashes
  # =============================
  input = (A (H first_name: "Side", last_name: "Kick"),
             (H first_name: "Tim", last_name: "Wizard"))
  expected = <<-S
[{:first_name "Side"
  :last_name "Kick"}
 {:first_name "Tim"
  :last_name "Wizard"}]
S

  (assert_format args, assert, input, expected)
end

def test_nested_nested args, assert
  # =============================
  # nested array in nested hash
  # =============================
  input = (H type: :root,
             text: "Root",
             children: (A (H level: 1,
                             text: "Level 1",
                             children: (A (H level: 2,
                                             text: "Level 2",
                                             children: [])))))

  expected = <<-S
{:type :root
 :text "Root"
 :children [{:level 1
             :text "Level 1"
             :children [{:level 2
                         :text "Level 2"
                         :children []}]}]}

S

  (assert_format args, assert, input, expected)
end

def test_scene args, assert
  script = <<-S
* Scene 1
** Narrator
They say happy endings don't exist.
** Narrator
They say true love is a lie.
S
  input = parse_org args, script
  puts (args.fn.pretty_format input)
end