Set USE_RFC8040 to True
[integration/test.git] / csit / libraries / CompareStream.robot
1 *** Settings ***
2 Documentation       This Resource contains list of Keywords Set_Variable_If_At_Least*, Set_Variable_If_At_Most,
3 ...                 Run_Keyword_If_At_Least*, Run_Keyword_If_At_Most*,
4 ...                 Run_Keyword_If_More_Than*, Run_Keyword_If_Less_Than*,
5 ...                 for comparison ${ODL_STREAM} to the given ${lower_bound},
6 ...                 in order to replace ad-hoc conditional execution in suites.
7
8 Library             Collections
9 Library             String
10
11
12 *** Variables ***
13 &{Stream_dict}
14 ...                 carbon=${6}
15 ...                 nitrogen=${7}
16 ...                 oxygen=${8}
17 ...                 fluorine=${9}
18 ...                 neon=${10}
19 ...                 sodium=${11}
20 ...                 magnesium=${12}
21 ...                 aluminium=${13}
22 ...                 silicon=${14}
23 ...                 phosphorus=${15}
24 ...                 sulfur=${16}
25 ...                 chlorine=${17}
26 ...                 argon=${18}
27 ...                 master=${999}
28
29
30 *** Keywords ***
31 Set_Variable_If_At_Least
32     [Documentation]    Compare ${lower_bound} to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at least ${lower_bound},
33     ...    return ${value_if_false} otherwise.
34     [Arguments]    ${lower_bound}    ${value_if_true}    ${value_if_false}
35     BuiltIn.Run_Keyword_And_Return
36     ...    BuiltIn.Set_Variable_If
37     ...    ${Stream_dict}[${ODL_STREAM}] >= ${Stream_dict}[${lower_bound}]
38     ...    ${value_if_true}
39     ...    ${value_if_false}
40
41 Set_Variable_If_At_Most
42     [Documentation]    Compare ${upper_bound} to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most ${upper_bound},
43     ...    return ${value_if_false} otherwise.
44     [Arguments]    ${upper_bound}    ${value_if_true}    ${value_if_false}
45     BuiltIn.Run_Keyword_And_Return
46     ...    BuiltIn.Set_Variable_If
47     ...    ${Stream_dict}[${ODL_STREAM}] <= ${Stream_dict}[${upper_bound}]
48     ...    ${value_if_true}
49     ...    ${value_if_false}
50
51 Set_Variable_If_At_Least_Carbon
52     [Documentation]    Compare carbon to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at least carbon,
53     ...    return ${value_if_false} otherwise.
54     [Arguments]    ${value_if_true}    ${value_if_false}
55     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Least    carbon    ${value_if_true}    ${value_if_false}
56
57 Set_Variable_If_At_Least_Nitrogen
58     [Documentation]    Compare nitrogen to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at least nitrogen,
59     ...    return ${value_if_false} otherwise.
60     [Arguments]    ${value_if_true}    ${value_if_false}
61     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Least    nitrogen    ${value_if_true}    ${value_if_false}
62
63 Set_Variable_If_At_Least_Oxygen
64     [Documentation]    Compare oxygen to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at least oxygen,
65     ...    return ${value_if_false} otherwise.
66     [Arguments]    ${value_if_true}    ${value_if_false}
67     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Least    oxygen    ${value_if_true}    ${value_if_false}
68
69 Set_Variable_If_At_Least_Fluorine
70     [Documentation]    Compare fluorine to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at least fluorine,
71     ...    return ${value_if_false} otherwise.
72     [Arguments]    ${value_if_true}    ${value_if_false}
73     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Least    fluorine    ${value_if_true}    ${value_if_false}
74
75 Set_Variable_If_At_Least_Neon
76     [Documentation]    Compare neon to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at least neon,
77     ...    return ${value_if_false} otherwise.
78     [Arguments]    ${value_if_true}    ${value_if_false}
79     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Least    neon    ${value_if_true}    ${value_if_false}
80
81 Set_Variable_If_At_Least_Sodium
82     [Documentation]    Compare neon to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at least sodium,
83     ...    return ${value_if_false} otherwise.
84     [Arguments]    ${value_if_true}    ${value_if_false}
85     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Least    sodium    ${value_if_true}    ${value_if_false}
86
87 Set_Variable_If_At_Least_Magnesium
88     [Documentation]    Compare magnesium to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at least magnesium, return ${value_if_false} otherwise.
89     [Arguments]    ${value_if_true}    ${value_if_false}
90     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Least    magnesium    ${value_if_true}    ${value_if_false}
91
92 Set_Variable_If_At_Least_Aluminium
93     [Documentation]    Compare aluminium to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at least aluminium, return ${value_if_false} otherwise.
94     [Arguments]    ${value_if_true}    ${value_if_false}
95     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Least    aluminium    ${value_if_true}    ${value_if_false}
96
97 Set_Variable_If_At_Least_Silicon
98     [Documentation]    Compare silicon to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at least silicon, return ${value_if_false} otherwise.
99     [Arguments]    ${value_if_true}    ${value_if_false}
100     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Least    silicon    ${value_if_true}    ${value_if_false}
101
102 Set_Variable_If_At_Least_Phosphorus
103     [Documentation]    Compare phosphorus to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at least phosphorus, return ${value_if_false} otherwise.
104     [Arguments]    ${value_if_true}    ${value_if_false}
105     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Least    phosphorus    ${value_if_true}    ${value_if_false}
106
107 Set_Variable_If_At_Least_Sulfur
108     [Documentation]    Compare sulfur to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at least sulfur, return ${value_if_false} otherwise.
109     [Arguments]    ${value_if_true}    ${value_if_false}
110     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Least    sulfur    ${value_if_true}    ${value_if_false}
111
112 Set_Variable_If_At_Least_Chlorine
113     [Documentation]    Compare chlorine to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at least chlorine, return ${value_if_false} otherwise.
114     [Arguments]    ${value_if_true}    ${value_if_false}
115     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Least    chlorine    ${value_if_true}    ${value_if_false}
116
117 Set_Variable_If_At_Most_Carbon
118     [Documentation]    Compare carbon to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most carbon,
119     ...    return ${value_if_false} otherwise.
120     [Arguments]    ${value_if_true}    ${value_if_false}
121     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Most    carbon    ${value_if_true}    ${value_if_false}
122
123 Set_Variable_If_At_Most_Nitrogen
124     [Documentation]    Compare nitrogen to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most nitrogen,
125     ...    return ${value_if_false} otherwise.
126     [Arguments]    ${value_if_true}    ${value_if_false}
127     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Most    nitrogen    ${value_if_true}    ${value_if_false}
128
129 Set_Variable_If_At_Most_Oxygen
130     [Documentation]    Compare oxygen to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most oxygen,
131     ...    return ${value_if_false} otherwise.
132     [Arguments]    ${value_if_true}    ${value_if_false}
133     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Most    oxygen    ${value_if_true}    ${value_if_false}
134
135 Set_Variable_If_At_Most_Fluorine
136     [Documentation]    Compare fluorine to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most fluorine,
137     ...    return ${value_if_false} otherwise.
138     [Arguments]    ${value_if_true}    ${value_if_false}
139     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Most    fluorine    ${value_if_true}    ${value_if_false}
140
141 Set_Variable_If_At_Most_Neon
142     [Documentation]    Compare neon to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most neon,
143     ...    return ${value_if_false} otherwise.
144     [Arguments]    ${value_if_true}    ${value_if_false}
145     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Most    neon    ${value_if_true}    ${value_if_false}
146
147 Set_Variable_If_At_Most_Sodium
148     [Documentation]    Compare neon to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most sodium,
149     ...    return ${value_if_false} otherwise.
150     [Arguments]    ${value_if_true}    ${value_if_false}
151     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Most    sodium    ${value_if_true}    ${value_if_false}
152
153 Set_Variable_If_At_Most_Magnesium
154     [Documentation]    Compare magnesium to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most magnesium,
155     ...    return ${value_if_false} otherwise.
156     [Arguments]    ${value_if_true}    ${value_if_false}
157     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Most    magnesium    ${value_if_true}    ${value_if_false}
158
159 Set_Variable_If_At_Most_Aluminium
160     [Documentation]    Compare aluminium to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most aluminium,
161     ...    return ${value_if_false} otherwise.
162     [Arguments]    ${value_if_true}    ${value_if_false}
163     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Most    aluminium    ${value_if_true}    ${value_if_false}
164
165 Set_Variable_If_At_Most_Silicon
166     [Documentation]    Compare silicon to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most silicon,
167     ...    return ${value_if_false} otherwise.
168     [Arguments]    ${value_if_true}    ${value_if_false}
169     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Most    silicon    ${value_if_true}    ${value_if_false}
170
171 Set_Variable_If_At_Most_Phosphorus
172     [Documentation]    Compare phosphorus to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most phosphorus,
173     ...    return ${value_if_false} otherwise.
174     [Arguments]    ${value_if_true}    ${value_if_false}
175     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Most    phosphorus    ${value_if_true}    ${value_if_false}
176
177 Set_Variable_If_At_Most_Sulfur
178     [Documentation]    Compare sulfur to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most sulfur,
179     ...    return ${value_if_false} otherwise.
180     [Arguments]    ${value_if_true}    ${value_if_false}
181     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Most    sulfur    ${value_if_true}    ${value_if_false}
182
183 Set_Variable_If_At_Most_Chlorine
184     [Documentation]    Compare chlorine to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most chlorine,
185     ...    return ${value_if_false} otherwise.
186     [Arguments]    ${value_if_true}    ${value_if_false}
187     BuiltIn.Run_Keyword_And_Return    Set_Variable_If_At_Most    chlorine    ${value_if_true}    ${value_if_false}
188
189 CompareStream__Convert_Input
190     [Documentation]    Splits arguments into args and kwargs is used in Run_Keyword_If_At_Least_Else and Run_Keyword_If_At_Most_Else.
191     ...    The problem is, when the string contains =, but it is not a named argument (name=value). There can be many values containing =, but
192     ...    for sure it is present in xmls. If the string starts with "<" it will be treated as it is xml and splitting for
193     ...    name and value will not be executed.
194     ...    If named argument is passed into this kw, only string data are supported e.g. name=string. Complex variables such as lists or dictionaries
195     ...    are not supported.
196     [Arguments]    @{arguments}
197     ${args}    BuiltIn.Create_List
198     ${kwargs}    BuiltIn.Create_Dictionary
199     FOR    ${arg}    IN    @{arguments}
200         ${arg}    BuiltIn.Convert_To_String    ${arg}
201         ${removed}    String.Remove_String    ${arg}    \n    ${Space}    \t
202         ...    \r
203         IF    "${removed[0]}" == "<"
204             ${splitted}    BuiltIn.Create List    ${arg}
205         ELSE
206             ${splitted}    String.Split_String    ${arg}    separator==    max_split=1
207         END
208         ${len}    BuiltIn.Get_Length    ${splitted}
209         IF    ${len}==1
210             Collections.Append_To_List    ${args}    ${splitted}[0]
211         ELSE
212             Collections.Set_To_Dictionary    ${kwargs}    @{splitted}
213         END
214     END
215     RETURN    ${args}    ${kwargs}
216
217 Run_Keyword_If_At_Least
218     [Documentation]    Compare ${lower_bound} to ${ODL_STREAM} and in case ${ODL_STREAM} is at least ${lower_bound},
219     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
220     [Arguments]    ${lower_bound}    ${kw_name}    @{varargs}    &{kwargs}
221     BuiltIn.Run_Keyword_And_Return_If
222     ...    ${Stream_dict}[${ODL_STREAM}] >= ${Stream_dict}[${lower_bound}]
223     ...    ${kw_name}
224     ...    @{varargs}
225     ...    &{kwargs}
226
227 Run_Keyword_If_At_Least_Else
228     [Documentation]    Compare ${lower_bound} to ${ODL_STREAM} and in case ${ODL_STREAM} is at least ${lower_bound},
229     ...    run keyword defined before ELSE statement otherwise run keyword defined after ELSE statement and return its value.
230     [Arguments]    ${lower_bound}    @{varargs}
231     ${position}    Collections.Get_Index_From_List    ${varargs}    \ELSE
232     IF    "${position}" == "-1"
233         BuiltIn.Fail    Missing else statement in defined expresion
234     END
235     ${varargs_if}    Collections.Get_Slice_From_List    ${varargs}    0    ${position}
236     ${varargs_else}    Collections.Get_Slice_From_List    ${varargs}    ${position+1}
237     ${args_if}    ${kwargs_if}    CompareStream__Convert_Input    @{varargs_if}
238     ${args_else}    ${kwargs_else}    CompareStream__Convert_Input    @{varargs_else}
239     IF    ${Stream_dict}[${ODL_STREAM}] >= ${Stream_dict}[${lower_bound}]
240         ${resp}    BuiltIn.Run_Keyword    @{args_if}    &{kwargs_if}
241     ELSE
242         ${resp}    BuiltIn.Run_Keyword    @{args_else}    &{kwargs_else}
243     END
244     RETURN    ${resp}
245
246 Run_Keyword_If_At_Most
247     [Documentation]    Compare ${upper_bound} to ${ODL_STREAM} and in case ${ODL_STREAM} is at most ${upper_bound},
248     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
249     [Arguments]    ${upper_bound}    ${kw_name}    @{varargs}    &{kwargs}
250     BuiltIn.Run_Keyword_And_Return_If
251     ...    ${Stream_dict}[${ODL_STREAM}] <= ${Stream_dict}[${upper_bound}]
252     ...    ${kw_name}
253     ...    @{varargs}
254     ...    &{kwargs}
255
256 Run_Keyword_If_At_Most_Else
257     [Documentation]    Compare ${upper_bound} to ${ODL_STREAM} and in case ${ODL_STREAM} is at most ${upper_bound},
258     ...    run keyword defined before ELSE statement otherwise run keyword defined after ELSE statement and return its value.
259     [Arguments]    ${upper_bound}    @{varargs}
260     ${position}    Collections.Get_Index_From_List    ${varargs}    \ELSE
261     IF    "${position}" == "-1"
262         BuiltIn.Fail    Missing else statement in defined expresion
263     END
264     ${varargs_if}    Collections.Get_Slice_From_List    ${varargs}    0    ${position}
265     ${varargs_else}    Collections.Get_Slice_From_List    ${varargs}    ${position+1}
266     ${args_if}    ${kwargs_if}    CompareStream__Convert_Input    @{varargs_if}
267     ${args_else}    ${kwargs_else}    CompareStream__Convert_Input    @{varargs_else}
268     IF    ${Stream_dict}[${ODL_STREAM}] <= ${Stream_dict}[${upper_bound}]
269         ${resp}    BuiltIn.Run_Keyword    @{args_if}    &{kwargs_if}
270     ELSE
271         ${resp}    BuiltIn.Run_Keyword    @{args_else}    &{kwargs_else}
272     END
273     RETURN    ${resp}
274
275 Run_Keyword_If_More_Than
276     [Documentation]    Compare ${lower_bound} to ${ODL_STREAM} and in case ${ODL_STREAM} is more than ${lower_bound},
277     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
278     [Arguments]    ${lower_bound}    ${kw_name}    @{varargs}    &{kwargs}
279     BuiltIn.Run_Keyword_And_Return_If
280     ...    ${Stream_dict}[${ODL_STREAM}] > ${Stream_dict}[${lower_bound}]
281     ...    ${kw_name}
282     ...    @{varargs}
283     ...    &{kwargs}
284
285 Run_Keyword_If_Equals
286     [Documentation]    Compare ${stream} to ${ODL_STREAM} and in case ${ODL_STREAM} equals ${stream},
287     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
288     [Arguments]    ${stream}    ${kw_name}    @{varargs}    &{kwargs}
289     BuiltIn.Run_Keyword_And_Return_If
290     ...    ${Stream_dict}[${ODL_STREAM}] == ${Stream_dict}[${stream}]
291     ...    ${kw_name}
292     ...    @{varargs}
293     ...    &{kwargs}
294
295 Run_Keyword_If_Equals_Else
296     [Documentation]    Compare ${stream} to ${ODL_STREAM} and in case ${ODL_STREAM} equals ${stream},
297     ...    run keyword defined before ELSE statement otherwise run keyword defined after ELSE statement and return its value.
298     [Arguments]    ${stream}    @{varargs}
299     ${position}    Collections.Get_Index_From_List    ${varargs}    \ELSE
300     IF    "${position}" == "-1"
301         BuiltIn.Fail    Missing else statement in defined expresion
302     END
303     ${varargs_if}    Collections.Get_Slice_From_List    ${varargs}    0    ${position}
304     ${varargs_else}    Collections.Get_Slice_From_List    ${varargs}    ${position+1}
305     ${args_if}    ${kwargs_if}    CompareStream__Convert_Input    @{varargs_if}
306     ${args_else}    ${kwargs_else}    CompareStream__Convert_Input    @{varargs_else}
307     IF    ${Stream_dict}[${ODL_STREAM}] == ${Stream_dict}[${stream}]
308         ${resp}    BuiltIn.Run_Keyword    @{args_if}    &{kwargs_if}
309     ELSE
310         ${resp}    BuiltIn.Run_Keyword    @{args_else}    &{kwargs_else}
311     END
312     RETURN    ${resp}
313
314 Run_Keyword_If_Less_Than
315     [Documentation]    Compare ${lower_bound} to ${ODL_STREAM} and in case ${ODL_STREAM} is less than ${lower_bound},
316     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
317     [Arguments]    ${lower_bound}    ${kw_name}    @{varargs}    &{kwargs}
318     BuiltIn.Run_Keyword_And_Return_If
319     ...    ${Stream_dict}[${ODL_STREAM}] < ${Stream_dict}[${lower_bound}]
320     ...    ${kw_name}
321     ...    @{varargs}
322     ...    &{kwargs}
323
324 Run_Keyword_If_At_Least_Carbon
325     [Documentation]    Compare carbon to ${ODL_STREAM} and in case ${ODL_STREAM} is at least carbon,
326     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
327     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
328     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Least    carbon    ${kw_name}    @{varargs}    &{kwargs}
329
330 Run_Keyword_If_At_Least_Nitrogen
331     [Documentation]    Compare nitrogen to ${ODL_STREAM} and in case ${ODL_STREAM} is at least nitrogen,
332     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
333     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
334     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Least    nitrogen    ${kw_name}    @{varargs}    &{kwargs}
335
336 Run_Keyword_If_At_Least_Oxygen
337     [Documentation]    Compare oxygen to ${ODL_STREAM} and in case ${ODL_STREAM} is at least oxygen,
338     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
339     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
340     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Least    oxygen    ${kw_name}    @{varargs}    &{kwargs}
341
342 Run_Keyword_If_At_Least_Fluorine
343     [Documentation]    Compare fluorine to ${ODL_STREAM} and in case ${ODL_STREAM} is at least fluorine,
344     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
345     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
346     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Least    fluorine    ${kw_name}    @{varargs}    &{kwargs}
347
348 Run_Keyword_If_At_Least_Neon
349     [Documentation]    Compare neon to ${ODL_STREAM} and in case ${ODL_STREAM} is at least neon,
350     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
351     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
352     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Least    neon    ${kw_name}    @{varargs}    &{kwargs}
353
354 Run_Keyword_If_At_Least_Sodium
355     [Documentation]    Compare sodium to ${ODL_STREAM} and in case ${ODL_STREAM} is at least sodium,
356     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
357     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
358     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Least    sodium    ${kw_name}    @{varargs}    &{kwargs}
359
360 Run_Keyword_If_At_Least_Magnesium
361     [Documentation]    Compare magnesium to ${ODL_STREAM} and in case ${ODL_STREAM} is at least magnesium,
362     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
363     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
364     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Least    magnesium    ${kw_name}    @{varargs}    &{kwargs}
365
366 Run_Keyword_If_At_Least_Aluminium
367     [Documentation]    Compare aluminium to ${ODL_STREAM} and in case ${ODL_STREAM} is at least aluminium,
368     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
369     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
370     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Least    aluminium    ${kw_name}    @{varargs}    &{kwargs}
371
372 Run_Keyword_If_At_Least_Silicon
373     [Documentation]    Compare silicon to ${ODL_STREAM} and in case ${ODL_STREAM} is at least silicon,
374     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
375     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
376     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Least    silicon    ${kw_name}    @{varargs}    &{kwargs}
377
378 Run_Keyword_If_At_Least_Phosphorus
379     [Documentation]    Compare phosphorus to ${ODL_STREAM} and in case ${ODL_STREAM} is at least phosphorus,
380     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
381     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
382     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Least    phosphorus    ${kw_name}    @{varargs}    &{kwargs}
383
384 Run_Keyword_If_At_Least_Sulfur
385     [Documentation]    Compare sulfur to ${ODL_STREAM} and in case ${ODL_STREAM} is at least sulfur,
386     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
387     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
388     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Least    sulfur    ${kw_name}    @{varargs}    &{kwargs}
389
390 Run_Keyword_If_At_Least_Chlorine
391     [Documentation]    Compare chlorine to ${ODL_STREAM} and in case ${ODL_STREAM} is at least chlorine,
392     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
393     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
394     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Least    chlorine    ${kw_name}    @{varargs}    &{kwargs}
395
396 Run_Keyword_If_At_Most_Carbon
397     [Documentation]    Compare carbon to ${ODL_STREAM} and in case ${ODL_STREAM} is at most carbon,
398     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
399     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
400     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Most    carbon    ${kw_name}    @{varargs}    &{kwargs}
401
402 Run_Keyword_If_At_Most_Nitrogen
403     [Documentation]    Compare nitrogen to ${ODL_STREAM} and in case ${ODL_STREAM} is at most nitrogen,
404     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
405     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
406     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Most    nitrogen    ${kw_name}    @{varargs}    &{kwargs}
407
408 Run_Keyword_If_At_Most_Oxygen
409     [Documentation]    Compare oxygen to ${ODL_STREAM} and in case ${ODL_STREAM} is at most oxygen,
410     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
411     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
412     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Most    oxygen    ${kw_name}    @{varargs}    &{kwargs}
413
414 Run_Keyword_If_At_Most_Fluorine
415     [Documentation]    Compare fluorine to ${ODL_STREAM} and in case ${ODL_STREAM} is at most fluroine,
416     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
417     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
418     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Most    fluorine    ${kw_name}    @{varargs}    &{kwargs}
419
420 Run_Keyword_If_At_Most_Neon
421     [Documentation]    Compare neon to ${ODL_STREAM} and in case ${ODL_STREAM} is at most neon,
422     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
423     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
424     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Most    neon    ${kw_name}    @{varargs}    &{kwargs}
425
426 Run_Keyword_If_At_Most_Sodium
427     [Documentation]    Compare sodium to ${ODL_STREAM} and in case ${ODL_STREAM} is at most sodium,
428     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
429     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
430     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Most    sodium    ${kw_name}    @{varargs}    &{kwargs}
431
432 Run_Keyword_If_At_Most_Magnesium
433     [Documentation]    Compare magnesium to ${ODL_STREAM} and in case ${ODL_STREAM} is at most magnesium,
434     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
435     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
436     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Most    magnesium    ${kw_name}    @{varargs}    &{kwargs}
437
438 Run_Keyword_If_At_Most_Aluminium
439     [Documentation]    Compare aluminium to ${ODL_STREAM} and in case ${ODL_STREAM} is at most aluminium,
440     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
441     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
442     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Most    aluminium    ${kw_name}    @{varargs}    &{kwargs}
443
444 Run_Keyword_If_At_Most_Silicon
445     [Documentation]    Compare silicon to ${ODL_STREAM} and in case ${ODL_STREAM} is at most silicon,
446     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
447     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
448     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Most    silicon    ${kw_name}    @{varargs}    &{kwargs}
449
450 Run_Keyword_If_At_Most_Phosphorus
451     [Documentation]    Compare phosphorus to ${ODL_STREAM} and in case ${ODL_STREAM} is at most phosphorus,
452     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
453     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
454     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Most    phosphorus    ${kw_name}    @{varargs}    &{kwargs}
455
456 Run_Keyword_If_At_Most_Sulfur
457     [Documentation]    Compare sulfur to ${ODL_STREAM} and in case ${ODL_STREAM} is at most sulfur,
458     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
459     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
460     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Most    sulfur    ${kw_name}    @{varargs}    &{kwargs}
461
462 Run_Keyword_If_At_Most_Chlorine
463     [Documentation]    Compare chlorine to ${ODL_STREAM} and in case ${ODL_STREAM} is at most chlorine,
464     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
465     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
466     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_At_Most    chlorine    ${kw_name}    @{varargs}    &{kwargs}
467
468 Run_Keyword_If_More_Than_Carbon
469     [Documentation]    Compare carbon to ${ODL_STREAM} and in case ${ODL_STREAM} is more than carbon,
470     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
471     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
472     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_More_Than    carbon    ${kw_name}    @{varargs}    &{kwargs}
473
474 Run_Keyword_If_More_Than_Nitrogen
475     [Documentation]    Compare nitrogen to ${ODL_STREAM} and in case ${ODL_STREAM} is more than nitrogen,
476     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
477     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
478     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_More_Than    nitrogen    ${kw_name}    @{varargs}    &{kwargs}
479
480 Run_Keyword_If_More_Than_Oxygen
481     [Documentation]    Compare oxygen to ${ODL_STREAM} and in case ${ODL_STREAM} is more than oxygen,
482     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
483     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
484     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_More_Than    oxygen    ${kw_name}    @{varargs}    &{kwargs}
485
486 Run_Keyword_If_More_Than_Fluorine
487     [Documentation]    Compare fluorine to ${ODL_STREAM} and in case ${ODL_STREAM} is more than fluorine,
488     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
489     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
490     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_More_Than    fluorine    ${kw_name}    @{varargs}    &{kwargs}
491
492 Run_Keyword_If_More_Than_Neon
493     [Documentation]    Compare neon to ${ODL_STREAM} and in case ${ODL_STREAM} is more than neon,
494     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
495     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
496     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_More_Than    neon    ${kw_name}    @{varargs}    &{kwargs}
497
498 Run_Keyword_If_More_Than_Sodium
499     [Documentation]    Compare sodium to ${ODL_STREAM} and in case ${ODL_STREAM} is more than sodium,
500     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
501     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
502     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_More_Than    sodium    ${kw_name}    @{varargs}    &{kwargs}
503
504 Run_Keyword_If_More_Than_Magnesium
505     [Documentation]    Compare magnesium to ${ODL_STREAM} and in case ${ODL_STREAM} is more than magnesium,
506     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
507     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
508     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_More_Than    magnesium    ${kw_name}    @{varargs}    &{kwargs}
509
510 Run_Keyword_If_More_Than_Aluminium
511     [Documentation]    Compare aluminium to ${ODL_STREAM} and in case ${ODL_STREAM} is more than aluminium,
512     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
513     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
514     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_More_Than    aluminium    ${kw_name}    @{varargs}    &{kwargs}
515
516 Run_Keyword_If_More_Than_Silicon
517     [Documentation]    Compare silicon to ${ODL_STREAM} and in case ${ODL_STREAM} is more than silicon,
518     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
519     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
520     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_More_Than    silicon    ${kw_name}    @{varargs}    &{kwargs}
521
522 Run_Keyword_If_More_Than_Phosphorus
523     [Documentation]    Compare phosphorus to ${ODL_STREAM} and in case ${ODL_STREAM} is more than phosphorus,
524     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
525     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
526     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_More_Than    phosphorus    ${kw_name}    @{varargs}    &{kwargs}
527
528 Run_Keyword_If_More_Than_Sulfur
529     [Documentation]    Compare sulfur to ${ODL_STREAM} and in case ${ODL_STREAM} is more than sulfur,
530     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
531     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
532     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_More_Than    sulfur    ${kw_name}    @{varargs}    &{kwargs}
533
534 Run_Keyword_If_More_Than_Chlorine
535     [Documentation]    Compare chlorine to ${ODL_STREAM} and in case ${ODL_STREAM} is more than chlorine,
536     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
537     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
538     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_More_Than    chlorine    ${kw_name}    @{varargs}    &{kwargs}
539
540 Run_Keyword_If_Less_Than_Carbon
541     [Documentation]    Compare carbon to ${ODL_STREAM} and in case ${ODL_STREAM} is less than carbon,
542     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
543     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
544     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_Less_Than    carbon    ${kw_name}    @{varargs}    &{kwargs}
545
546 Run_Keyword_If_Less_Than_Nitrogen
547     [Documentation]    Compare nitrogen to ${ODL_STREAM} and in case ${ODL_STREAM} is less than nitrogen,
548     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
549     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
550     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_Less_Than    nitrogen    ${kw_name}    @{varargs}    &{kwargs}
551
552 Run_Keyword_If_Less_Than_Oxygen
553     [Documentation]    Compare oxygen to ${ODL_STREAM} and in case ${ODL_STREAM} is less than oxygen,
554     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
555     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
556     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_Less_Than    oxygen    ${kw_name}    @{varargs}    &{kwargs}
557
558 Run_Keyword_If_Less_Than_Fluorine
559     [Documentation]    Compare fluorine to ${ODL_STREAM} and in case ${ODL_STREAM} is less than fluorine,
560     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
561     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
562     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_Less_Than    fluorine    ${kw_name}    @{varargs}    &{kwargs}
563
564 Run_Keyword_If_Less_Than_Neon
565     [Documentation]    Compare neon to ${ODL_STREAM} and in case ${ODL_STREAM} is less than neon,
566     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
567     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
568     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_Less_Than    neon    ${kw_name}    @{varargs}    &{kwargs}
569
570 Run_Keyword_If_Less_Than_Sodium
571     [Documentation]    Compare sodium to ${ODL_STREAM} and in case ${ODL_STREAM} is less than sodium,
572     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
573     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
574     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_Less_Than    sodium    ${kw_name}    @{varargs}    &{kwargs}
575
576 Run_Keyword_If_Less_Than_Magnesium
577     [Documentation]    Compare magnesium to ${ODL_STREAM} and in case ${ODL_STREAM} is less than magnesium,
578     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
579     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
580     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_Less_Than    magnesium    ${kw_name}    @{varargs}    &{kwargs}
581
582 Run_Keyword_If_Less_Than_Aluminium
583     [Documentation]    Compare aluminium to ${ODL_STREAM} and in case ${ODL_STREAM} is less than aluminium,
584     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
585     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
586     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_Less_Than    aluminium    ${kw_name}    @{varargs}    &{kwargs}
587
588 Run_Keyword_If_Less_Than_Silicon
589     [Documentation]    Compare silicon to ${ODL_STREAM} and in case ${ODL_STREAM} is less than silicon,
590     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
591     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
592     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_Less_Than    silicon    ${kw_name}    @{varargs}    &{kwargs}
593
594 Run_Keyword_If_Less_Than_Phosphorus
595     [Documentation]    Compare phosphorus to ${ODL_STREAM} and in case ${ODL_STREAM} is less than phosphorus,
596     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
597     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
598     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_Less_Than    phosphorus    ${kw_name}    @{varargs}    &{kwargs}
599
600 Run_Keyword_If_Less_Than_Sulfur
601     [Documentation]    Compare sulfur to ${ODL_STREAM} and in case ${ODL_STREAM} is less than sulfur,
602     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
603     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
604     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_Less_Than    sulfur    ${kw_name}    @{varargs}    &{kwargs}
605
606 Run_Keyword_If_Less_Than_Chlorine
607     [Documentation]    Compare chlorine to ${ODL_STREAM} and in case ${ODL_STREAM} is less than chlorine,
608     ...    run ${kw_name} @{varargs} &{kwargs} and return its value.
609     [Arguments]    ${kw_name}    @{varargs}    &{kwargs}
610     BuiltIn.Run_Keyword_And_Return    Run_Keyword_If_Less_Than    chlorine    ${kw_name}    @{varargs}    &{kwargs}