Class: TestShellExpressionEvaluator

Inherits:
Minitest::Test
  • Object
show all
Defined in:
lib/evaluate_shell_expressions.rb

Instance Method Summary collapse

Instance Method Details

#setupObject



63
64
65
66
67
68
# File 'lib/evaluate_shell_expressions.rb', line 63

def setup
  @initial_code = <<~BASH
    #!/bin/sh
    echo "Initial setup..."
  BASH
end

#test_empty_expressions_listObject



102
103
104
105
106
107
108
109
110
111
# File 'lib/evaluate_shell_expressions.rb', line 102

def test_empty_expressions_list
  expressions = {}
  occurrence_expressions = {}
  result = evaluate_shell_expressions(
    @initial_code, expressions,
    occurrence_expressions: occurrence_expressions
  )

  assert_nil result
end

#test_initial_code_executionObject



124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/evaluate_shell_expressions.rb', line 124

def test_initial_code_execution
  initial_code = <<~BASH
    #!/bin/sh
    echo "Custom setup message"
  BASH
  expressions = { 'test' => 'echo Test after initial setup' }
  occurrence_expressions = { 'test' => '%<test>' }
  result = evaluate_shell_expressions(
    @initial_code, expressions,
    occurrence_expressions: occurrence_expressions
  )

  assert_equal 'Test after initial setup', result['%<test>']
end

#test_invalid_expressionObject



113
114
115
116
117
118
119
120
121
122
# File 'lib/evaluate_shell_expressions.rb', line 113

def test_invalid_expression
  expressions = { 'invalid' => 'invalid_command' }
  occurrence_expressions = {}
  result = evaluate_shell_expressions(
    @initial_code, expressions,
    occurrence_expressions: occurrence_expressions
  )

  assert_equal EvaluateShellExpression::StatusFail, result
end

#test_large_number_of_expressionsObject



139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/evaluate_shell_expressions.rb', line 139

def test_large_number_of_expressions
  expressions = (1..100).to_h do |i|
    ["expr_#{i}", "echo Expression #{i}"]
  end
  occurrence_expressions = (1..100).to_h do |i|
    ["expr_#{i}", "%<expr_#{i}>"]
  end
  result = evaluate_shell_expressions(
    @initial_code, expressions,
    occurrence_expressions: occurrence_expressions
  )

  expressions.each_with_index do |(key, _expression), index|
    assert_equal "Expression #{index + 1}", result["%<#{key}>"]
  end
end

#test_multiple_expressionsObject



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/evaluate_shell_expressions.rb', line 81

def test_multiple_expressions
  expressions = {
    'greeting' => "echo 'Hello, World!'",
    'date' => 'date +%Y-%m-%d',
    'kernel' => 'uname -r'
  }
  occurrence_expressions = {
    'date' => '%<date>',
    'greeting' => '%<greeting>',
    'kernel' => '%<kernel>'
  }
  result = evaluate_shell_expressions(
    @initial_code, expressions,
    occurrence_expressions: occurrence_expressions
  )

  assert_equal 'Hello, World!', result['%<greeting>']
  assert_match(/\d{4}-\d{2}-\d{2}/, result['%<date>'])
  assert_match(/\d+\.\d+\.\d+/, result['%<kernel>'])
end

#test_single_expressionObject



70
71
72
73
74
75
76
77
78
79
# File 'lib/evaluate_shell_expressions.rb', line 70

def test_single_expression
  expressions = { 'greeting' => "echo 'Hello, World!'" }
  occurrence_expressions = { 'greeting' => '%<greeting>' }
  result = evaluate_shell_expressions(
    @initial_code, expressions,
    occurrence_expressions: occurrence_expressions
  )

  assert_equal 'Hello, World!', result['%<greeting>']
end