holado 0.2.2__py3-none-any.whl → 0.2.4__py3-none-any.whl

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.

Potentially problematic release.


This version of holado might be problematic. Click here for more details.

Files changed (524) hide show
  1. holado/__init__.py +11 -1
  2. {holado-0.2.2.dist-info → holado-0.2.4.dist-info}/METADATA +13 -9
  3. holado-0.2.4.dist-info/RECORD +535 -0
  4. holado_ais/__init__.py +33 -0
  5. holado_ais/ais/MaritimeIdentificationDigits.csv +295 -0
  6. holado_ais/ais/ais_manager.py +151 -0
  7. holado_ais/ais/ais_messages.py +204 -0
  8. holado_ais/ais/ais_payload.py +35 -0
  9. holado_ais/ais/enums.py +37 -0
  10. holado_ais/ais/patch_pyais.py +1303 -0
  11. holado_ais/tests/behave/steps/__init__.py +17 -0
  12. holado_ais/tests/behave/steps/ais/__init__.py +0 -0
  13. holado_ais/tests/behave/steps/ais/ais_manager_steps.py +50 -0
  14. holado_ais/tests/behave/steps/ais/ais_messages_steps.py +182 -0
  15. holado_binary/__init__.py +17 -0
  16. holado_binary/ipc/binary.py +125 -0
  17. holado_binary/ipc/bit_series.py +307 -0
  18. holado_binary/tests/behave/steps/__init__.py +17 -0
  19. holado_binary/tests/behave/steps/ipc/binary_steps.py +57 -0
  20. holado_binary/tests/behave/steps/ipc/bit_series_steps.py +131 -0
  21. holado_context/__init__.py +16 -0
  22. holado_context/tests/behave/steps/__init__.py +16 -0
  23. holado_context/tests/behave/steps/private/__init__.py +16 -0
  24. holado_context/tests/behave/steps/private/common/context_steps.py +36 -0
  25. holado_core/__init__.py +32 -0
  26. holado_core/common/__init__.py +0 -0
  27. holado_core/common/actors/actions.py +97 -0
  28. holado_core/common/actors/actor.py +226 -0
  29. holado_core/common/actors/element_actor.py +32 -0
  30. holado_core/common/actors/find_actor.py +106 -0
  31. holado_core/common/actors/tree_actor.py +32 -0
  32. holado_core/common/actors/verify_actions.py +69 -0
  33. holado_core/common/block/base.py +122 -0
  34. holado_core/common/block/block_manager.py +173 -0
  35. holado_core/common/block/block_method.py +46 -0
  36. holado_core/common/block/block_steps.py +37 -0
  37. holado_core/common/block/function.py +42 -0
  38. holado_core/common/block/scope_function.py +28 -0
  39. holado_core/common/block/scope_manager.py +238 -0
  40. holado_core/common/block/scope_steps.py +141 -0
  41. holado_core/common/criterias/and_criteria.py +61 -0
  42. holado_core/common/criterias/criteria.py +78 -0
  43. holado_core/common/criterias/or_criteria.py +64 -0
  44. holado_core/common/criterias/tools/criteria_context.py +20 -0
  45. holado_core/common/criterias/tools/criteria_parameters.py +18 -0
  46. holado_core/common/drivers/driver.py +153 -0
  47. holado_core/common/drivers/element_driver.py +30 -0
  48. holado_core/common/drivers/element_internal_api.py +239 -0
  49. holado_core/common/drivers/internal_api.py +40 -0
  50. holado_core/common/drivers/tree_driver.py +30 -0
  51. holado_core/common/drivers/tree_internal_api.py +176 -0
  52. holado_core/common/exceptions/__init__.py +0 -0
  53. holado_core/common/exceptions/element_exception.py +28 -0
  54. holado_core/common/exceptions/exceptions.py +24 -0
  55. holado_core/common/exceptions/functional_exception.py +21 -0
  56. holado_core/common/exceptions/holado_exception.py +25 -0
  57. holado_core/common/exceptions/technical_exception.py +27 -0
  58. holado_core/common/exceptions/timeout_exception.py +20 -0
  59. holado_core/common/exceptions/verify_exception.py +20 -0
  60. holado_core/common/finders/after_in_tree_finder.py +87 -0
  61. holado_core/common/finders/element_finder.py +60 -0
  62. holado_core/common/finders/else_finder.py +105 -0
  63. holado_core/common/finders/finder.py +478 -0
  64. holado_core/common/finders/or_finder.py +98 -0
  65. holado_core/common/finders/then_finder.py +157 -0
  66. holado_core/common/finders/tools/enums.py +30 -0
  67. holado_core/common/finders/tools/find_builder.py +118 -0
  68. holado_core/common/finders/tools/find_context.py +405 -0
  69. holado_core/common/finders/tools/find_info.py +27 -0
  70. holado_core/common/finders/tools/find_parameters.py +240 -0
  71. holado_core/common/finders/tools/find_updater.py +95 -0
  72. holado_core/common/finders/tools/finder_info.py +26 -0
  73. holado_core/common/finders/tree_finder.py +146 -0
  74. holado_core/common/handlers/__init__.py +0 -0
  75. holado_core/common/handlers/abstracts/base_redo.py +695 -0
  76. holado_core/common/handlers/abstracts/get_or_create.py +120 -0
  77. holado_core/common/handlers/element_holder.py +122 -0
  78. holado_core/common/handlers/enums.py +23 -0
  79. holado_core/common/handlers/exceptions/redo_exceptions.py +28 -0
  80. holado_core/common/handlers/features/resource_by_name.py +187 -0
  81. holado_core/common/handlers/features/resource_by_type.py +174 -0
  82. holado_core/common/handlers/redo.py +119 -0
  83. holado_core/common/handlers/wait.py +127 -0
  84. holado_core/common/inspectors/element_inspector.py +57 -0
  85. holado_core/common/inspectors/inspector.py +221 -0
  86. holado_core/common/inspectors/tools/inspect_builder.py +169 -0
  87. holado_core/common/inspectors/tools/inspect_context.py +69 -0
  88. holado_core/common/inspectors/tools/inspect_parameters.py +181 -0
  89. holado_core/common/inspectors/tree_inspector.py +73 -0
  90. holado_core/common/resource/persisted_data_manager.py +113 -0
  91. holado_core/common/resource/persisted_method_to_call_manager.py +133 -0
  92. holado_core/common/resource/resource_manager.py +143 -0
  93. holado_core/common/tables/__init__.py +1 -0
  94. holado_core/common/tables/comparators/__init__.py +0 -0
  95. holado_core/common/tables/comparators/boolean_table_cell_comparator.py +25 -0
  96. holado_core/common/tables/comparators/bytes_table_cell_comparator.py +25 -0
  97. holado_core/common/tables/comparators/datetime_table_cell_comparator.py +24 -0
  98. holado_core/common/tables/comparators/float_table_cell_comparator.py +31 -0
  99. holado_core/common/tables/comparators/integer_table_cell_comparator.py +25 -0
  100. holado_core/common/tables/comparators/internal_table_cell_comparator.py +30 -0
  101. holado_core/common/tables/comparators/string_table_cell_comparator.py +24 -0
  102. holado_core/common/tables/comparators/string_table_comparator.py +29 -0
  103. holado_core/common/tables/comparators/string_table_row_comparator.py +29 -0
  104. holado_core/common/tables/comparators/table_cell_comparator.py +40 -0
  105. holado_core/common/tables/comparators/table_comparator.py +209 -0
  106. holado_core/common/tables/comparators/table_comparator_manager.py +60 -0
  107. holado_core/common/tables/comparators/table_row_comparator.py +116 -0
  108. holado_core/common/tables/comparators/table_with_header_comparator.py +68 -0
  109. holado_core/common/tables/converters/__init__.py +0 -0
  110. holado_core/common/tables/converters/table_converter.py +194 -0
  111. holado_core/common/tables/enums.py +23 -0
  112. holado_core/common/tables/table.py +261 -0
  113. holado_core/common/tables/table_cell.py +126 -0
  114. holado_core/common/tables/table_manager.py +366 -0
  115. holado_core/common/tables/table_row.py +169 -0
  116. holado_core/common/tables/table_with_header.py +236 -0
  117. holado_core/common/tools/__init__.py +0 -0
  118. holado_core/common/tools/comparators/comparator.py +151 -0
  119. holado_core/common/tools/comparators/object_comparator.py +21 -0
  120. holado_core/common/tools/converters/converter.py +107 -0
  121. holado_core/common/tools/path_manager.py +185 -0
  122. holado_core/common/tools/string_tools.py +135 -0
  123. holado_core/common/tools/tools.py +172 -0
  124. holado_core/common/transport/__init__.py +0 -0
  125. holado_core/common/transport/crc.py +40 -0
  126. holado_core/tests/behave/steps/__init__.py +20 -0
  127. holado_core/tests/behave/steps/common/__init__.py +0 -0
  128. holado_core/tests/behave/steps/common/common_steps.py +136 -0
  129. holado_core/tests/behave/steps/common/config_steps.py +42 -0
  130. holado_core/tests/behave/steps/common/resource_steps.py +62 -0
  131. holado_core/tests/behave/steps/common/tables_steps.py +537 -0
  132. holado_core/tools/__init__.py +0 -0
  133. holado_core/tools/abstracts/__init__.py +0 -0
  134. holado_core/tools/abstracts/blocking_command_service.py +56 -0
  135. holado_core/tools/abstracts/service.py +48 -0
  136. holado_data/__init__.py +31 -0
  137. holado_data/data/generator/base.py +93 -0
  138. holado_data/data/generator/python_generator.py +30 -0
  139. holado_data/tests/behave/steps/__init__.py +17 -0
  140. holado_data/tests/behave/steps/data/generator_steps.py +91 -0
  141. holado_data/tests/behave/steps/tools/utils_steps.py +60 -0
  142. holado_db/__init__.py +32 -0
  143. holado_db/tests/behave/steps/__init__.py +18 -0
  144. holado_db/tests/behave/steps/tools/db/db_client_steps.py +134 -0
  145. holado_db/tests/behave/steps/tools/db/postgresql_client_steps.py +59 -0
  146. holado_db/tests/behave/steps/tools/db/sqlite_client_steps.py +57 -0
  147. holado_db/tools/db/clients/base/db_client.py +206 -0
  148. holado_db/tools/db/clients/postgresql/postgresql_client.py +65 -0
  149. holado_db/tools/db/clients/sqlite/sqlite_client.py +56 -0
  150. holado_db/tools/db/db_manager.py +109 -0
  151. holado_db/tools/db/query/base/query_builder.py +87 -0
  152. holado_db/tools/db/query/pypika/pypika_query_builder.py +193 -0
  153. holado_db/tools/db/query/query_manager.py +77 -0
  154. holado_docker/__init__.py +25 -0
  155. holado_docker/sdk/docker/docker_client.py +268 -0
  156. holado_docker/sdk/docker/docker_service.py +71 -0
  157. holado_docker/tests/behave/steps/__init__.py +16 -0
  158. holado_docker/tests/behave/steps/tools/docker_steps.py +33 -0
  159. holado_docker/tools/docker_controler/__init__.py +26 -0
  160. holado_docker/tools/docker_controler/docker_controler_client.py +36 -0
  161. holado_docker/tools/docker_controler/docker_controler_server.py +31 -0
  162. holado_docker/tools/docker_controler/proto/compile_proto.py +60 -0
  163. holado_docker/tools/docker_controler/proto/definitions/docker_controler.proto +63 -0
  164. holado_docker/tools/docker_controler/proto/generated/docker_controler_pb2.py +52 -0
  165. holado_docker/tools/docker_controler/proto/generated/docker_controler_pb2_grpc.py +233 -0
  166. holado_grpc/__init__.py +32 -0
  167. holado_grpc/api/rpc/TODO.txt +4 -0
  168. holado_grpc/api/rpc/grpc_client.py +181 -0
  169. holado_grpc/api/rpc/grpc_manager.py +81 -0
  170. holado_grpc/ipc/rpc/__init__.py +0 -0
  171. holado_grpc/ipc/rpc/grpc_compiler.py +45 -0
  172. holado_grpc/ipc/rpc/grpc_services.py +165 -0
  173. holado_grpc/tests/behave/steps/__init__.py +16 -0
  174. holado_grpc/tests/behave/steps/api/grpc_client_steps.py +173 -0
  175. holado_grpc/tests/behave/steps/private/__init__.py +16 -0
  176. holado_grpc/tests/behave/steps/private/api/grpc_steps.py +77 -0
  177. holado_helper/__init__.py +35 -0
  178. holado_helper/debug/README.txt +32 -0
  179. holado_helper/debug/memory/memory_profiler.py +106 -0
  180. holado_helper/docker/init_user.sh +24 -0
  181. holado_helper/docker/logging.conf +42 -0
  182. holado_helper/docker/run_holado_test_nonreg_in_docker.sh +120 -0
  183. holado_helper/docker/run_terminal_in_docker-with_docker_control.sh +103 -0
  184. holado_helper/docker/run_terminal_in_docker.sh +101 -0
  185. holado_helper/holado_module_template/__init__.py +31 -0
  186. holado_helper/holado_module_template/test/behave/steps/__init__.py +16 -0
  187. holado_helper/holado_module_template/test/behave/steps/private/__init__.py +16 -0
  188. holado_helper/script/action.py +109 -0
  189. holado_helper/script/action_script.py +477 -0
  190. holado_helper/script/any_action_script.py +126 -0
  191. holado_helper/script/behave_action_script.py +99 -0
  192. holado_helper/script/csv_action_script.py +142 -0
  193. holado_helper/script/initialize_script.py +115 -0
  194. holado_helper/script/input_output_script.py +136 -0
  195. holado_helper/script/job.py +75 -0
  196. holado_helper/script/json_action_script.py +104 -0
  197. holado_helper/script/script.py +110 -0
  198. holado_json/__init__.py +16 -0
  199. holado_json/ipc/json.py +125 -0
  200. holado_json/ipc/json_converter.py +69 -0
  201. holado_json/ipc/json_types.py +183 -0
  202. holado_json/tests/behave/steps/__init__.py +16 -0
  203. holado_json/tests/behave/steps/ipc/__init__.py +0 -0
  204. holado_json/tests/behave/steps/ipc/json_steps.py +120 -0
  205. holado_keycloak/__init__.py +16 -0
  206. holado_keycloak/tests/behave/steps/__init__.py +16 -0
  207. holado_keycloak/tests/behave/steps/tools/keycloak_client_steps.py +59 -0
  208. holado_keycloak/tools/keycloak/__init__.py +0 -0
  209. holado_keycloak/tools/keycloak/keycloak_client.py +61 -0
  210. holado_logging/__init__.py +37 -0
  211. holado_logging/common/logging/holado_logger.py +75 -0
  212. holado_logging/common/logging/log_config.py +128 -0
  213. holado_logging/common/logging/log_manager.py +292 -0
  214. holado_multitask/__init__.py +33 -0
  215. holado_multitask/multiprocessing/context/process_context.py +35 -0
  216. holado_multitask/multiprocessing/function_process.py +102 -0
  217. holado_multitask/multiprocessing/periodic_function_process.py +135 -0
  218. holado_multitask/multiprocessing/process.py +196 -0
  219. holado_multitask/multiprocessing/processesmanager.py +133 -0
  220. holado_multitask/multitasking/multitask_manager.py +439 -0
  221. holado_multitask/multithreading/__init__.py +0 -0
  222. holado_multitask/multithreading/context/thread_context.py +84 -0
  223. holado_multitask/multithreading/functionthreaded.py +129 -0
  224. holado_multitask/multithreading/loopfunctionthreaded.py +45 -0
  225. holado_multitask/multithreading/loopthread.py +100 -0
  226. holado_multitask/multithreading/periodicfunctionthreaded.py +136 -0
  227. holado_multitask/multithreading/reflection/inspect.py +47 -0
  228. holado_multitask/multithreading/reflection/sys.py +29 -0
  229. holado_multitask/multithreading/reflection/traceback.py +35 -0
  230. holado_multitask/multithreading/thread.py +177 -0
  231. holado_multitask/multithreading/threadsmanager.py +162 -0
  232. holado_multitask/multithreading/timer.py +48 -0
  233. holado_multitask/tests/behave/steps/__init__.py +17 -0
  234. holado_multitask/tests/behave/steps/multiprocessing_steps.py +138 -0
  235. holado_multitask/tests/behave/steps/multithreading_steps.py +129 -0
  236. holado_protobuf/__init__.py +61 -0
  237. holado_protobuf/ipc/protobuf/__init__.py +0 -0
  238. holado_protobuf/ipc/protobuf/abstracts/type.py +45 -0
  239. holado_protobuf/ipc/protobuf/protobuf_compiler.py +118 -0
  240. holado_protobuf/ipc/protobuf/protobuf_converter.py +153 -0
  241. holado_protobuf/ipc/protobuf/protobuf_messages.py +968 -0
  242. holado_protobuf/ipc/protobuf/protobuf_modifier.py +65 -0
  243. holado_protobuf/ipc/protobuf/types/__init__.py +0 -0
  244. holado_protobuf/ipc/protobuf/types/google/__init__.py +0 -0
  245. holado_protobuf/ipc/protobuf/types/google/protobuf.py +124 -0
  246. holado_protobuf/tests/behave/steps/__init__.py +16 -0
  247. holado_protobuf/tests/behave/steps/ipc/protobuf_steps.py +297 -0
  248. holado_python/__init__.py +35 -0
  249. holado_python/common/enums.py +34 -0
  250. holado_python/common/iterables.py +30 -0
  251. holado_python/common/tools/comparators/boolean_comparator.py +37 -0
  252. holado_python/common/tools/comparators/bytes_comparator.py +48 -0
  253. holado_python/common/tools/comparators/datetime_comparator.py +74 -0
  254. holado_python/common/tools/comparators/float_comparator.py +97 -0
  255. holado_python/common/tools/comparators/integer_comparator.py +37 -0
  256. holado_python/common/tools/comparators/string_comparator.py +99 -0
  257. holado_python/common/tools/comparators/type_comparator.py +31 -0
  258. holado_python/common/tools/datetime.py +279 -0
  259. holado_python/standard_library/csv.py +207 -0
  260. holado_python/standard_library/hashlib.py +82 -0
  261. holado_python/standard_library/multiprocessing.py +62 -0
  262. holado_python/standard_library/queue.py +79 -0
  263. holado_python/standard_library/socket/blocking_socket.py +136 -0
  264. holado_python/standard_library/socket/echo_server.py +28 -0
  265. holado_python/standard_library/socket/message_socket.py +91 -0
  266. holado_python/standard_library/socket/non_blocking_socket.py +151 -0
  267. holado_python/standard_library/socket/socket.py +148 -0
  268. holado_python/standard_library/ssl/resources/certificates/NOTES.txt +5 -0
  269. holado_python/standard_library/ssl/resources/certificates/localhost.crt +19 -0
  270. holado_python/standard_library/ssl/resources/certificates/localhost.key +28 -0
  271. holado_python/standard_library/ssl/ssl.py +81 -0
  272. holado_python/standard_library/typing.py +192 -0
  273. holado_python/tests/behave/steps/__init__.py +27 -0
  274. holado_python/tests/behave/steps/builtins/str_steps.py +45 -0
  275. holado_python/tests/behave/steps/convert_steps.py +59 -0
  276. holado_python/tests/behave/steps/iterable_steps.py +87 -0
  277. holado_python/tests/behave/steps/standard_library/csv_steps.py +134 -0
  278. holado_python/tests/behave/steps/standard_library/datetime_steps.py +163 -0
  279. holado_python/tests/behave/steps/standard_library/hashlib_steps.py +57 -0
  280. holado_python/tests/behave/steps/standard_library/multiprocessing_steps.py +56 -0
  281. holado_python/tests/behave/steps/standard_library/queue_steps.py +358 -0
  282. holado_python/tests/behave/steps/standard_library/socket_steps.py +258 -0
  283. holado_python/tests/behave/steps/standard_library/ssl_steps.py +67 -0
  284. holado_rabbitmq/__init__.py +28 -0
  285. holado_rabbitmq/tests/behave/steps/__init__.py +17 -0
  286. holado_rabbitmq/tests/behave/steps/tools/rabbitmq_client_steps.py +537 -0
  287. holado_rabbitmq/tests/behave/steps/tools/rabbitmq_server_steps.py +64 -0
  288. holado_rabbitmq/tools/rabbitmq/rabbitmq_blocking_client.py +311 -0
  289. holado_rabbitmq/tools/rabbitmq/rabbitmq_client.py +674 -0
  290. holado_rabbitmq/tools/rabbitmq/rabbitmq_manager.py +173 -0
  291. holado_rabbitmq/tools/rabbitmq/rabbitmq_select_client.py +428 -0
  292. holado_rabbitmq/tools/rabbitmq/rabbitmq_server.py +24 -0
  293. holado_redis/__init__.py +17 -0
  294. holado_redis/tests/behave/steps/__init__.py +16 -0
  295. holado_redis/tests/behave/steps/tools/redis_client_steps.py +101 -0
  296. holado_redis/tools/redis/TODO.txt +7 -0
  297. holado_redis/tools/redis/redis_client.py +190 -0
  298. holado_redis/tools/redis/redis_manager.py +38 -0
  299. holado_report/__init__.py +27 -0
  300. holado_report/report/analyze/execution_historic_manager.py +96 -0
  301. holado_report/report/analyze/scenario_duration_manager.py +245 -0
  302. holado_report/report/builders/detailed_scenario_failed_report_builder.py +146 -0
  303. holado_report/report/builders/json_execution_historic_report_builder.py +123 -0
  304. holado_report/report/builders/report_builder.py +64 -0
  305. holado_report/report/builders/short_scenario_failed_report_builder.py +76 -0
  306. holado_report/report/builders/summary_report_builder.py +89 -0
  307. holado_report/report/builders/summary_scenario_failed_report_builder.py +56 -0
  308. holado_report/report/builders/summary_scenario_report_builder.py +74 -0
  309. holado_report/report/execution_historic.py +141 -0
  310. holado_report/report/report_manager.py +256 -0
  311. holado_report/report/reports/base_report.py +163 -0
  312. holado_report/report/reports/feature_report.py +106 -0
  313. holado_report/report/reports/scenario_report.py +64 -0
  314. holado_rest/__init__.py +24 -0
  315. holado_rest/api/rest/TODO.txt +2 -0
  316. holado_rest/api/rest/rest_client.py +113 -0
  317. holado_rest/api/rest/rest_manager.py +62 -0
  318. holado_rest/tests/behave/steps/__init__.py +16 -0
  319. holado_rest/tests/behave/steps/api/__init__.py +0 -0
  320. holado_rest/tests/behave/steps/api/rest_client_steps.py +141 -0
  321. holado_rest/tests/behave/steps/private/__init__.py +16 -0
  322. holado_rest/tests/behave/steps/private/api/__init__.py +0 -0
  323. holado_rest/tests/behave/steps/private/api/rest_steps.py +70 -0
  324. holado_s3/__init__.py +17 -0
  325. holado_s3/tests/behave/steps/__init__.py +17 -0
  326. holado_s3/tests/behave/steps/private/__init__.py +16 -0
  327. holado_s3/tests/behave/steps/private/tools/s3_steps.py +89 -0
  328. holado_s3/tests/behave/steps/tools/s3_client_steps.py +403 -0
  329. holado_s3/tests/behave/steps/tools/s3_server_steps.py +57 -0
  330. holado_s3/tools/s3/__init__.py +0 -0
  331. holado_s3/tools/s3/boto3_s3_client.py +59 -0
  332. holado_s3/tools/s3/minio_client.py +75 -0
  333. holado_s3/tools/s3/moto_server.py +52 -0
  334. holado_scripting/__init__.py +53 -0
  335. holado_scripting/common/tools/dynamic_text_manager.py +73 -0
  336. holado_scripting/common/tools/evaluate_parameters.py +210 -0
  337. holado_scripting/common/tools/expression_evaluator.py +387 -0
  338. holado_scripting/common/tools/variable_manager.py +321 -0
  339. holado_scripting/tests/behave/steps/__init__.py +22 -0
  340. holado_scripting/tests/behave/steps/common/tools/variable_convert_steps.py +158 -0
  341. holado_scripting/tests/behave/steps/common/tools/variable_new_steps.py +130 -0
  342. holado_scripting/tests/behave/steps/common/tools/variable_steps.py +108 -0
  343. holado_scripting/tests/behave/steps/common/tools/variable_verify_steps.py +160 -0
  344. holado_scripting/tests/behave/steps/scenario/function_steps.py +77 -0
  345. holado_scripting/tests/behave/steps/scenario/if_steps.py +87 -0
  346. holado_scripting/tests/behave/steps/scenario/loop_steps.py +119 -0
  347. holado_scripting/text/base/base_function.py +25 -0
  348. holado_scripting/text/base/base_verify_function.py +25 -0
  349. holado_scripting/text/base/text_inspecter.py +204 -0
  350. holado_scripting/text/interpreter/exceptions/interpreter_exception.py +25 -0
  351. holado_scripting/text/interpreter/functions/function_cast.py +60 -0
  352. holado_scripting/text/interpreter/functions/function_convert.py +57 -0
  353. holado_scripting/text/interpreter/functions/function_dynamic_value.py +40 -0
  354. holado_scripting/text/interpreter/functions/function_escape_all_bytes.py +35 -0
  355. holado_scripting/text/interpreter/functions/function_exists_variable.py +39 -0
  356. holado_scripting/text/interpreter/functions/function_hex_to_bytes.py +49 -0
  357. holado_scripting/text/interpreter/functions/function_hex_to_int.py +53 -0
  358. holado_scripting/text/interpreter/functions/function_to_base_64.py +41 -0
  359. holado_scripting/text/interpreter/functions/function_to_bytes.py +50 -0
  360. holado_scripting/text/interpreter/functions/function_to_hex.py +42 -0
  361. holado_scripting/text/interpreter/text_interpreter.py +216 -0
  362. holado_scripting/text/verifier/exceptions/verifier_exception.py +21 -0
  363. holado_scripting/text/verifier/functions/verify_function_extract_in.py +35 -0
  364. holado_scripting/text/verifier/functions/verify_function_match_pattern.py +63 -0
  365. holado_scripting/text/verifier/text_verifier.py +103 -0
  366. holado_sftp/__init__.py +16 -0
  367. holado_sftp/tests/behave/steps/__init__.py +17 -0
  368. holado_sftp/tests/behave/steps/private/__init__.py +16 -0
  369. holado_sftp/tests/behave/steps/private/tools/sftp_steps.py +78 -0
  370. holado_sftp/tests/behave/steps/tools/sftp_client_steps.py +94 -0
  371. holado_sftp/tests/behave/steps/tools/sftp_server_steps.py +82 -0
  372. holado_sftp/tools/sftp/__init__.py +0 -0
  373. holado_sftp/tools/sftp/sftp_client.py +103 -0
  374. holado_sftp/tools/sftp/sftp_server.py +39 -0
  375. holado_swagger/__init__.py +31 -0
  376. holado_swagger/swagger_hub/mockserver/mockserver_client.py +82 -0
  377. holado_swagger/swagger_hub/mockserver/mockserver_manager.py +32 -0
  378. holado_swagger/tests/behave/steps/__init__.py +16 -0
  379. holado_swagger/tests/behave/steps/swagger_hub/mockserver_steps.py +74 -0
  380. holado_system/system/command/command.py +216 -0
  381. holado_system/system/command/command_result.py +128 -0
  382. holado_system/system/command/curl_command.py +101 -0
  383. holado_system/system/command/exceptions.py +59 -0
  384. holado_system/system/filesystem/file.py +76 -0
  385. holado_system/system/global_system.py +187 -0
  386. holado_system/tests/behave/steps/__init__.py +18 -0
  387. holado_system/tests/behave/steps/system/commands_steps.py +92 -0
  388. holado_system/tests/behave/steps/system/file_steps.py +215 -0
  389. holado_system/tests/behave/steps/system/system_steps.py +84 -0
  390. holado_test/__init__.py +27 -0
  391. holado_test/behave/__init__.py +0 -0
  392. holado_test/behave/behave.py +397 -0
  393. holado_test/behave/behave_environment.py +143 -0
  394. holado_test/behave/behave_function.py +33 -0
  395. holado_test/behave/behave_manager.py +555 -0
  396. holado_test/behave/independant_runner.py +68 -0
  397. holado_test/behave/scenario/__init__.py +0 -0
  398. holado_test/behave/scenario/behave_step_tools.py +157 -0
  399. holado_test/common/context/feature_context.py +79 -0
  400. holado_test/common/context/scenario_context.py +217 -0
  401. holado_test/common/context/step_context.py +66 -0
  402. holado_test/common/exceptions/undefined_step_exception.py +21 -0
  403. holado_test/scenario/step_tools.py +523 -0
  404. holado_test/scenario/tester_tools.py +52 -0
  405. holado_test/test_config.py +26 -0
  406. holado_test/tests/behave/steps/__init__.py +18 -0
  407. holado_test/tests/behave/steps/scenario/exception_steps.py +87 -0
  408. holado_test/tests/behave/steps/scenario/scenario_steps.py +87 -0
  409. holado_test/tests/behave/steps/scenario/tester_steps.py +65 -0
  410. holado_value/__init__.py +24 -0
  411. holado_value/common/tables/comparators/table_2_value_table_cell_comparator.py +195 -0
  412. holado_value/common/tables/comparators/table_2_value_table_comparator.py +27 -0
  413. holado_value/common/tables/comparators/table_2_value_table_row_comparator.py +27 -0
  414. holado_value/common/tables/comparators/table_2_value_table_with_header_comparator.py +27 -0
  415. holado_value/common/tables/converters/value_table_converter.py +217 -0
  416. holado_value/common/tables/value_table.py +29 -0
  417. holado_value/common/tables/value_table_cell.py +67 -0
  418. holado_value/common/tables/value_table_manager.py +58 -0
  419. holado_value/common/tables/value_table_row.py +44 -0
  420. holado_value/common/tables/value_table_with_header.py +28 -0
  421. holado_value/common/tools/unique_value_manager.py +108 -0
  422. holado_value/common/tools/value.py +164 -0
  423. holado_value/common/tools/value_types.py +35 -0
  424. holado_value/tests/behave/steps/__init__.py +16 -0
  425. holado_value/tests/behave/steps/private/__init__.py +16 -0
  426. holado_ws/__init__.py +16 -0
  427. holado_ws/api/ws/TODO.txt +2 -0
  428. holado_ws/tests/behave/steps/__init__.py +16 -0
  429. holado_ws/tests/behave/steps/api/web_service_steps.py +189 -0
  430. holado_yaml/__init__.py +31 -0
  431. holado_yaml/tests/behave/steps/__init__.py +16 -0
  432. holado_yaml/tests/behave/steps/yaml_steps.py +64 -0
  433. holado_yaml/yaml/yaml_manager.py +86 -0
  434. test_holado/Dockerfile_test_holado +82 -0
  435. test_holado/__init__.py +4 -0
  436. test_holado/__main__.py +25 -0
  437. test_holado/build_docker_image_to_test_holado_in_docker.sh +7 -0
  438. test_holado/environment.py +42 -0
  439. test_holado/features/NonReg/api/REST.feature +21 -0
  440. test_holado/features/NonReg/api/gRPC.feature +122 -0
  441. test_holado/features/NonReg/common/multiprocessing/simple.feature +60 -0
  442. test_holado/features/NonReg/common/system/commands.feature +43 -0
  443. test_holado/features/NonReg/common/system/system.feature +20 -0
  444. test_holado/features/NonReg/common/tables/table.feature +239 -0
  445. test_holado/features/NonReg/common/tables/value_table_conversion.feature +29 -0
  446. test_holado/features/NonReg/common/tools/DateTime.feature +88 -0
  447. test_holado/features/NonReg/common/tools/UniqueValueManager.feature +43 -0
  448. test_holado/features/NonReg/holado_ais/ais_message-bitarray_to_nmea.feature +135 -0
  449. test_holado/features/NonReg/holado_protobuf/protobuf.feature +291 -0
  450. test_holado/features/NonReg/holado_python/convert.feature +20 -0
  451. test_holado/features/NonReg/holado_python/iterable.feature +61 -0
  452. test_holado/features/NonReg/holado_python/standard_library/socket.feature +101 -0
  453. test_holado/features/NonReg/holado_python/standard_library/socket_with_ssl.feature +180 -0
  454. test_holado/features/NonReg/holado_scripting/common/tools/dynamic_text_manager.feature +18 -0
  455. test_holado/features/NonReg/holado_scripting/common/tools/expression_evaluator.feature +185 -0
  456. test_holado/features/NonReg/holado_scripting/common/tools/variable_manager.feature +71 -0
  457. test_holado/features/NonReg/holado_scripting/text/interpreter/interpreter.error.feature +21 -0
  458. test_holado/features/NonReg/holado_scripting/text/interpreter/interpreter.feature +120 -0
  459. test_holado/features/NonReg/holado_yaml/yaml.feature +218 -0
  460. test_holado/features/NonReg/ipc/bit_series.error.feature +33 -0
  461. test_holado/features/NonReg/ipc/bit_series.feature +131 -0
  462. test_holado/features/NonReg/ipc/json.feature +20 -0
  463. test_holado/features/NonReg/scenario/scenario.feature +139 -0
  464. test_holado/features/NonReg/test_steps/behave.feature +275 -0
  465. test_holado/features/NonReg/test_steps/common.feature +100 -0
  466. test_holado/features/NonReg/tools/RabbitMQ.feature +445 -0
  467. test_holado/features/NonReg/tools/RabbitMQ_steps.feature +276 -0
  468. test_holado/features/NonReg/tools/S3/boto3_client.feature +73 -0
  469. test_holado/features/NonReg/tools/S3/minio_client.feature +75 -0
  470. test_holado/features/NonReg/tools/db_sqlite3.feature +41 -0
  471. test_holado/features/NonReg/tools/sFTP.feature +25 -0
  472. test_holado/features/Test/logger.feature +28 -0
  473. test_holado/features/__init__.py +0 -0
  474. test_holado/logging.conf +41 -0
  475. test_holado/resources/proto/definitions/protobuf/custom_types/field_types.proto +24 -0
  476. test_holado/resources/proto/definitions/protobuf/protobuf.dev/tutorial/addressbook.proto +56 -0
  477. test_holado/resources/proto/generated/protobuf/custom_types/field_types_pb2.py +34 -0
  478. test_holado/resources/proto/generated/protobuf/protobuf/dev/tutorial/addressbook_pb2.py +34 -0
  479. test_holado/resources/scripts/list_tags.sh +2 -0
  480. test_holado/resources/scripts/update_resources_proto_generated.py +70 -0
  481. test_holado/steps/__init__.py +0 -0
  482. test_holado/steps/private_steps.py +20 -0
  483. test_holado/steps/public_steps.py +23 -0
  484. test_holado/test_holado_session_context.py +43 -0
  485. test_holado/tools/django/README.txt +3 -0
  486. test_holado/tools/django/api_grpc/api_grpc/__init__.py +0 -0
  487. test_holado/tools/django/api_grpc/api_grpc/api1/__init__.py +0 -0
  488. test_holado/tools/django/api_grpc/api_grpc/api1/admin.py +3 -0
  489. test_holado/tools/django/api_grpc/api_grpc/api1/apps.py +6 -0
  490. test_holado/tools/django/api_grpc/api_grpc/api1/migrations/__init__.py +0 -0
  491. test_holado/tools/django/api_grpc/api_grpc/api1/models.py +3 -0
  492. test_holado/tools/django/api_grpc/api_grpc/api1/proto/__init__.py +0 -0
  493. test_holado/tools/django/api_grpc/api_grpc/api1/proto/account.proto +27 -0
  494. test_holado/tools/django/api_grpc/api_grpc/api1/proto/account_pb2.py +33 -0
  495. test_holado/tools/django/api_grpc/api_grpc/api1/proto/account_pb2_grpc.py +199 -0
  496. test_holado/tools/django/api_grpc/api_grpc/api1/serializers.py +12 -0
  497. test_holado/tools/django/api_grpc/api_grpc/api1/services.py +11 -0
  498. test_holado/tools/django/api_grpc/api_grpc/api1/tests.py +3 -0
  499. test_holado/tools/django/api_grpc/api_grpc/api1/views.py +3 -0
  500. test_holado/tools/django/api_grpc/api_grpc/asgi.py +16 -0
  501. test_holado/tools/django/api_grpc/api_grpc/settings.py +126 -0
  502. test_holado/tools/django/api_grpc/api_grpc/urls.py +27 -0
  503. test_holado/tools/django/api_grpc/api_grpc/wsgi.py +16 -0
  504. test_holado/tools/django/api_grpc/db.sqlite3 +0 -0
  505. test_holado/tools/django/api_grpc/manage.py +27 -0
  506. test_holado/tools/django/api_grpc/manual_test_commands.txt +25 -0
  507. test_holado/tools/django/api_rest/api_rest/__init__.py +0 -0
  508. test_holado/tools/django/api_rest/api_rest/api1/__init__.py +0 -0
  509. test_holado/tools/django/api_rest/api_rest/api1/admin.py +3 -0
  510. test_holado/tools/django/api_rest/api_rest/api1/apps.py +6 -0
  511. test_holado/tools/django/api_rest/api_rest/api1/migrations/__init__.py +0 -0
  512. test_holado/tools/django/api_rest/api_rest/api1/models.py +3 -0
  513. test_holado/tools/django/api_rest/api_rest/api1/serializers.py +15 -0
  514. test_holado/tools/django/api_rest/api_rest/api1/tests.py +3 -0
  515. test_holado/tools/django/api_rest/api_rest/api1/views.py +24 -0
  516. test_holado/tools/django/api_rest/api_rest/asgi.py +16 -0
  517. test_holado/tools/django/api_rest/api_rest/settings.py +133 -0
  518. test_holado/tools/django/api_rest/api_rest/urls.py +32 -0
  519. test_holado/tools/django/api_rest/api_rest/wsgi.py +16 -0
  520. test_holado/tools/django/api_rest/db.sqlite3 +0 -0
  521. test_holado/tools/django/api_rest/manage.py +22 -0
  522. holado-0.2.2.dist-info/RECORD +0 -17
  523. {holado-0.2.2.dist-info → holado-0.2.4.dist-info}/WHEEL +0 -0
  524. {holado-0.2.2.dist-info → holado-0.2.4.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,29 @@
1
+ @testing_solution
2
+ @ValueTableManager
3
+ Feature: Features related to ValueTableManager
4
+
5
+ Scenario: Convert Name/Value Scenario table to json
6
+
7
+ ### PRECONDITIONS - BEGIN
8
+ Given begin preconditions
9
+
10
+ Given VAR = 'Variable value'
11
+ Given INPUT_TABLE = table with header
12
+ | Name | Value |
13
+ | 'test1' | 1 |
14
+ | 'test2' | 2.0 |
15
+ | 'test3' | 'test3' |
16
+ | 'test4' | None |
17
+ | 'test5[0]' | 'test5' |
18
+ | 'test6' | VAR |
19
+
20
+ Given end preconditions
21
+ ### PRECONDITIONS - END
22
+
23
+ When JSON = convert name/value table INPUT_TABLE to json
24
+
25
+ Given JSON_STR = convert object value JSON to string
26
+ Given STR = '{'test1': 1, 'test2': 2.0, 'test3': 'test3', 'test4': None, 'test5': ['test5'], 'test6': 'Variable value'}'
27
+ Then JSON_STR == STR
28
+
29
+
@@ -0,0 +1,88 @@
1
+ @testing_solution
2
+ @DateTime
3
+ Feature: Features related to DateTime
4
+
5
+ @datetime_now-to_string
6
+ Scenario: DateTime to String without format
7
+ Given DT_REF = datetime now
8
+ Given DT_REF_STR = convert datetime DT_REF to string
9
+
10
+ @datetime_now_in_utc_tai
11
+ Scenario: DateTime to String without format
12
+ Given DT_UTC = datetime now in UTC
13
+ Given DT_TAI = datetime now in TAI
14
+
15
+ Given DT_UTC_SEC = ${DT_UTC.timestamp()}
16
+ Given DT_TAI_SEC = ${DT_TAI.timestamp()}
17
+ Then ${${DT_UTC_SEC}+36} < DT_TAI_SEC
18
+ Then DT_TAI_SEC < ${${DT_UTC_SEC}+38}
19
+
20
+ @datetime-to_string
21
+ Scenario: DateTime to String without format
22
+ Given DT = datetime '2022/12/09T12:34:56.012345678'
23
+ Given DT_STR = convert datetime DT to string
24
+ Then DT_STR == '2022-12-09T12:34:56.012345'
25
+
26
+ Given DT = datetime '2022/12/09T12:34:56.012345678Z'
27
+ Given DT_STR = convert datetime DT to string
28
+ Then DT_STR == '2022-12-09T12:34:56.012345+00:00'
29
+
30
+ @datetime-to_string_with_format
31
+ Scenario: DateTime to String without format
32
+ Given DT = datetime '2022/12/09T12:34:56.012345678Z'
33
+
34
+ Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%SZ'
35
+ Then DT_STR == '2022-12-09T12:34:56Z'
36
+
37
+ Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
38
+ Then DT_STR == '2022-12-09T12:34:56.012345Z'
39
+
40
+ @datetime-delta
41
+ Scenario: Add delta to DateTime
42
+ Given DT_init = datetime '2022/12/09T12:34:56.012345678Z'
43
+
44
+ # Plus duration
45
+ Given DT = DT_init + 800 microseconds
46
+ Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
47
+ Then DT_STR == '2022-12-09T12:34:56.013145Z'
48
+
49
+ Given DT = DT_init + 9 milliseconds
50
+ Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
51
+ Then DT_STR == '2022-12-09T12:34:56.021345Z'
52
+
53
+ Given DT = DT_init + 10 seconds
54
+ Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
55
+ Then DT_STR == '2022-12-09T12:35:06.012345Z'
56
+
57
+ Given DT = DT_init + 30 minutes
58
+ Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
59
+ Then DT_STR == '2022-12-09T13:04:56.012345Z'
60
+
61
+ Given DT = DT_init + 12 hours
62
+ Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
63
+ Then DT_STR == '2022-12-10T00:34:56.012345Z'
64
+
65
+ Given DT = DT_init + 25 days
66
+ Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
67
+ Then DT_STR == '2023-01-03T12:34:56.012345Z'
68
+
69
+ Given DT = DT_init + 2 weeks
70
+ Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
71
+ Then DT_STR == '2022-12-23T12:34:56.012345Z'
72
+
73
+ Given DT = DT_init + 2 months
74
+ Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
75
+ Then DT_STR == '2023-02-09T12:34:56.012345Z'
76
+
77
+ Given DT = DT_init + 10 years
78
+ Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
79
+ Then DT_STR == '2032-12-09T12:34:56.012345Z'
80
+
81
+
82
+ # Minus duration
83
+ Given DT = DT_init - 70 seconds
84
+ Given DT_STR = convert datetime DT to string with format '%Y-%m-%dT%H:%M:%S.%fZ'
85
+ Then DT_STR == '2022-12-09T12:33:46.012345Z'
86
+
87
+
88
+
@@ -0,0 +1,43 @@
1
+ @testing_solution
2
+ @UniqueValueManager
3
+ Feature: Features related to UniqueValueManager
4
+
5
+ Scenario: unique integer
6
+
7
+ Given VAR1 = new unique integer
8
+ Given VAR2 = new unique integer
9
+
10
+ Then VAR1 != VAR2
11
+ Then VAR1 < VAR2
12
+
13
+ Scenario: unique HEX integer
14
+
15
+ Given VAR1 = new unique HEX integer
16
+ Given VAR2 = new unique HEX integer
17
+
18
+ Then VAR1 != VAR2
19
+
20
+ Scenario: unique HEX integer with padding
21
+
22
+ Given VAR1 = new unique HEX integer (length: 8)
23
+ Given VAR2 = new unique HEX integer (length: 8)
24
+
25
+ Then VAR1 != VAR2
26
+ Then VAR1 < VAR2
27
+
28
+ Scenario: unique string
29
+
30
+ Given VAR1 = new unique string
31
+ Given VAR2 = new unique string
32
+
33
+ Then VAR1 != VAR2
34
+ Then VAR1 < VAR2
35
+
36
+ Scenario: unique string with padding
37
+
38
+ Given VAR1 = new unique string (padding length: 20)
39
+ Given VAR2 = new unique string (padding length: 20)
40
+
41
+ Then VAR1 != VAR2
42
+ Then VAR1 < VAR2
43
+
@@ -0,0 +1,135 @@
1
+ @testing_solution
2
+ @ais
3
+ Feature: Test decode of AIS message from bitarry and its encode in NMEAv4
4
+
5
+ @bitarray_to_nmea_through_decode
6
+ Scenario Outline: from bitarray to NMEAv4 sentences through decode
7
+
8
+ When MSG = decode AIS message of type <type> from bitarray <msg_bitarray>
9
+ Then MSG.mmsi == <mmsi>
10
+
11
+ When MSG_NMEA_SENTENCES = encode AIS message MSG
12
+ | talker_id | radio_channel | seq_id | group_id |
13
+ | 'AIVDM' | <channel> | 0 | 0 |
14
+ Given EXPECTED_NMEA_SENTENCES = split text <msg_nmea> on separator '\n'
15
+ Then MSG_NMEA_SENTENCES == EXPECTED_NMEA_SENTENCES
16
+
17
+
18
+ Examples: each type
19
+ | type | mmsi | msg_bitarray | channel | msg_nmea |
20
+ | 1 | 230025450 | '0436D7A3A940000062ABFB241938839120EE000000' | 'A' | '!AIVDM,1,1,,A,13KG`rU0001RbwdT6CR3TB3f0000,0*4E' |
21
+ | 2 | 667001237 | '089F0686554000088CC9321A9949AE103BBA08EA0C' | 'A' | '!AIVDM,1,1,,A,29t6QUE000R<jC8JVDVf43fr2>`<,0*4A' |
22
+ | 3 | 273448320 | '0C4131F60140000A6047D0987C0890001F6C080000' | 'A' | '!AIVDM,1,1,,A,344iuP5000aPAu2HO0R@01ud2000,0*5C' |
23
+ | 4 | 2573110 | '10009D0CD87E31E3EE9C0C880208758701C00008CA' | 'A' | '!AIVDM,1,1,,A,402M3=Qv<N?fW0j80PQmQh7000S:,0*61' |
24
+ | 5 | 533006100 | '147F141C500236215393575340002D34204094C3153000000000000000340684C21C40000000000000000000000000000000000000' | 'B' | '\\g:1-2-0*6E\\!AIVDM,2,1,0,B,57tD7502=R5CTmMC@00e=210U<<E<0000000000l1`C27400000000000000,0*42\n\\g:2-2-0*6D\\!AIVDM,2,2,0,B,00000000000,2*27' |
25
+ | 6 | 235102035 | '18380D7D4E008DA6A2001D239B009875505C32000100020002020002890700004A31505C00' | 'A' | '!AIVDM,1,1,,A,63P=ODp0SJJR01lSVh2HME1L<P0100800P800`T7001:<E1L00,4*3E' |
26
+ | 7 | 276691000 | '1C41F7E0E000A8D450' | 'A' | '!AIVDM,1,1,,A,747op>00b=A@,0*6D' |
27
+ | 8 | 0 | '200000000019F8B31F1E352BB61C0AD6D5077A949880983BC1F03B18072E1C' | 'A' | '!AIVDM,1,1,,A,8000000Iv;<O7SDceQh:meD7NaBHP9PshO0s60Lf70,4*13' |
28
+ | 9 | 41541 | '24000289140AC00E5AAE160B1976774834021081F4' | 'B' | '!AIVDM,1,1,,B,9002RA@:h0qJcQH;6GIoB3@2487l,0*66' |
29
+ | 10 | 240685000 | '2839623F2039385A20' | 'B' | '!AIVDM,1,1,,B,:3UR?j0q>5`P,0*04' |
30
+ | 11 | 241213000 | '2C398279207E31F20D221B26B0056B1E13C0080000' | 'B' | '!AIVDM,1,1,,B,;3V2NB1v<O8=8QdVd0Ec7Q?02000,0*36' |
31
+ # In error due to a @ that is removed at decode step in last field that has a variable length
32
+ #| 12 | 400000011 | '325F5E102D71F6889E5C1387215387CF3CB280138480654C3206551600D006F5034010' | 'B' | '!AIVDM,1,1,,B,<UuN42miu`RNG1>78E>7kkjjP1>4P6E<<PIE5P3@1gD3@10,2*17' |
33
+ | 13 | 255805859 | '343CFD268C97A36DB0' | 'B' | '!AIVDM,1,1,,B,=3ku9`jG`nnh,0*49' |
34
+ # In error with difference on fill_bits number. After analyse, it seems normal to have for this raw a fill_bits=2, whereas expected fill_bits is 0 in following test case
35
+ #| 14 | 970012793 | '38E744E1E44C149481415350' | 'B' | '!AIVDM,1,1,,B,>>M4pNA<59B1@E=@,0*18' |
36
+ | 15 | 2442101 | '3C00950DD43A2F72605000' | 'B' | '!AIVDM,1,1,,B,?02E3M@r;o9PD00,2*6A' |
37
+ | 16 | 2444010 | '4000952BA83101A2A8320000' | 'B' | '!AIVDM,1,1,,B,@02E:rPi0J:`<P00,0*1F' |
38
+ | 17 | 4310302 | '450107147851F80A6F6026AC18B6100DFD68F86C' | 'B' | '!AIVDM,1,1,,B,A@4757QAv0agH2Jd6;H@3Om`v6h,2*7F' |
39
+ | 18 | 338318773 | '4850A956D40000DCC408A1BD095DE10FFEE5DE0006' | 'B' | '!AIVDM,1,1,,B,B52aEe@00=k42:6u2EoQ3wsUoP06,0*5A' |
40
+ | 19 | 58015575 | '4C0DD4FD5C0011229C15B8E4AE1200024F80C9EAC068A4E395B8C1BE72800000000001010620A0' | 'A' | '!AIVDM,1,1,,A,C0oDwEh04B:L5KSTcQ800Tv0jNc0J:CSUKS1gW:0000000411R2P,0*20' |
41
+ | 20 | 2276020 | '50008AEAD032C2EBB8' | 'A' | '!AIVDM,1,1,,A,D02:re0jhffp,0*0F' |
42
+ | 21 | 20 | '5400000050099B0059000000000000000000000000830044DE0DFBA01008208F8000' | 'A' | '!AIVDM,1,1,,A,E0000509Vh1I0000000000000000Ph14oPos`10888v000,4*1C' |
43
+ | 22 | 2241048 | '580088C860827828035070D5486A0E1AA902000000' | 'A' | '!AIVDM,1,1,,A,F028j622N2P3D73EB6`>6bT20000,0*04' |
44
+ | 23 | 992611270 | '5CECA82F1808A5CFAF410A81F161800000002C00' | 'A' | '!AIVDM,1,1,,A,G>j`;iP8aLvg@@b1tF600000;00,2*0D' |
45
+ | 24 | 235099648 | '60380D5801254D2507220E721D12F80000880C4040' | 'B' | '!AIVDM,1,1,,B,H3P=F04UCBD78Pqj7A;p00283410,0*14' |
46
+ | 25 | 338302778 | '6450A85CE8F045C2515543D12FEA81F3E76EE56193' | 'B' | '!AIVDM,1,1,,B,I52`G>ShAL9AED?A;vb1tvMfqF6C,0*36' |
47
+ | 26 | 7300010 | '6801BD8EA9F8C0D5E91E80C0645601000000080000' | 'B' | '!AIVDM,1,1,,B,J06uSbWph=Ga7`30I5H100002000,0*2A' |
48
+ | 27 | 244060910 | '6F3A304BBB0029BCF33407FC' | 'B' | '!AIVDM,1,1,,B,Kk`hBsd0:Kkk=0Ot,0*2F' |
49
+
50
+
51
+ @nmea_to_bitarray_through_decode
52
+ Scenario Outline: from NMEAv4 sentences to bitarray through decode
53
+
54
+ Given NMEA_SENTENCES = split text <msg_nmea> on separator '\n'
55
+ When MSG = decode AIS NMEA message NMEA_SENTENCES
56
+ Then MSG.mmsi == <mmsi>
57
+
58
+ When MSG_RAW = convert AIS message MSG to hexadecimal string
59
+ Then MSG_RAW == <msg_bitarray>
60
+
61
+
62
+ Examples: each type
63
+ | type | mmsi | msg_bitarray | msg_nmea |
64
+ | 1 | 230025450 | '0436D7A3A940000062ABFB241938839120EE000000' | '!AIVDM,1,1,,A,13KG`rU0001RbwdT6CR3TB3f0000,0*4E' |
65
+ | 2 | 667001237 | '089F0686554000088CC9321A9949AE103BBA08EA0C' | '!AIVDM,1,1,,A,29t6QUE000R<jC8JVDVf43fr2>`<,0*4A' |
66
+ | 3 | 273448320 | '0C4131F60140000A6047D0987C0890001F6C080000' | '!AIVDM,1,1,,A,344iuP5000aPAu2HO0R@01ud2000,0*5C' |
67
+ | 4 | 2573110 | '10009D0CD87E31E3EE9C0C880208758701C00008CA' | '!AIVDM,1,1,,A,402M3=Qv<N?fW0j80PQmQh7000S:,0*61' |
68
+ | 5 | 533006100 | '147F141C500236215393575340002D34204094C3153000000000000000340684C21C40000000000000000000000000000000000000' | '\\g:1-2-0*6E\\!AIVDM,2,1,0,B,57tD7502=R5CTmMC@00e=210U<<E<0000000000l1`C27400000000000000,0*42\n\\g:2-2-0*6D\\!AIVDM,2,2,0,B,00000000000,2*27' |
69
+ | 6 | 235102035 | '18380D7D4E008DA6A2001D239B009875505C32000100020002020002890700004A31505C00' | '!AIVDM,1,1,,A,63P=ODp0SJJR01lSVh2HME1L<P0100800P800`T7001:<E1L00,4*3E' |
70
+ | 7 | 276691000 | '1C41F7E0E000A8D450' | '!AIVDM,1,1,,A,747op>00b=A@,0*6D' |
71
+ | 8 | 0 | '200000000019F8B31F1E352BB61C0AD6D5077A949880983BC1F03B18072E1C' | '!AIVDM,1,1,,A,8000000Iv;<O7SDceQh:meD7NaBHP9PshO0s60Lf70,4*13' |
72
+ | 9 | 41541 | '24000289140AC00E5AAE160B1976774834021081F4' | '!AIVDM,1,1,,B,9002RA@:h0qJcQH;6GIoB3@2487l,0*66' |
73
+ | 10 | 240685000 | '2839623F2039385A20' | '!AIVDM,1,1,,B,:3UR?j0q>5`P,0*04' |
74
+ | 11 | 241213000 | '2C398279207E31F20D221B26B0056B1E13C0080000' | '!AIVDM,1,1,,B,;3V2NB1v<O8=8QdVd0Ec7Q?02000,0*36' |
75
+ # Next both are working, since decode is removing @ padding characters
76
+ | 12 | 400000011 | '325F5E102D71F6889E5C1387215387CF3CB280138480654C3206551600D006F5034010' | '!AIVDM,1,1,,B,<UuN42miu`RNG1>78E>7kkjjP1>4P6E<<PIE5P3@1gD3@10,2*17' |
77
+ | 12 | 400000011 | '325F5E102D71F6889E5C1387215387CF3CB280138480654C3206551600D006F5034010' | '!AIVDM,1,1,,B,<UuN42miu`RNG1>78E>7kkjjP1>4P6E<<PIE5P3@1gD3@1,0*25' |
78
+ | 13 | 255805859 | '343CFD268C97A36DB0' | '!AIVDM,1,1,,B,=3ku9`jG`nnh,0*49' |
79
+ | 14 | 970012793 | '38E744E1E44C149481415350' | '!AIVDM,1,1,,B,>>M4pNA<59B1@E=@,0*18' |
80
+ | 15 | 2442101 | '3C00950DD43A2F72605000' | '!AIVDM,1,1,,B,?02E3M@r;o9PD00,2*6A' |
81
+ | 16 | 2444010 | '4000952BA83101A2A8320000' | '!AIVDM,1,1,,B,@02E:rPi0J:`<P00,0*1F' |
82
+ | 17 | 4310302 | '450107147851F80A6F6026AC18B6100DFD68F86C' | '!AIVDM,1,1,,B,A@4757QAv0agH2Jd6;H@3Om`v6h,2*7F' |
83
+ | 18 | 338318773 | '4850A956D40000DCC408A1BD095DE10FFEE5DE0006' | '!AIVDM,1,1,,B,B52aEe@00=k42:6u2EoQ3wsUoP06,0*5A' |
84
+ | 19 | 58015575 | '4C0DD4FD5C0011229C15B8E4AE1200024F80C9EAC068A4E395B8C1BE72800000000001010620A0' | '!AIVDM,1,1,,A,C0oDwEh04B:L5KSTcQ800Tv0jNc0J:CSUKS1gW:0000000411R2P,0*20' |
85
+ | 20 | 2276020 | '50008AEAD032C2EBB8' | '!AIVDM,1,1,,A,D02:re0jhffp,0*0F' |
86
+ | 21 | 20 | '5400000050099B0059000000000000000000000000830044DE0DFBA01008208F8000' | '!AIVDM,1,1,,A,E0000509Vh1I0000000000000000Ph14oPos`10888v000,4*1C' |
87
+ | 22 | 2241048 | '580088C860827828035070D5486A0E1AA902000000' | '!AIVDM,1,1,,A,F028j622N2P3D73EB6`>6bT20000,0*04' |
88
+ | 23 | 992611270 | '5CECA82F1808A5CFAF410A81F161800000002C00' | '!AIVDM,1,1,,A,G>j`;iP8aLvg@@b1tF600000;00,2*0D' |
89
+ | 24 | 235099648 | '60380D5801254D2507220E721D12F80000880C4040' | '!AIVDM,1,1,,B,H3P=F04UCBD78Pqj7A;p00283410,0*14' |
90
+ | 25 | 338302778 | '6450A85CE8F045C2515543D12FEA81F3E76EE56193' | '!AIVDM,1,1,,B,I52`G>ShAL9AED?A;vb1tvMfqF6C,0*36' |
91
+ | 26 | 7300010 | '6801BD8EA9F8C0D5E91E80C0645601000000080000' | '!AIVDM,1,1,,B,J06uSbWph=Ga7`30I5H100002000,0*2A' |
92
+ | 27 | 244060910 | '6F3A304BBB0029BCF33407FC' | '!AIVDM,1,1,,B,Kk`hBsd0:Kkk=0Ot,0*2F' |
93
+
94
+ @bitarray_to_nmea_without_decode
95
+ Scenario Outline: from bitarray to NMEAv4 sentences without decode
96
+
97
+ When OBTAINED_NMEA_SENTENCES = encode AIS raw payload <msg_payload> to NMEA
98
+ | talker_id | radio_channel | seq_id | group_id |
99
+ | 'AIVDM' | <channel> | 0 | 0 |
100
+ Given EXPECTED_NMEA_SENTENCES = split text <msg_nmea> on separator '\n'
101
+ Then OBTAINED_NMEA_SENTENCES == EXPECTED_NMEA_SENTENCES
102
+
103
+
104
+ Examples: each type
105
+ | type | msg_payload | channel | msg_nmea |
106
+ | 1 | '0436D7A3A940000062ABFB241938839120EE000000' | 'A' | '!AIVDM,1,1,,A,13KG`rU0001RbwdT6CR3TB3f0000,0*4E' |
107
+ | 2 | '089F0686554000088CC9321A9949AE103BBA08EA0C' | 'A' | '!AIVDM,1,1,,A,29t6QUE000R<jC8JVDVf43fr2>`<,0*4A' |
108
+ | 3 | '0C4131F60140000A6047D0987C0890001F6C080000' | 'A' | '!AIVDM,1,1,,A,344iuP5000aPAu2HO0R@01ud2000,0*5C' |
109
+ | 4 | '10009D0CD87E31E3EE9C0C880208758701C00008CA' | 'A' | '!AIVDM,1,1,,A,402M3=Qv<N?fW0j80PQmQh7000S:,0*61' |
110
+ | 5 | '147F141C500236215393575340002D34204094C3153000000000000000340684C21C40000000000000000000000000000000000000' | 'B' | '\\g:1-2-0*6E\\!AIVDM,2,1,0,B,57tD7502=R5CTmMC@00e=210U<<E<0000000000l1`C27400000000000000,0*42\n\\g:2-2-0*6D\\!AIVDM,2,2,0,B,00000000000,2*27' |
111
+ | 6 | '18380D7D4E008DA6A2001D239B009875505C32000100020002020002890700004A31505C00' | 'A' | '!AIVDM,1,1,,A,63P=ODp0SJJR01lSVh2HME1L<P0100800P800`T7001:<E1L00,4*3E' |
112
+ | 7 | '1C41F7E0E000A8D450' | 'A' | '!AIVDM,1,1,,A,747op>00b=A@,0*6D' |
113
+ | 8 | '200000000019F8B31F1E352BB61C0AD6D5077A949880983BC1F03B18072E1C' | 'A' | '!AIVDM,1,1,,A,8000000Iv;<O7SDceQh:meD7NaBHP9PshO0s60Lf70,4*13' |
114
+ | 9 | '24000289140AC00E5AAE160B1976774834021081F4' | 'B' | '!AIVDM,1,1,,B,9002RA@:h0qJcQH;6GIoB3@2487l,0*66' |
115
+ | 10 | '2839623F2039385A20' | 'B' | '!AIVDM,1,1,,B,:3UR?j0q>5`P,0*04' |
116
+ | 11 | '2C398279207E31F20D221B26B0056B1E13C0080000' | 'B' | '!AIVDM,1,1,,B,;3V2NB1v<O8=8QdVd0Ec7Q?02000,0*36' |
117
+ | 12 | '325F5E102D71F6889E5C1387215387CF3CB280138480654C3206551600D006F5034010' | 'B' | '!AIVDM,1,1,,B,<UuN42miu`RNG1>78E>7kkjjP1>4P6E<<PIE5P3@1gD3@10,2*17' |
118
+ | 13 | '343CFD268C97A36DB0' | 'B' | '!AIVDM,1,1,,B,=3ku9`jG`nnh,0*49' |
119
+ | 14 | '38E744E1E44C149481415350' | 'B' | '!AIVDM,1,1,,B,>>M4pNA<59B1@E=@,0*18' |
120
+ | 15 | '3C00950DD43A2F72605000' | 'B' | '!AIVDM,1,1,,B,?02E3M@r;o9PD00,2*6A' |
121
+ | 16 | '4000952BA83101A2A8320000' | 'B' | '!AIVDM,1,1,,B,@02E:rPi0J:`<P00,0*1F' |
122
+ | 17 | '450107147851F80A6F6026AC18B6100DFD68F86C' | 'B' | '!AIVDM,1,1,,B,A@4757QAv0agH2Jd6;H@3Om`v6h,2*7F' |
123
+ | 18 | '4850A956D40000DCC408A1BD095DE10FFEE5DE0006' | 'B' | '!AIVDM,1,1,,B,B52aEe@00=k42:6u2EoQ3wsUoP06,0*5A' |
124
+ | 19 | '4C0DD4FD5C0011229C15B8E4AE1200024F80C9EAC068A4E395B8C1BE72800000000001010620A0' | 'A' | '!AIVDM,1,1,,A,C0oDwEh04B:L5KSTcQ800Tv0jNc0J:CSUKS1gW:0000000411R2P,0*20' |
125
+ | 20 | '50008AEAD032C2EBB8' | 'A' | '!AIVDM,1,1,,A,D02:re0jhffp,0*0F' |
126
+ | 21 | '5400000050099B0059000000000000000000000000830044DE0DFBA01008208F8000' | 'A' | '!AIVDM,1,1,,A,E0000509Vh1I0000000000000000Ph14oPos`10888v000,4*1C' |
127
+ | 22 | '580088C860827828035070D5486A0E1AA902000000' | 'A' | '!AIVDM,1,1,,A,F028j622N2P3D73EB6`>6bT20000,0*04' |
128
+ | 23 | '5CECA82F1808A5CFAF410A81F161800000002C00' | 'A' | '!AIVDM,1,1,,A,G>j`;iP8aLvg@@b1tF600000;00,2*0D' |
129
+ | 24 | '60380D5801254D2507220E721D12F80000880C4040' | 'B' | '!AIVDM,1,1,,B,H3P=F04UCBD78Pqj7A;p00283410,0*14' |
130
+ | 25 | '6450A85CE8F045C2515543D12FEA81F3E76EE56193' | 'B' | '!AIVDM,1,1,,B,I52`G>ShAL9AED?A;vb1tvMfqF6C,0*36' |
131
+ | 26 | '6801BD8EA9F8C0D5E91E80C0645601000000080000' | 'B' | '!AIVDM,1,1,,B,J06uSbWph=Ga7`30I5H100002000,0*2A' |
132
+ | 27 | '6F3A304BBB0029BCF33407FC' | 'B' | '!AIVDM,1,1,,B,Kk`hBsd0:Kkk=0Ot,0*2F' |
133
+
134
+
135
+
@@ -0,0 +1,291 @@
1
+ @testing_solution
2
+ @protobuf
3
+ @go_nogo
4
+ Feature: Test Protobuf module
5
+
6
+ Scenario: Tutorial example
7
+
8
+ ### PRECONDITIONS - BEGIN
9
+ Given begin preconditions
10
+
11
+
12
+ Given end preconditions
13
+ ### PRECONDITIONS - END
14
+
15
+ Given PROTO = new Protobuf object of type 'tutorial.AddressBook'
16
+ | Name | Value |
17
+ | 'people[0].id' | 0 |
18
+ | 'people[0].name' | 'name0' |
19
+ | 'people[0].email' | 'email0@test.com' |
20
+ | 'people[0].last_updated' | '2022-01-01T01:00:00Z' |
21
+ | 'people[0].phones[0].number' | '0623456789' |
22
+ | 'people[0].phones[0].type' | MOBILE |
23
+ #| 'people[0].phones[0].type' | 0 |
24
+ | 'people[0].phones[1].number' | '0123456789' |
25
+ #| 'people[0].phones[1].type' | HOME |
26
+ | 'people[0].phones[1].type' | 1 |
27
+ | 'people[1].id' | 1 |
28
+ | 'people[1].name' | 'name1' |
29
+ | 'people[1].email' | 'email1@test.com' |
30
+ | 'people[1].last_updated' | '2022-02-02 02:00:00' |
31
+ | 'people[1].phones[0].number' | '0523456789' |
32
+ | 'people[1].phones[0].type' | WORK |
33
+ #| 'people[1].phones[0].type' | 2 |
34
+
35
+ Given PROTO_STR = serialize Protobuf object PROTO
36
+
37
+ Given NEW_PROTO = unserialize string PROTO_STR as 'tutorial.AddressBook' Protobuf object
38
+
39
+
40
+ Scenario: Map field assigned by key name
41
+
42
+ ### PRECONDITIONS - BEGIN
43
+ Given begin preconditions
44
+
45
+
46
+ Given end preconditions
47
+ ### PRECONDITIONS - END
48
+
49
+ Given PROTO = new Protobuf object of type 'custom_types.MessageWithMap'
50
+ | Name | Value |
51
+ | 'id' | 0 |
52
+ | 'map[k1]' | 'v1' |
53
+
54
+ Given PROTO_STR = serialize Protobuf object PROTO
55
+
56
+ Given NEW_PROTO = unserialize string PROTO_STR as 'custom_types.MessageWithMap' Protobuf object
57
+
58
+ Given NEW_PROTO_TABLE = convert Protobuf object NEW_PROTO to name/value table with names uncollapsed
59
+ Then table NEW_PROTO_TABLE is
60
+ | Name | Value |
61
+ | 'id' | 0 |
62
+ | 'map[k1]' | 'v1' |
63
+
64
+ Scenario: Map field assigned by dict
65
+
66
+ ### PRECONDITIONS - BEGIN
67
+ Given begin preconditions
68
+
69
+
70
+ Given end preconditions
71
+ ### PRECONDITIONS - END
72
+
73
+ Given PROTO = new Protobuf object of type 'custom_types.MessageWithMap'
74
+ | Name | Value |
75
+ | 'id' | 0 |
76
+ | 'map' | {'k1':'v1'} |
77
+
78
+ Given PROTO_STR = serialize Protobuf object PROTO
79
+
80
+ Given NEW_PROTO = unserialize string PROTO_STR as 'custom_types.MessageWithMap' Protobuf object
81
+
82
+ Given NEW_PROTO_TABLE = convert Protobuf object NEW_PROTO to name/value table
83
+ Then table NEW_PROTO_TABLE is
84
+ | Name | Value |
85
+ | 'id' | 0 |
86
+ | 'map' | {'k1':'v1'} |
87
+
88
+
89
+ Scenario: Optional field when set
90
+ ### PRECONDITIONS - BEGIN
91
+ Given begin preconditions
92
+
93
+ Given PROTO = new Protobuf object of type 'custom_types.MessageWithOptional'
94
+ | Name | Value |
95
+ | 'id' | 0 |
96
+ | 'text' | 'toto' |
97
+ | 'optional_text' | 'pipo' |
98
+
99
+ Given end preconditions
100
+ ### PRECONDITIONS - END
101
+
102
+ Given PROTO_TABLE = convert Protobuf object PROTO to name/value table
103
+ Then table PROTO_TABLE is
104
+ | Name | Value |
105
+ | 'id' | 0 |
106
+ | 'text' | 'toto' |
107
+ | 'optional_text' | 'pipo' |
108
+
109
+ Given PROTO_STR = serialize Protobuf object PROTO
110
+
111
+ Given NEW_PROTO = unserialize string PROTO_STR as 'custom_types.MessageWithOptional' Protobuf object
112
+
113
+ Given NEW_PROTO_TABLE = convert Protobuf object NEW_PROTO to name/value table
114
+ Then NEW_PROTO_TABLE == PROTO_TABLE
115
+
116
+
117
+ Scenario: Optional field when not set
118
+ ### PRECONDITIONS - BEGIN
119
+ Given begin preconditions
120
+
121
+ Given PROTO = new Protobuf object of type 'custom_types.MessageWithOptional'
122
+ | Name | Value |
123
+ | 'id' | 0 |
124
+ | 'text' | 'toto' |
125
+
126
+ Given end preconditions
127
+ ### PRECONDITIONS - END
128
+
129
+ Given PROTO_TABLE = convert Protobuf object PROTO to name/value table
130
+ Then table PROTO_TABLE is
131
+ | Name | Value |
132
+ | 'id' | 0 |
133
+ | 'text' | 'toto' |
134
+
135
+ Given PROTO_STR = serialize Protobuf object PROTO
136
+
137
+ Given NEW_PROTO = unserialize string PROTO_STR as 'custom_types.MessageWithOptional' Protobuf object
138
+
139
+ Given NEW_PROTO_TABLE = convert Protobuf object NEW_PROTO to name/value table
140
+ Then NEW_PROTO_TABLE == PROTO_TABLE
141
+
142
+
143
+ Scenario: Normal field when not set
144
+ ### PRECONDITIONS - BEGIN
145
+ Given begin preconditions
146
+
147
+ Given PROTO = new Protobuf object of type 'custom_types.MessageWithOptional'
148
+ | Name | Value |
149
+ | 'id' | 0 |
150
+ | 'optional_text' | 'pipo' |
151
+
152
+ Given end preconditions
153
+ ### PRECONDITIONS - END
154
+
155
+ Given PROTO_TABLE = convert Protobuf object PROTO to name/value table
156
+ Then table PROTO_TABLE is
157
+ | Name | Value |
158
+ | 'id' | 0 |
159
+ | 'text' | '' |
160
+ | 'optional_text' | 'pipo' |
161
+
162
+ Given PROTO_STR = serialize Protobuf object PROTO
163
+
164
+ Given NEW_PROTO = unserialize string PROTO_STR as 'custom_types.MessageWithOptional' Protobuf object
165
+
166
+ Given NEW_PROTO_TABLE = convert Protobuf object NEW_PROTO to name/value table
167
+ Then NEW_PROTO_TABLE == PROTO_TABLE
168
+
169
+ @repeated_assigned_by_list
170
+ Scenario: Repeated field assigned by list
171
+
172
+ ### PRECONDITIONS - BEGIN
173
+ Given begin preconditions
174
+
175
+
176
+ Given end preconditions
177
+ ### PRECONDITIONS - END
178
+
179
+ Given PROTO = new Protobuf object of type 'custom_types.MessageWithRepeated'
180
+ | Name | Value |
181
+ | 'id' | 0 |
182
+ | 'values' | [1, 2, 3] |
183
+
184
+ Given PROTO_STR = serialize Protobuf object PROTO
185
+
186
+ Given NEW_PROTO = unserialize string PROTO_STR as 'custom_types.MessageWithRepeated' Protobuf object
187
+
188
+ Given NEW_PROTO_TABLE = convert Protobuf object NEW_PROTO to name/value table
189
+ Then table NEW_PROTO_TABLE is
190
+ | Name | Value |
191
+ | 'id' | 0 |
192
+ | 'values' | [1, 2, 3] |
193
+
194
+
195
+ @enum_field
196
+ Scenario: Enum field
197
+ ### PRECONDITIONS - BEGIN
198
+ Given begin preconditions
199
+
200
+ Given PROTO = new Protobuf object of type 'tutorial.AddressBook'
201
+ | Name | Value |
202
+ | 'people[0].id' | 0 |
203
+ | 'people[0].name' | 'name0' |
204
+ | 'people[0].email' | 'email0@test.com' |
205
+ | 'people[0].last_updated' | '2022-01-01T01:00:00Z' |
206
+ | 'people[0].phones[0].number' | '0623456789' |
207
+ | 'people[0].phones[0].type' | MOBILE |
208
+ #| 'people[0].phones[0].type' | 0 |
209
+ | 'people[0].phones[1].number' | '0123456789' |
210
+ #| 'people[0].phones[1].type' | HOME |
211
+ | 'people[0].phones[1].type' | 1 |
212
+ | 'people[0].phones[2].number' | '0923456789' |
213
+ | 'people[0].phones[2].type' | WORK |
214
+ #| 'people[0].phones[2].type' | 2 |
215
+
216
+ Given end preconditions
217
+ ### PRECONDITIONS - END
218
+
219
+ # Get enum value
220
+ Given MOBILE_VALUE = value of Protobuf enum 'tutorial.Person.PhoneType.MOBILE'
221
+ Then MOBILE_VALUE == 0
222
+ Given HOME_VALUE = value of Protobuf enum 'tutorial.Person.PhoneType.HOME'
223
+ Then HOME_VALUE == 1
224
+ Given WORK_VALUE = value of Protobuf enum 'tutorial.Person.PhoneType.WORK'
225
+ Then WORK_VALUE == 2
226
+
227
+ # Verify enum value in a Protobuf message
228
+ Then PROTO.people[0].phones[0].type == MOBILE_VALUE
229
+ Then PROTO.people[0].phones[1].type == HOME_VALUE
230
+ Then PROTO.people[0].phones[2].type == WORK_VALUE
231
+
232
+ # Verify enum name by its value
233
+ Given PHONE_TYPE_NAME = name of value MOBILE_VALUE of Protobuf enum type 'tutorial.Person.PhoneType'
234
+ Then PHONE_TYPE_NAME == 'MOBILE'
235
+
236
+ # Verify message by convertion as a table
237
+ Given PROTO_TABLE = convert Protobuf object PROTO to name/value table with names and repeated uncollapsed
238
+ Then table PROTO_TABLE is
239
+ | Name | Value |
240
+ | 'people[0].name' | 'name0' |
241
+ | 'people[0].id' | 0 |
242
+ | 'people[0].email' | 'email0@test.com' |
243
+ | 'people[0].phones[0].number' | '0623456789' |
244
+ | 'people[0].phones[0].type' | MOBILE |
245
+ | 'people[0].phones[1].number' | '0123456789' |
246
+ | 'people[0].phones[1].type' | HOME |
247
+ | 'people[0].phones[2].number' | '0923456789' |
248
+ | 'people[0].phones[2].type' | WORK |
249
+ | 'people[0].last_updated.seconds' | 1640998800 |
250
+ | 'people[0].last_updated.nanos' | 0 |
251
+
252
+
253
+ @import_enum
254
+ Scenario: Import enum
255
+ Given import Protobuf enum type 'tutorial.Person.PhoneType'
256
+ Then PhoneType.MOBILE == 0
257
+ Then PhoneType.HOME == 1
258
+ Then PhoneType.WORK == 2
259
+ Then tutorial.Person.PhoneType.MOBILE == 0
260
+ Then tutorial.Person.PhoneType.HOME == 1
261
+ Then tutorial.Person.PhoneType.WORK == 2
262
+
263
+ Given import values of Protobuf enum type 'tutorial.Person.PhoneType'
264
+ Then MOBILE == 0
265
+ Then HOME == 1
266
+ Then WORK == 2
267
+
268
+ Given import values of Protobuf enum type 'tutorial.Person.PhoneType' with prefix 'PHONE_TYPE_'
269
+ Then PHONE_TYPE_MOBILE == 0
270
+ Then PHONE_TYPE_HOME == 1
271
+ Then PHONE_TYPE_WORK == 2
272
+
273
+ # Use imports in other sentences
274
+ Given VALUE = -1
275
+ Given if ${PHONE_TYPE_MOBILE} == 0:
276
+ Given VALUE = 0
277
+ Given end if
278
+ Then VALUE == 0
279
+
280
+ Given if ${PhoneType.HOME} == 1:
281
+ Given VALUE = 1
282
+ Given end if
283
+ Then VALUE == 1
284
+
285
+ Given if 2 == ${PhoneType.WORK}:
286
+ Given VALUE = 2
287
+ Given end if
288
+ Then VALUE == 2
289
+
290
+
291
+
@@ -0,0 +1,20 @@
1
+ @testing_solution
2
+ @python
3
+ Feature: Test python convert steps
4
+
5
+ @list_to_hexa
6
+ Scenario: Convert list to hexa strings
7
+
8
+ ### PRECONDITIONS - BEGIN
9
+ Given begin preconditions
10
+
11
+ Given LIST_STR = ['v1', 'v2']
12
+ Given LIST_HEX_EXPECTED = ['7631', '7632']
13
+
14
+ Given end preconditions
15
+ ### PRECONDITIONS - END
16
+
17
+ Given LIST_HEX = convert list LIST_STR of strings to list of hexadecimal strings
18
+ Then LIST_HEX == LIST_HEX_EXPECTED
19
+
20
+