Ifd_Automation 1.9.2 → 2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/documentation_generator.rb +1 -1
- data/lib/Ifd_Automation/REST_steps.rb +105 -0
- data/lib/Ifd_Automation/SOAP_steps.rb +54 -0
- data/lib/Ifd_Automation/database_steps.rb +17 -47
- data/lib/Ifd_Automation/dynamic_store_vavue_steps.rb +25 -0
- data/lib/Ifd_Automation/email_steps.rb +32 -36
- data/lib/Ifd_Automation/file_steps.rb +7 -58
- data/lib/Ifd_Automation/require_libs.rb +6 -0
- data/lib/Ifd_Automation/ssh_steps.rb +14 -23
- data/lib/Ifd_Automation/version.rb +1 -1
- data/lib/Ifd_Automation/web_steps.rb +58 -293
- data/lib/helper/assertion_helpers.rb +100 -0
- data/lib/helper/auto_utils.rb +67 -0
- data/lib/{Ifd_Automation_support → helper}/connection_helpers.rb +2 -2
- data/lib/{Ifd_Automation_support → helper}/core.rb +154 -60
- data/lib/{Ifd_Automation_support → helper}/mail_helpers.rb +2 -2
- data/lib/helper/web_steps_helpers.rb +123 -0
- data/project/Gemfile +1 -2
- data/project/features/Screenshot/failed_sample.png +0 -0
- data/project/features/TestData/globalData.yml +4 -1
- data/project/features/TestSuite/test.feature +1 -4
- data/project/features/step_definitions/lib_steps/test.rb +5 -3
- data/project/features/step_definitions/repositories/project_object.yml +2 -2
- data/project/features/support/env.rb +53 -52
- data/project/features/support/hooks.rb +2 -0
- data/project/features/support/project_config.yml +6 -6
- metadata +36 -148
- data/lib/Ifd_Automation/javascript_steps.rb +0 -33
- data/lib/Ifd_Automation/required_libs.rb +0 -7
- data/lib/Ifd_Automation/response.rb +0 -105
- data/lib/Ifd_Automation/webservice_steps.rb +0 -281
- data/lib/Ifd_Automation_support/assertion_helpers.rb +0 -205
- data/lib/Ifd_Automation_support/javascript_helpers.rb +0 -45
- data/lib/Ifd_Automation_support/selenium_sync_issues.rb +0 -62
- data/lib/Ifd_Automation_support/web_steps_helpers.rb +0 -296
- data/project/Gemfile.lock +0 -203
- data/project/Rakefile +0 -46
@@ -0,0 +1,6 @@
|
|
1
|
+
require_relative '../helper/core.rb'
|
2
|
+
require_relative '../helper/web_steps_helpers.rb'
|
3
|
+
require_relative '../helper/auto_utils.rb'
|
4
|
+
require_relative '../helper/mail_helpers.rb'
|
5
|
+
require_relative '../helper/assertion_helpers.rb'
|
6
|
+
require_relative '../helper/connection_helpers.rb'
|
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'net/ssh'
|
2
|
-
|
2
|
+
require_relative 'require_libs'
|
3
|
+
When /^I SSH to "([^\"]*)" with the following credentials:$/ do |hostname, table|
|
4
|
+
hostname = check_dynamic_value hostname
|
3
5
|
@keys = []
|
4
6
|
@auth_methods ||= %w(password)
|
5
7
|
session = table.hashes.first
|
@@ -10,38 +12,27 @@ When /^I ssh to "([^\"]*)" with the following credentials:$/ do |hostname, table
|
|
10
12
|
session_auth_methods << "publickey"
|
11
13
|
end
|
12
14
|
|
13
|
-
@
|
15
|
+
@SSHconnection = Net::SSH.start(hostname, session["username"], :password => session["password"],
|
14
16
|
:auth_methods => session_auth_methods,
|
15
17
|
:keys => session_keys)
|
16
18
|
end
|
17
19
|
|
18
|
-
When /^I run "([^\"]*)"$/ do |command|
|
19
|
-
|
20
|
+
When /^I run SSH command "([^\"]*)"$/ do |command|
|
21
|
+
command = check_dynamic_value command
|
22
|
+
@output = @SSHconnection.exec!(command)
|
20
23
|
end
|
21
24
|
|
22
25
|
|
23
|
-
Then /^show me the output$/ do
|
26
|
+
Then /^show me the SSH output result$/ do
|
24
27
|
p @output
|
25
28
|
end
|
26
29
|
|
27
|
-
Then /^I should see "([^\"]*)" in the output$/ do |string|
|
28
|
-
|
30
|
+
Then /^I should see "([^\"]*)" in the SSH output$/ do |string|
|
31
|
+
string = check_dynamic_value string
|
32
|
+
Assertion.assert_string_equal(string, @output.strip)
|
29
33
|
end
|
30
34
|
|
31
|
-
When /^I
|
32
|
-
|
33
|
-
|
34
|
-
@file_data.each_line do |line|
|
35
|
-
if line.nil? || line =~ /^\s*\n*--/
|
36
|
-
next
|
37
|
-
end
|
38
|
-
line = line.strip();
|
39
|
-
p line
|
40
|
-
@output = @connection.exec!(line)
|
41
|
-
sleep 1
|
42
|
-
end
|
43
|
-
rescue Exception => e
|
44
|
-
raise e.message
|
45
|
-
end
|
46
|
-
end
|
35
|
+
When /^I store the result of SSH as "(.*?)"$/ do |var_name|
|
36
|
+
$context_value = bind_with_dyn_vars(@output)
|
37
|
+
set_var(var_name, '$context_value')
|
47
38
|
end
|
@@ -1,293 +1,58 @@
|
|
1
|
-
require_relative '
|
2
|
-
|
3
|
-
# Navigate to a particular page
|
4
|
-
Given(/^I am on the "([^"]*)" page$/) do |url|
|
5
|
-
|
6
|
-
execute_openbrowser(
|
7
|
-
end
|
8
|
-
|
9
|
-
#
|
10
|
-
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
#
|
15
|
-
|
16
|
-
|
17
|
-
end
|
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
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
When /^I run the following steps?:$/ do |steps_table|
|
64
|
-
patiently do
|
65
|
-
steps = steps_table.raw.flatten
|
66
|
-
steps.each do |step|
|
67
|
-
call_step step
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
When /^I click on following elements:$/ do |object|
|
73
|
-
patiently do
|
74
|
-
object.raw.each do |lines|
|
75
|
-
lines.each do |line|
|
76
|
-
step %{I click on "#{line}"}
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
Then /^I run following steps in iframe (index|name) (.*):$/ do |frame_type, frame, step_table|
|
83
|
-
case frame_type.to_sym
|
84
|
-
when :index
|
85
|
-
steps = step_table.raw.flatten
|
86
|
-
browser = page.driver.browser
|
87
|
-
browser.switch_to.frame(frame.to_i)
|
88
|
-
steps.each do |step|
|
89
|
-
call_step step
|
90
|
-
end
|
91
|
-
browser.switch_to.default_content
|
92
|
-
when :name
|
93
|
-
browser = page.driver.browser
|
94
|
-
browser.switch_to.frame(frame.to_s)
|
95
|
-
steps.each do |step|
|
96
|
-
call_step step
|
97
|
-
end
|
98
|
-
browser.switch_to.default_content
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
Given /^I get text on "(.*)" then store it as "(.*)"$/ do |object, place_holder|
|
103
|
-
if object.nil?
|
104
|
-
raise 'No text found'
|
105
|
-
end
|
106
|
-
@stored = {} if @stored.nil?
|
107
|
-
@stored[%/#{place_holder}/] = execute_gettext(object)
|
108
|
-
end
|
109
|
-
|
110
|
-
# get text for object
|
111
|
-
# And /^I get text on "(.*?)" then store it into file "(.*)"$/ do |object, file_name|
|
112
|
-
# patiently do
|
113
|
-
# $text = execute_gettext(object)
|
114
|
-
# open($test_data_dir+file_name, 'a+') do |f|
|
115
|
-
# f << $text + "\n"
|
116
|
-
# end
|
117
|
-
# end
|
118
|
-
# end
|
119
|
-
|
120
|
-
# Fill in a text box or text area with a value from $test_data_dir file
|
121
|
-
# And /^I set text on "(.*?)" with value from file "(.*)"$/ do |object, file_name|
|
122
|
-
# patiently do
|
123
|
-
# expected_file= ($test_data_dir + file_name)
|
124
|
-
# if File.exist?(expected_file)
|
125
|
-
# # data_file = File.read(expected_file)
|
126
|
-
# data_file = read_file(expected_file)
|
127
|
-
# execute_settext(object, data_file)
|
128
|
-
# # data_file.each_line do |line|
|
129
|
-
# # execute_settext(object, line)
|
130
|
-
# # end
|
131
|
-
# else
|
132
|
-
# raise "*** ERROR: File #{file_name} is not existed!"
|
133
|
-
# end
|
134
|
-
# end
|
135
|
-
# end
|
136
|
-
|
137
|
-
# Upload new file windows
|
138
|
-
When /^I click on "(.*?)" to upload file "(.*?)"$/ do |object, file_name|
|
139
|
-
patiently do
|
140
|
-
execute_click_to_upload(object, file_name)
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
# Drag mouse hover on element
|
145
|
-
When /^I move mouse to element "(.*?)"$/ do |element|
|
146
|
-
patiently do
|
147
|
-
execute_hover_mouse_on(element)
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
|
-
And /^I click on "(.*?)" and wait (\d+) seconds$/ do |object, seconds|
|
152
|
-
execute_click(object)
|
153
|
-
sleep(seconds.to_i)
|
154
|
-
end
|
155
|
-
|
156
|
-
And /^I drag object "(.*?)" to "(.*?)"$/ do |from_object, object|
|
157
|
-
patiently do
|
158
|
-
execute_drag_to_new_object(from_object, object)
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
And /^I type to "(.*)" key is "(.*?)"$/ do |object, keys|
|
163
|
-
patiently do
|
164
|
-
keys = var_collect(keys)
|
165
|
-
execute_sendkeys(object, keys)
|
166
|
-
end
|
167
|
-
end
|
168
|
-
|
169
|
-
# Click on ID of link or text of link
|
170
|
-
When /^I click on "([^\"]*)" link$/ do |link|
|
171
|
-
patiently do
|
172
|
-
click_link link
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
# Attach a file to a file upload form field
|
177
|
-
When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"$/ do |path, field|
|
178
|
-
patiently do
|
179
|
-
attach_file(field, File.expand_path(path))
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
# double click on web element
|
184
|
-
Then(/^I double click on element "(.*?)"$/) do |element|
|
185
|
-
patiently do
|
186
|
-
double_click(element)
|
187
|
-
end
|
188
|
-
end
|
189
|
-
|
190
|
-
# step to resize browser
|
191
|
-
Then(/^I resize browser window size to width (\d+) and height (\d+)$/) do |width, heigth|
|
192
|
-
resize_browser(width, heigth)
|
193
|
-
end
|
194
|
-
|
195
|
-
# step to maximize browser
|
196
|
-
Then(/^I maximize browser window$/) do
|
197
|
-
maximize_browser
|
198
|
-
end
|
199
|
-
|
200
|
-
Then(/^I switch to window having title "(.*?)"$/) do |window_title|
|
201
|
-
switch_to_window_by_title window_title
|
202
|
-
end
|
203
|
-
|
204
|
-
Then(/^I take screenshot$/) do
|
205
|
-
take_screenshot
|
206
|
-
end
|
207
|
-
|
208
|
-
# steps to scroll web page to top or end
|
209
|
-
Then(/^I scroll to (top|end) of page$/) do |to|
|
210
|
-
scroll_page(to)
|
211
|
-
end
|
212
|
-
|
213
|
-
Then /^I should( not)? see page title as (.*)$/ do |present, title|
|
214
|
-
check_title(title, present.empty?)
|
215
|
-
end
|
216
|
-
|
217
|
-
Then(/^I should\s*((?:not)?)\s+see page title having partial text as "(.*?)"$/) do |present, partial_text_title|
|
218
|
-
check_partial_title(partial_text_title, present.empty?)
|
219
|
-
end
|
220
|
-
|
221
|
-
# check property for object
|
222
|
-
Then /^I check property "(.*?)" with "(.*?)" has( | not)? value "(.*?)"$/ do |object, property, negate, value|
|
223
|
-
value = var_collect(value)
|
224
|
-
execute_checkproperty(object, property, negate, value)
|
225
|
-
end
|
226
|
-
|
227
|
-
Then /^the following multiline step should (fail|succeed):$/ do |expectation, multiline_step|
|
228
|
-
multiline_step = multiline_step.gsub(%{'''}, %{"""})
|
229
|
-
if expectation == 'fail'
|
230
|
-
expect { steps(multiline_step) }.to raise_error(RSPEC_EXPECTATION_NOT_MET_ERROR)
|
231
|
-
else # succeed
|
232
|
-
steps(multiline_step)
|
233
|
-
end
|
234
|
-
end
|
235
|
-
|
236
|
-
Then /^I should see a form with the following values:$/ do |table|
|
237
|
-
expectations = table.raw
|
238
|
-
expectations.each do |label, expected_value|
|
239
|
-
step %(I check property "#{label}" with "text" has value "#{expected_value}")
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
|
-
Then /^Status of "([^\"]*)" should be "(disabled|enabled)"$/ do |element, status|
|
244
|
-
puts "status: #{status} => status =='disabled': #{status =='disabled'}"
|
245
|
-
foundElement = if(status =='disabled')
|
246
|
-
find_object(element + "{'disabled':'true'}")
|
247
|
-
elsif (status =='enabled')
|
248
|
-
find_object(element + "{'disabled':''}")
|
249
|
-
else
|
250
|
-
puts "Error >> '#{status }' status is not support."
|
251
|
-
exit
|
252
|
-
end
|
253
|
-
|
254
|
-
if foundElement == nil
|
255
|
-
puts "Error >> Not found object..."
|
256
|
-
exit
|
257
|
-
end
|
258
|
-
end
|
259
|
-
|
260
|
-
And /^I check( not)? exists element is "(.*?)"$/ do |negate, object|
|
261
|
-
#negate = negate.strip if negate != nil
|
262
|
-
execute_checkexists(negate, object,2)
|
263
|
-
end
|
264
|
-
|
265
|
-
# step to assert checkbox is checked or unchecked
|
266
|
-
Then(/^checkbox "(.*?)" should be (checked|unchecked)$/) do |element, state|
|
267
|
-
flag = state == 'checked'
|
268
|
-
is_checkbox_checked(element, flag)
|
269
|
-
end
|
270
|
-
|
271
|
-
# steps to assert radio button checked or unchecked
|
272
|
-
Then(/^radio button "(.*?)" should be (selected|unselected)$/) do |element, state|
|
273
|
-
flag = state == 'selected'
|
274
|
-
is_radio_button_selected(element, flag)
|
275
|
-
end
|
276
|
-
|
277
|
-
# step to assert javascript pop-up alert text
|
278
|
-
Then(/^I should see alert text as "(.*?)"$/) do |actual_value|
|
279
|
-
check_alert_text(actual_value)
|
280
|
-
end
|
281
|
-
|
282
|
-
# step to assert difference in images
|
283
|
-
Then(/^actual image having (.+) "(.*?)" and expected image having (.+) "(.*?)" should be similar$/) do |actual_img_access_type, actual_img_access_name, excp_img_access_type, excp_img_access_name|
|
284
|
-
IFD_Assertion.does_images_similar?(actual_img_access_type, actual_img_access_name, excp_img_access_type, excp_img_access_name)
|
285
|
-
end
|
286
|
-
|
287
|
-
# step to check element enabled or not
|
288
|
-
Then(/^element "([^\"]*)" should\s*((?:not)?)\s+be (enabled|disabled)$/) do |element, present, state|
|
289
|
-
flag = state == 'enabled'
|
290
|
-
flag = !flag unless present.empty?
|
291
|
-
check_element_enable(element, flag)
|
292
|
-
end
|
293
|
-
|
1
|
+
require_relative 'require_libs'
|
2
|
+
|
3
|
+
# Navigate to a particular page
|
4
|
+
Given(/^I am on the "([^"]*)" page$/) do |url|
|
5
|
+
url = check_dynamic_value url
|
6
|
+
execute_openbrowser(url)
|
7
|
+
end
|
8
|
+
|
9
|
+
# # Wait for the specific time
|
10
|
+
When /^I wait for (\d+) seconds$/ do |second|
|
11
|
+
sleep(second.to_i)
|
12
|
+
end
|
13
|
+
|
14
|
+
# Finds a button or link by id, text or value and clicks it
|
15
|
+
And /^I click on "([^\"]*)"$/ do |object|
|
16
|
+
execute_click(object)
|
17
|
+
end
|
18
|
+
|
19
|
+
# double click on web element
|
20
|
+
Then /^I double click on element "(.*?)"$/ do |element|
|
21
|
+
double_click(element)
|
22
|
+
end
|
23
|
+
|
24
|
+
# Fill in a text box or text area with a value
|
25
|
+
And /^I set text on "(.*?)" with "(.*?)"$/ do |object, text|
|
26
|
+
text = check_dynamic_value text
|
27
|
+
execute_settext(object, text)
|
28
|
+
end
|
29
|
+
|
30
|
+
# step to maximize browser
|
31
|
+
Then(/^I maximize browser window$/) do
|
32
|
+
maximize_browser
|
33
|
+
end
|
34
|
+
|
35
|
+
Then /^Capture a screenshot as "(.*)"$/ do |name|
|
36
|
+
file_path = $test_data_dir + name.downcase
|
37
|
+
page.save_screenshot(file_path)
|
38
|
+
end
|
39
|
+
|
40
|
+
Then(/^I switch to window having title "(.*?)"$/) do |window_title|
|
41
|
+
switch_to_window_by_title window_title
|
42
|
+
end
|
43
|
+
|
44
|
+
# steps to scroll web page to top or end
|
45
|
+
Then(/^I scroll to (top|end) of page$/) do |to|
|
46
|
+
scroll_page(to)
|
47
|
+
end
|
48
|
+
|
49
|
+
# check property for object
|
50
|
+
Then /^I check property "(.*?)" with "(.*?)" has( | not)? value "(.*?)"$/ do |object, property, negate, value|
|
51
|
+
value = bind_with_dyn_vars value
|
52
|
+
execute_checkproperty(object, property, negate, value)
|
53
|
+
end
|
54
|
+
|
55
|
+
# step to assert javascript pop-up alert text
|
56
|
+
Then(/^I should see alert text as "(.*?)"$/) do |actual_value|
|
57
|
+
check_alert_text(actual_value)
|
58
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
class Assertion
|
2
|
+
#Assert two files, rows not in order and REMOVE 1 COLUMN OF ID
|
3
|
+
def self.do_assertion_csv_tab_non_order(expected_obj, actual_obj)
|
4
|
+
for i in (1..expected_obj.length - 1)
|
5
|
+
expected_row = expected_obj[i].drop(1).to_s.split("\t")
|
6
|
+
found = false
|
7
|
+
for j in (1..actual_obj.length - 1)
|
8
|
+
actual_row = actual_obj[j].drop(1).to_s.split("\t")
|
9
|
+
if (expected_row == actual_row)
|
10
|
+
found = true
|
11
|
+
break
|
12
|
+
end
|
13
|
+
end
|
14
|
+
assert(found, "Expected Record: [#{expected_obj[i].to_s}] is not included in reporting file")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# Assert 2 values
|
19
|
+
def self.reg_compare sActual, regValue, isSpecialChar=false
|
20
|
+
begin
|
21
|
+
if !isSpecialChar
|
22
|
+
sActual = sActual.strip
|
23
|
+
regValue = regValue.strip.gsub("[", "\\[").gsub("]", "\\]").gsub("(", "\\(").gsub(")", "\\)").gsub(">", "\\>")
|
24
|
+
end
|
25
|
+
rescue StandardError => myStandardError
|
26
|
+
put_log "\n>>> Error: #{myStandardError}"
|
27
|
+
end
|
28
|
+
|
29
|
+
# put_log "\nsActual:#{sActual}, regValue:#{regValue}"
|
30
|
+
if ((sActual.nil? and regValue.nil?) or (!sActual.nil? and sActual.empty? and !regValue.nil? and regValue.empty?))
|
31
|
+
return true
|
32
|
+
end
|
33
|
+
|
34
|
+
if ((sActual.nil? and !regValue.nil?) or (!sActual.nil? and regValue.nil?))
|
35
|
+
return false
|
36
|
+
end
|
37
|
+
|
38
|
+
if (!sActual.nil? and !sActual.empty?)
|
39
|
+
sCookActual = sActual.gsub(/\n|\r/, " ")
|
40
|
+
if (sCookActual == regValue or (isSpecialChar and sCookActual.include? regValue) or (!isSpecialChar and sCookActual =~ /^.*#{regValue}.*$/))
|
41
|
+
return true
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
return false
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.do_assertion_json(expected_obj, actual_obj, options = {})
|
49
|
+
# puts "\n\n actual_obj.class: #{actual_obj.class}"
|
50
|
+
# puts "\n\n expected_obj.class: #{expected_obj.class}"
|
51
|
+
|
52
|
+
if expected_obj.kind_of? Hash
|
53
|
+
# if options['isIncludedAssertion'].nil? or options['isIncludedAssertion'] == false
|
54
|
+
# do_assertion(expected_obj.keys.size, actual_obj.keys.size)
|
55
|
+
# end
|
56
|
+
expected_obj.keys.each do |key|
|
57
|
+
# puts "\n\n key: #{key}"
|
58
|
+
# puts "\n\n value: #{expected_obj[key]}"
|
59
|
+
# puts "\n\n value: #{actual_obj[key]}"
|
60
|
+
if actual_obj[key].nil?
|
61
|
+
raise "[%s] expected [%s] but actual value was nil." % [key, expected_obj[key].to_s]
|
62
|
+
else
|
63
|
+
Assertion.do_assertion_json(expected_obj[key], actual_obj[key], options)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
elsif expected_obj.kind_of? Array
|
67
|
+
if options['isIncludedAssertion'].nil? or options['isIncludedAssertion'] == false
|
68
|
+
Assertion.do_assertion_json(expected_obj.size, actual_obj.size)
|
69
|
+
end
|
70
|
+
for i in (0..expected_obj.length-1)
|
71
|
+
Assertion.do_assertion_json(expected_obj[i], actual_obj[i], options)
|
72
|
+
end
|
73
|
+
else
|
74
|
+
begin
|
75
|
+
Assertion.assert_string_equal(expected_obj.to_s, actual_obj.to_s)
|
76
|
+
rescue => e
|
77
|
+
raise("Assert fail. \n\n Expected: '#{expected_obj}' \n\n Got: '#{actual_obj}'. Detail info: #{e.message}")
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.assert_string_contain(expected, actual)
|
83
|
+
unless (actual.to_s).include? (expected.to_s)
|
84
|
+
raise ("*** ASSERTION ERROR: \nExpected: #{expected}. \nGot: #{actual}.")
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def self.assert_string_equal(expected, actual)
|
89
|
+
if expected.to_s != actual.to_s
|
90
|
+
raise ("*** ASSERTION ERROR: \nExpected: #{expected}. \nGot: #{actual}.")
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def self.assert_string_not_equal(expected, actual)
|
95
|
+
if expected.to_s == actual.to_s
|
96
|
+
raise ("*** ASSERTION ERROR: \nExpected: #{expected}. \nGot: #{actual}.")
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|