@openui5/sap.ui.core 1.120.3 → 1.120.4

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.
Files changed (418) hide show
  1. package/package.json +1 -1
  2. package/src/jquery.sap.global.js +1 -1
  3. package/src/jquery.sap.properties.js +1 -1
  4. package/src/jquery.sap.resources.js +1 -1
  5. package/src/jquery.sap.script.js +1 -1
  6. package/src/jquery.sap.storage.js +3 -3
  7. package/src/sap/base/Event.js +1 -1
  8. package/src/sap/base/Eventing.js +1 -1
  9. package/src/sap/base/config.js +1 -1
  10. package/src/sap/base/i18n/LanguageTag.js +1 -1
  11. package/src/sap/base/i18n/Localization.js +2 -1
  12. package/src/sap/base/i18n/ResourceBundle.js +16 -19
  13. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  14. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  15. package/src/sap/base/util/restricted/_castArray.js +1 -1
  16. package/src/sap/base/util/restricted/_compact.js +1 -1
  17. package/src/sap/base/util/restricted/_curry.js +1 -1
  18. package/src/sap/base/util/restricted/_debounce.js +1 -1
  19. package/src/sap/base/util/restricted/_difference.js +1 -1
  20. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  21. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  25. package/src/sap/base/util/restricted/_flatten.js +1 -1
  26. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  27. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  28. package/src/sap/base/util/restricted/_intersection.js +1 -1
  29. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  30. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  31. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  32. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isNil.js +1 -1
  34. package/src/sap/base/util/restricted/_max.js +1 -1
  35. package/src/sap/base/util/restricted/_merge.js +1 -1
  36. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  37. package/src/sap/base/util/restricted/_min.js +1 -1
  38. package/src/sap/base/util/restricted/_omit.js +1 -1
  39. package/src/sap/base/util/restricted/_pick.js +1 -1
  40. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  41. package/src/sap/base/util/restricted/_throttle.js +1 -1
  42. package/src/sap/base/util/restricted/_toArray.js +1 -1
  43. package/src/sap/base/util/restricted/_union.js +1 -1
  44. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  45. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  46. package/src/sap/base/util/restricted/_uniq.js +1 -1
  47. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  48. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  49. package/src/sap/base/util/restricted/_without.js +1 -1
  50. package/src/sap/base/util/restricted/_xor.js +1 -1
  51. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  52. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  53. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  54. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  55. package/src/sap/ui/Device.js +3 -3
  56. package/src/sap/ui/Global.js +4 -4
  57. package/src/sap/ui/base/Event.js +1 -1
  58. package/src/sap/ui/base/EventProvider.js +1 -1
  59. package/src/sap/ui/base/Interface.js +1 -1
  60. package/src/sap/ui/base/ManagedObject.js +1 -1
  61. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  62. package/src/sap/ui/base/Metadata.js +1 -1
  63. package/src/sap/ui/base/Object.js +1 -1
  64. package/src/sap/ui/base/ObjectPool.js +1 -1
  65. package/src/sap/ui/core/.library +2 -2
  66. package/src/sap/ui/core/BusyIndicator.js +1 -1
  67. package/src/sap/ui/core/Component.js +1 -1
  68. package/src/sap/ui/core/ComponentContainer.js +1 -1
  69. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  70. package/src/sap/ui/core/ComponentSupport.js +1 -1
  71. package/src/sap/ui/core/Configuration.js +2 -2
  72. package/src/sap/ui/core/Control.js +1 -1
  73. package/src/sap/ui/core/Core.js +1 -1
  74. package/src/sap/ui/core/CustomData.js +1 -1
  75. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  76. package/src/sap/ui/core/Element.js +1 -1
  77. package/src/sap/ui/core/ElementMetadata.js +1 -1
  78. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  79. package/src/sap/ui/core/EventBus.js +1 -1
  80. package/src/sap/ui/core/Fragment.js +1 -1
  81. package/src/sap/ui/core/HTML.js +1 -1
  82. package/src/sap/ui/core/History.js +1 -1
  83. package/src/sap/ui/core/Icon.js +1 -1
  84. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  85. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  86. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  87. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  88. package/src/sap/ui/core/InvisibleText.js +1 -1
  89. package/src/sap/ui/core/Item.js +1 -1
  90. package/src/sap/ui/core/LabelEnablement.js +1 -1
  91. package/src/sap/ui/core/LayoutData.js +1 -1
  92. package/src/sap/ui/core/ListItem.js +1 -1
  93. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  94. package/src/sap/ui/core/Locale.js +1 -1
  95. package/src/sap/ui/core/LocaleData.js +2 -2
  96. package/src/sap/ui/core/Manifest.js +1 -1
  97. package/src/sap/ui/core/Message.js +1 -1
  98. package/src/sap/ui/core/RenderManager.js +1 -1
  99. package/src/sap/ui/core/Renderer.js +1 -1
  100. package/src/sap/ui/core/ResizeHandler.js +1 -1
  101. package/src/sap/ui/core/ScrollBar.js +1 -1
  102. package/src/sap/ui/core/SeparatorItem.js +1 -1
  103. package/src/sap/ui/core/Title.js +1 -1
  104. package/src/sap/ui/core/TooltipBase.js +1 -1
  105. package/src/sap/ui/core/UIArea.js +1 -1
  106. package/src/sap/ui/core/UIComponent.js +1 -1
  107. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  108. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  109. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  110. package/src/sap/ui/core/XMLComposite.js +1 -1
  111. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  112. package/src/sap/ui/core/cldr/ar.json +1 -0
  113. package/src/sap/ui/core/cldr/ar_EG.json +1 -0
  114. package/src/sap/ui/core/cldr/ar_SA.json +1 -0
  115. package/src/sap/ui/core/cldr/bg.json +1 -0
  116. package/src/sap/ui/core/cldr/ca.json +1 -0
  117. package/src/sap/ui/core/cldr/cnr.json +6169 -0
  118. package/src/sap/ui/core/cldr/cs.json +1 -0
  119. package/src/sap/ui/core/cldr/cy.json +1 -0
  120. package/src/sap/ui/core/cldr/da.json +1 -0
  121. package/src/sap/ui/core/cldr/de.json +1 -0
  122. package/src/sap/ui/core/cldr/de_AT.json +1 -0
  123. package/src/sap/ui/core/cldr/de_CH.json +1 -0
  124. package/src/sap/ui/core/cldr/el.json +1 -0
  125. package/src/sap/ui/core/cldr/el_CY.json +1 -0
  126. package/src/sap/ui/core/cldr/en.json +1 -0
  127. package/src/sap/ui/core/cldr/en_AU.json +1 -0
  128. package/src/sap/ui/core/cldr/en_GB.json +1 -0
  129. package/src/sap/ui/core/cldr/en_HK.json +1 -0
  130. package/src/sap/ui/core/cldr/en_IE.json +1 -0
  131. package/src/sap/ui/core/cldr/en_IN.json +1 -0
  132. package/src/sap/ui/core/cldr/en_NZ.json +1 -0
  133. package/src/sap/ui/core/cldr/en_PG.json +1 -0
  134. package/src/sap/ui/core/cldr/en_SG.json +1 -0
  135. package/src/sap/ui/core/cldr/en_ZA.json +1 -0
  136. package/src/sap/ui/core/cldr/es.json +1 -0
  137. package/src/sap/ui/core/cldr/es_AR.json +1 -0
  138. package/src/sap/ui/core/cldr/es_BO.json +1 -0
  139. package/src/sap/ui/core/cldr/es_CL.json +1 -0
  140. package/src/sap/ui/core/cldr/es_CO.json +1 -0
  141. package/src/sap/ui/core/cldr/es_MX.json +1 -0
  142. package/src/sap/ui/core/cldr/es_PE.json +1 -0
  143. package/src/sap/ui/core/cldr/es_UY.json +1 -0
  144. package/src/sap/ui/core/cldr/es_VE.json +1 -0
  145. package/src/sap/ui/core/cldr/et.json +1 -0
  146. package/src/sap/ui/core/cldr/fa.json +2 -0
  147. package/src/sap/ui/core/cldr/fi.json +1 -0
  148. package/src/sap/ui/core/cldr/fr.json +1 -0
  149. package/src/sap/ui/core/cldr/fr_BE.json +1 -0
  150. package/src/sap/ui/core/cldr/fr_CA.json +1 -0
  151. package/src/sap/ui/core/cldr/fr_CH.json +1 -0
  152. package/src/sap/ui/core/cldr/fr_LU.json +1 -0
  153. package/src/sap/ui/core/cldr/he.json +2 -0
  154. package/src/sap/ui/core/cldr/hi.json +1 -0
  155. package/src/sap/ui/core/cldr/hr.json +1 -0
  156. package/src/sap/ui/core/cldr/hu.json +1 -0
  157. package/src/sap/ui/core/cldr/id.json +1 -0
  158. package/src/sap/ui/core/cldr/it.json +1 -0
  159. package/src/sap/ui/core/cldr/it_CH.json +1 -0
  160. package/src/sap/ui/core/cldr/ja.json +1 -0
  161. package/src/sap/ui/core/cldr/kk.json +1 -0
  162. package/src/sap/ui/core/cldr/ko.json +1 -0
  163. package/src/sap/ui/core/cldr/lt.json +1 -0
  164. package/src/sap/ui/core/cldr/lv.json +1 -0
  165. package/src/sap/ui/core/cldr/mk.json +6045 -0
  166. package/src/sap/ui/core/cldr/ms.json +1 -0
  167. package/src/sap/ui/core/cldr/nb.json +2 -0
  168. package/src/sap/ui/core/cldr/nl.json +1 -0
  169. package/src/sap/ui/core/cldr/nl_BE.json +1 -0
  170. package/src/sap/ui/core/cldr/pl.json +1 -0
  171. package/src/sap/ui/core/cldr/pt.json +1 -0
  172. package/src/sap/ui/core/cldr/pt_PT.json +1 -0
  173. package/src/sap/ui/core/cldr/ro.json +1 -0
  174. package/src/sap/ui/core/cldr/ru.json +1 -0
  175. package/src/sap/ui/core/cldr/ru_UA.json +1 -0
  176. package/src/sap/ui/core/cldr/sk.json +1 -0
  177. package/src/sap/ui/core/cldr/sl.json +1 -0
  178. package/src/sap/ui/core/cldr/sr.json +1 -0
  179. package/src/sap/ui/core/cldr/sr_Latn.json +1 -0
  180. package/src/sap/ui/core/cldr/sv.json +1 -0
  181. package/src/sap/ui/core/cldr/th.json +1 -0
  182. package/src/sap/ui/core/cldr/tr.json +1 -0
  183. package/src/sap/ui/core/cldr/uk.json +1 -0
  184. package/src/sap/ui/core/cldr/vi.json +1 -0
  185. package/src/sap/ui/core/cldr/zh_CN.json +1 -0
  186. package/src/sap/ui/core/cldr/zh_HK.json +2 -0
  187. package/src/sap/ui/core/cldr/zh_SG.json +2 -0
  188. package/src/sap/ui/core/cldr/zh_TW.json +21 -20
  189. package/src/sap/ui/core/date/UI5Date.js +1 -1
  190. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  191. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  192. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  193. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  194. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  195. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  196. package/src/sap/ui/core/format/FileSizeFormat.js +1 -1
  197. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  198. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  199. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  200. package/src/sap/ui/core/library.js +3 -3
  201. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  202. package/src/sap/ui/core/message/Message.js +1 -1
  203. package/src/sap/ui/core/message/MessageManager.js +1 -1
  204. package/src/sap/ui/core/message/MessageParser.js +1 -1
  205. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  206. package/src/sap/ui/core/messagebundle_it.properties +2 -2
  207. package/src/sap/ui/core/messagebundle_ja.properties +2 -2
  208. package/src/sap/ui/core/messagebundle_mk.properties +2 -2
  209. package/src/sap/ui/core/messagebundle_sh.properties +67 -67
  210. package/src/sap/ui/core/messagebundle_sk.properties +1 -1
  211. package/src/sap/ui/core/messagebundle_sr.properties +352 -0
  212. package/src/sap/ui/core/messagebundle_uk.properties +2 -2
  213. package/src/sap/ui/core/messagebundle_vi.properties +2 -2
  214. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  215. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  216. package/src/sap/ui/core/mvc/JSView.js +1 -1
  217. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  218. package/src/sap/ui/core/mvc/View.js +1 -1
  219. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  220. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  221. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  222. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  223. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  224. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  225. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  226. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  227. package/src/sap/ui/core/service/Service.js +1 -1
  228. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  229. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  230. package/src/sap/ui/core/support/Plugin.js +1 -1
  231. package/src/sap/ui/core/support/Support.js +1 -1
  232. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  233. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  234. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  235. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  236. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  237. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  238. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  239. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  240. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  241. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  242. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  243. package/src/sap/ui/core/tmpl/Template.js +1 -1
  244. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  245. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  246. package/src/sap/ui/core/util/Export.js +1 -1
  247. package/src/sap/ui/core/util/ExportCell.js +1 -1
  248. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  249. package/src/sap/ui/core/util/ExportRow.js +1 -1
  250. package/src/sap/ui/core/util/ExportType.js +1 -1
  251. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  252. package/src/sap/ui/core/util/File.js +1 -1
  253. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  254. package/src/sap/ui/core/util/MockServer.js +1 -1
  255. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  256. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  257. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  258. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  259. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  260. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  261. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  262. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  263. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  264. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  265. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  266. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  267. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  268. package/src/sap/ui/debug/ControlTree.js +1 -1
  269. package/src/sap/ui/debug/DebugEnv.js +1 -1
  270. package/src/sap/ui/debug/PropertyList.js +1 -1
  271. package/src/sap/ui/model/ClientModel.js +1 -1
  272. package/src/sap/ui/model/CompositeDataState.js +1 -1
  273. package/src/sap/ui/model/CompositeType.js +1 -1
  274. package/src/sap/ui/model/DataState.js +1 -1
  275. package/src/sap/ui/model/MetaModel.js +1 -1
  276. package/src/sap/ui/model/Model.js +1 -1
  277. package/src/sap/ui/model/SelectionModel.js +1 -1
  278. package/src/sap/ui/model/SimpleType.js +1 -1
  279. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  280. package/src/sap/ui/model/Type.js +1 -1
  281. package/src/sap/ui/model/analytics/AnalyticalBinding.js +61 -20
  282. package/src/sap/ui/model/json/JSONModel.js +1 -1
  283. package/src/sap/ui/model/message/MessageModel.js +1 -1
  284. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  285. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  286. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  287. package/src/sap/ui/model/odata/ODataMetadata.js +28 -14
  288. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  289. package/src/sap/ui/model/odata/ODataUtils.js +12 -11
  290. package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +1 -1
  291. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  292. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  293. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  294. package/src/sap/ui/model/odata/type/Date.js +1 -1
  295. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  296. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  297. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  298. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  299. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  300. package/src/sap/ui/model/odata/type/Double.js +1 -1
  301. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  302. package/src/sap/ui/model/odata/type/Int.js +1 -1
  303. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  304. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  305. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  306. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  307. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  308. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  309. package/src/sap/ui/model/odata/type/Single.js +1 -1
  310. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  311. package/src/sap/ui/model/odata/type/String.js +1 -1
  312. package/src/sap/ui/model/odata/type/Time.js +1 -1
  313. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  314. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  315. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  316. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  317. package/src/sap/ui/model/odata/v2/ODataModel.js +1 -1
  318. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  319. package/src/sap/ui/model/odata/v4/Context.js +4 -2
  320. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
  321. package/src/sap/ui/model/odata/v4/ODataListBinding.js +1 -1
  322. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +31 -10
  323. package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
  324. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  325. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +15 -3
  326. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +8 -0
  327. package/src/sap/ui/model/odata/v4/lib/_Cache.js +19 -0
  328. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  329. package/src/sap/ui/model/type/Boolean.js +1 -1
  330. package/src/sap/ui/model/type/Currency.js +1 -1
  331. package/src/sap/ui/model/type/Date.js +1 -1
  332. package/src/sap/ui/model/type/DateInterval.js +1 -1
  333. package/src/sap/ui/model/type/DateTime.js +1 -1
  334. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  335. package/src/sap/ui/model/type/FileSize.js +1 -1
  336. package/src/sap/ui/model/type/Float.js +1 -1
  337. package/src/sap/ui/model/type/Integer.js +1 -1
  338. package/src/sap/ui/model/type/String.js +1 -1
  339. package/src/sap/ui/model/type/Time.js +1 -1
  340. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  341. package/src/sap/ui/model/type/Unit.js +1 -1
  342. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  343. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  344. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  345. package/src/sap/ui/test/generic/TestBase.js +1 -1
  346. package/src/sap/ui/util/Storage.js +1 -1
  347. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/ui5.yaml +1 -1
  348. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
  349. package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
  350. package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
  351. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
  352. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
  353. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
  354. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
  355. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
  356. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
  357. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
  358. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
  359. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
  360. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
  361. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
  362. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
  363. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
  364. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
  365. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
  366. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
  367. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
  368. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
  369. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
  370. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
  371. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
  372. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
  373. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
  374. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
  375. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
  376. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
  377. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
  378. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
  379. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
  380. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
  381. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
  382. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
  383. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
  384. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
  385. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
  386. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
  387. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
  388. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
  389. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
  390. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
  391. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
  392. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
  393. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
  394. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
  395. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
  396. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
  397. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
  398. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
  399. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
  400. package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +217 -6
  401. package/test/sap/ui/core/qunit/analytics/o4aMetadata.js +2 -0
  402. package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +1 -1
  403. package/test/sap/ui/core/qunit/base/i18n/Localization.qunit.js +34 -1
  404. package/test/sap/ui/core/qunit/base/i18n/ResourceBundle.qunit.js +51 -4
  405. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +42 -116
  406. package/test/sap/ui/core/qunit/model/FAR_CUSTOMER_LINE_ITEMS.metadata.xml +2 -0
  407. package/test/sap/ui/core/qunit/odata/ODataMetadataNoFakeService.qunit.js +154 -0
  408. package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +10 -2
  409. package/test/sap/ui/core/qunit/odata/_ODataMetaModelUtils.qunit.js +4 -4
  410. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +265 -0
  411. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +26 -2
  412. package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +50 -15
  413. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +237 -12
  414. package/test/sap/ui/core/qunit/odata/v4/data/metadata_special_cases.xml +27 -0
  415. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +41 -7
  416. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +25 -0
  417. package/test/sap/ui/core/qunit/types/FileSizeFormat.qunit.js +19 -1
  418. package/test/sap/ui/core/relnotes/changes-1.120.json +31 -0
@@ -13,6 +13,12 @@ sap.ui.define([
13
13
  ], function(timezones, Log, Localization, LoaderExtensions, CalendarType, Configuration, Locale,
14
14
  LocaleData, CalendarWeekNumbering, TimezoneUtil) {
15
15
  "use strict";
16
+ const aSupportedLanguages = ["ar", "ar_EG", "ar_SA", "bg", "ca", "cnr", "cs", "cy", "da", "de", "de_AT", "de_CH",
17
+ "el", "el_CY", "en", "en_AU", "en_GB", "en_HK", "en_IE", "en_IN", "en_NZ", "en_PG", "en_SG", "en_ZA", "es",
18
+ "es_AR", "es_BO", "es_CL", "es_CO", "es_MX", "es_PE", "es_UY", "es_VE", "et", "fa", "fi", "fr", "fr_BE",
19
+ "fr_CA", "fr_CH", "fr_LU", "he", "hi", "hr", "hu", "id", "it", "it_CH", "ja", "kk", "ko", "lt", "lv", "mk",
20
+ "ms", "nb", "nl", "nl_BE", "pl", "pt", "pt_PT", "ro", "ru", "ru_UA", "sk", "sl", "sr", "sr_Latn", "sv", "th",
21
+ "tr", "uk", "vi", "zh_CN", "zh_HK", "zh_SG", "zh_TW"];
16
22
 
17
23
  QUnit.module("Locale Data Loading", {
18
24
  beforeEach: function(assert) {
@@ -25,6 +31,11 @@ sap.ui.define([
25
31
  }
26
32
  });
27
33
 
34
+ //*********************************************************************************************
35
+ QUnit.test("Supported languages", function(assert) {
36
+ assert.deepEqual(LocaleData._cldrLocales.slice().sort(), aSupportedLanguages.slice().sort());
37
+ });
38
+
28
39
  QUnit.test("LocaleData caching of data", function(assert) {
29
40
  LocaleData.getInstance(new Locale("en_US"));
30
41
  // Get Instance again to test cache
@@ -77,10 +88,8 @@ sap.ui.define([
77
88
  assert.equal(oLocaleData.sCLDRLocaleId, "en");
78
89
  });
79
90
 
80
- var aLanguages = LocaleData._cldrLocales.slice();
81
- aLanguages.push("sh");
82
91
 
83
- aLanguages.forEach(function(sLanguage) {
92
+ aSupportedLanguages.forEach(function(sLanguage) {
84
93
  QUnit.test("getCurrentLanguageName '" + sLanguage + "'", function(assert) {
85
94
  var oLocaleData = new LocaleData(new Locale(sLanguage));
86
95
  var oLanguagesObject = oLocaleData.getLanguages();
@@ -88,120 +97,37 @@ sap.ui.define([
88
97
  assert.ok(oLocaleData.getCurrentLanguageName(), "Current language is present for locale: '" + sLanguage + "'");
89
98
  });
90
99
  });
91
-
92
- QUnit.test("getCurrentLanguageName specific sh", function(assert) {
93
- var oLocale = new Locale("sh"),
94
- oLocaleData = new LocaleData(oLocale);
95
- var oLanguagesObject = oLocaleData.getLanguages();
96
- assert.ok(Object.keys(oLanguagesObject).length > 0, "languages are present for locale: sh");
97
- assert.equal(oLocaleData.getCurrentLanguageName(), "srpskohrvatski", "current language is present for locale: sh");
98
- });
99
-
100
- QUnit.test("getCurrentLanguageName specific sr-Latn", function(assert) {
101
- var oLocale = new Locale("sr-Latn"),
102
- oLocaleData = new LocaleData(oLocale);
103
- var oLanguagesObject = oLocaleData.getLanguages();
104
- assert.ok(Object.keys(oLanguagesObject).length > 0, "languages are present for locale: sr-Latn");
105
- assert.equal(oLocaleData.getCurrentLanguageName(), "srpskohrvatski", "current language is present for locale: sr-Latn");
106
- });
107
-
108
- QUnit.test("getCurrentLanguageName specific sr", function(assert) {
109
- var oLocale = new Locale("sr"),
110
- oLocaleData = new LocaleData(oLocale);
111
- var oLanguagesObject = oLocaleData.getLanguages();
112
- assert.ok(Object.keys(oLanguagesObject).length > 0, "languages are present for locale: sr");
113
- assert.equal(oLocaleData.getCurrentLanguageName(), "српски", "current language is present for locale: sr");
114
- });
115
-
116
- QUnit.test("getCurrentLanguageName specific iw", function(assert) {
117
- var oLocale = new Locale("iw"),
118
- oLocaleData = new LocaleData(oLocale);
119
- var oLanguagesObject = oLocaleData.getLanguages();
120
- assert.ok(Object.keys(oLanguagesObject).length > 0, "languages are present for locale: iw");
121
- assert.equal(oLocaleData.getCurrentLanguageName(), "עברית", "current language is present for locale: iw");
122
- });
123
-
124
- QUnit.test("getCurrentLanguageName specific he", function(assert) {
125
- var oLocale = new Locale("he"),
126
- oLocaleData = new LocaleData(oLocale);
127
- var oLanguagesObject = oLocaleData.getLanguages();
128
- assert.ok(Object.keys(oLanguagesObject).length > 0, "languages are present for locale: he");
129
- assert.equal(oLocaleData.getCurrentLanguageName(), "עברית", "current language is present for locale: he");
130
- });
131
-
132
- QUnit.test("getCurrentLanguageName specific iw-x-sapufmt", function(assert) {
133
- var oLocale = new Locale("iw-x-sapufmt"),
134
- oLocaleData = new LocaleData(oLocale);
135
- var oLanguagesObject = oLocaleData.getLanguages();
136
- assert.ok(Object.keys(oLanguagesObject).length > 0, "languages are present for locale: iw-x-sapufmt");
137
- assert.equal(oLocaleData.getCurrentLanguageName(), "עברית", "current language is present for locale: iw-x-sapufmt");
138
- });
139
-
140
- QUnit.test("getCurrentLanguageName specific he-x-sapufmt", function(assert) {
141
- var oLocale = new Locale("he-x-sapufmt"),
142
- oLocaleData = new LocaleData(oLocale);
143
- var oLanguagesObject = oLocaleData.getLanguages();
144
- assert.ok(Object.keys(oLanguagesObject).length > 0, "languages are present for locale: he-x-sapufmt");
145
- assert.equal(oLocaleData.getCurrentLanguageName(), "עברית", "current language is present for locale: he-x-sapufmt");
146
- });
147
-
100
+ [
101
+ {sLocale: "cnr", sName: "crnogorski"},
102
+ {sLocale: "cnr_ME", sName: "crnogorski (Crna Gora)"},
103
+ {sLocale: "he", sName: "עברית"},
104
+ {sLocale: "iw", sName: "עברית"},
105
+ {sLocale: "mk", sName: "македонски"},
106
+ {sLocale: "mk_MK", sName: "македонски (Северна Македонија)"},
107
+ {sLocale: "sh", sName: "srpskohrvatski"},
108
+ {sLocale: "sr-Latn", sName: "srpskohrvatski"},
109
+ {sLocale: "sr_Latn_RS", sName: "srpskohrvatski (Srbija)"},
110
+ {sLocale: "sr", sName: "српски"},
111
+ {sLocale: "sr_RS", sName: "српски (Србија)"},
112
+ {sLocale: "sr_Cyrl", sName: "српски (ћирилица)"},
113
+ {sLocale: "sr_Cyrl_RS", sName: "српски (ћирилица)"},
114
+ {sLocale: "de-x-sapufmt", sName: "Deutsch"},
115
+ {sLocale: "en-GB-x-sapufmt", sName: "British English"},
116
+ {sLocale: "he-x-sapufmt", sName: "עברית"},
117
+ {sLocale: "iw-x-sapufmt", sName: "עברית"},
118
+ {sLocale: "sr-Cyrl-x-sapufmt", sName: "српски (ћирилица)"},
119
+ {sLocale: "sr-Latn-x-sapufmt", sName: "srpskohrvatski"},
120
+ {sLocale: "zh-Hant-x-sapufmt", sName: "繁體中文"},
148
121
  // neither ji nor yi is present as CLDR data (en.json is used then)
149
- QUnit.test("getCurrentLanguageName specific ji", function(assert) {
150
- var oLocale = new Locale("ji"),
151
- oLocaleData = new LocaleData(oLocale);
152
- var oLanguagesObject = oLocaleData.getLanguages();
153
- assert.ok(Object.keys(oLanguagesObject).length > 0, "languages are present for locale: ji");
154
- assert.equal(oLocaleData.getCurrentLanguageName(), "Yiddish", "current language is present for locale: ji");
155
- });
156
-
157
- QUnit.test("getCurrentLanguageName specific yi", function(assert) {
158
- var oLocale = new Locale("yi"),
159
- oLocaleData = new LocaleData(oLocale);
160
- var oLanguagesObject = oLocaleData.getLanguages();
161
- assert.ok(Object.keys(oLanguagesObject).length > 0, "languages are present for locale: yi");
162
- assert.equal(oLocaleData.getCurrentLanguageName(), "Yiddish", "current language is present for locale: yi");
163
- });
164
-
165
- QUnit.test("getCurrentLanguageName specific de-x-sapufmt", function(assert) {
166
- var oLocale = new Locale("de-x-sapufmt"),
167
- oLocaleData = new LocaleData(oLocale);
168
- var oLanguagesObject = oLocaleData.getLanguages();
169
- assert.ok(Object.keys(oLanguagesObject).length > 0, "languages are present for locale: de-x-sapufmt");
170
- assert.equal(oLocaleData.getCurrentLanguageName(), "Deutsch", "current language is present for locale: de-x-sapufmt");
171
- });
172
-
173
- QUnit.test("getCurrentLanguageName specific en-GB-x-sapufmt", function(assert) {
174
- var oLocale = new Locale("en-GB-x-sapufmt"),
175
- oLocaleData = new LocaleData(oLocale);
176
- var oLanguagesObject = oLocaleData.getLanguages();
177
- assert.ok(Object.keys(oLanguagesObject).length > 0, "languages are present for locale: en-GB-x-sapufmt");
178
- assert.equal(oLocaleData.getCurrentLanguageName(), "British English", "current language is present for locale: en-GB-x-sapufmt");
179
- });
180
-
181
- QUnit.test("getCurrentLanguageName specific zh-Hant-x-sapufmt", function(assert) {
182
- var oLocale = new Locale("zh-Hant-x-sapufmt"),
183
- oLocaleData = new LocaleData(oLocale);
184
- var oLanguagesObject = oLocaleData.getLanguages();
185
- assert.ok(Object.keys(oLanguagesObject).length > 0, "languages are present for locale: zh-Hant-x-sapufmt");
186
- assert.equal(oLocaleData.getCurrentLanguageName(), "繁體中文", "current language is present for locale: zh-Hant-x-sapufmt");
187
- });
188
-
189
- QUnit.test("getCurrentLanguageName specific sr-Latn-x-sapufmt", function(assert) {
190
- var oLocale = new Locale("sr-Latn-x-sapufmt"),
191
- oLocaleData = new LocaleData(oLocale);
192
- var oLanguagesObject = oLocaleData.getLanguages();
193
- assert.ok(Object.keys(oLanguagesObject).length > 0, "languages are present for locale: sr-Latn-x-sapufmt");
194
- assert.equal(oLocaleData.getCurrentLanguageName(), "srpskohrvatski", "current language is present for locale: sr-Latn-x-sapufmt");
195
- });
196
-
197
- QUnit.test("getCurrentLanguageName specific sr-Cyrl-x-sapufmt", function(assert) {
198
- var oLocale = new Locale("sr-Cyrl-x-sapufmt"),
199
- oLocaleData = new LocaleData(oLocale);
200
- var oLanguagesObject = oLocaleData.getLanguages();
201
- assert.ok(Object.keys(oLanguagesObject).length > 0, "languages are present for locale: sr-Cyrl-x-sapufmt");
202
- assert.strictEqual(oLocaleData.getCurrentLanguageName(), "српски (ћирилица)",
203
- "used derived script name for locale sr-Cyrl-x-sapufmt");
122
+ {sLocale: "ji", sName: "Yiddish"},
123
+ {sLocale: "yi", sName: "Yiddish"}
124
+ ].forEach((oFixture) => {
125
+ QUnit.test("getCurrentLanguageName specific " + oFixture.sLocale, function(assert) {
126
+ const oLocaleData = new LocaleData(new Locale(oFixture.sLocale));
127
+ assert.ok(Object.keys(oLocaleData.getLanguages()).length > 0, "languages are present");
128
+ assert.equal(oLocaleData.getCurrentLanguageName(), oFixture.sName, "current language is present");
204
129
  });
130
+ });
205
131
 
206
132
  QUnit.test("getCurrentLanguageName: calls getLanguageName", function(assert) {
207
133
  const oLocaleData = {
@@ -749,7 +675,7 @@ sap.ui.define([
749
675
  "Etc/Zulu"
750
676
  ];
751
677
 
752
- aLanguages.forEach(function (sLocale) {
678
+ aSupportedLanguages.forEach(function (sLocale) {
753
679
  QUnit.test("getTimezoneTranslations for " + sLocale + " and ensure bijective mapping", function(assert) {
754
680
  var oLocaleData = new LocaleData(new Locale(sLocale));
755
681
  var mTimezoneTranslations = oLocaleData.getTimezoneTranslations();
@@ -22,6 +22,8 @@
22
22
  <Property Name="Customer" Type="Edm.String" MaxLength="10" sap:aggregation-role="dimension" sap:display-format="UpperCase" sap:text="CustomerName" sap:label="Customer" sap:creatable="false" sap:updatable="false" sap:value-list="standard"/>
23
23
  <Property Name="CustomerName" Type="Edm.String" MaxLength="80" sap:unicode="false" sap:label="Customer Name" sap:creatable="false" sap:updatable="false" />
24
24
  <Property Name="GeneratedID" Type="Edm.String" Nullable="false" sap:aggregation-role="dimension" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
25
+ <!-- property of type Edm.Time for grouping SNOW: CS20230006325114 -->
26
+ <Property Name="CreationTime" Type="Edm.Time" Nullable="false" sap:aggregation-role="dimension" sap:creatable="false" sap:updatable="false"/>
25
27
  <!-- property with sap:value-list but no value list provided in separate load -->
26
28
  <Property Name="Invalid" Type="Edm.String" sap:value-list="standard"/>
27
29
  <!-- property with ComplexType having a sap:value-list annotated property -->
@@ -650,4 +650,158 @@ sap.ui.define([
650
650
 
651
651
  return pMetadataLoaded;
652
652
  });
653
+
654
+ //*********************************************************************************************
655
+ QUnit.test("_getPropertyMetadata: no entity type given", function (assert) {
656
+ // code under test
657
+ assert.strictEqual(ODataMetadata.prototype._getPropertyMetadata.call(/*not relevant*/null), undefined);
658
+ });
659
+
660
+ //*********************************************************************************************
661
+ QUnit.test("_getPropertyMetadata: unknown type property", function (assert) {
662
+ // code under test
663
+ assert.strictEqual(
664
+ ODataMetadata.prototype._getPropertyMetadata.call(/*not relevant*/null, /*oEntityType*/{}, "~property"),
665
+ undefined);
666
+ });
667
+
668
+ //*********************************************************************************************
669
+ ["/~property" , "~property", "~property/", "/~property/"].forEach(function (sPath) {
670
+ QUnit.test("_getPropertyMetadata: known type property, sPath=" + sPath, function (assert) {
671
+ var oPropertyMetadata = {name: "~property", type: "Edm.String"},
672
+ oEntityType = {
673
+ property: [{name: "foo", type: "bar"}, oPropertyMetadata]
674
+ },
675
+ oResult;
676
+
677
+ // code under test
678
+ oResult = ODataMetadata.prototype._getPropertyMetadata.call(/*not relevant*/null, oEntityType, sPath);
679
+
680
+ assert.strictEqual(oResult, oPropertyMetadata);
681
+ assert.deepEqual(oResult, {name: "~property", type: "Edm.String"});
682
+ });
683
+ });
684
+
685
+ //*********************************************************************************************
686
+ QUnit.test("_getPropertyMetadata: entity type property addressed via navigation properties", function (assert) {
687
+ var oMetadata = {
688
+ _getEntityTypeByNavProperty() {},
689
+ _getPropertyMetadata() {}
690
+ },
691
+ oMetadataMock = this.mock(oMetadata),
692
+ oEntityType = {property: []};
693
+
694
+ oMetadataMock.expects("_getEntityTypeByNavProperty").withExactArgs(sinon.match.same(oEntityType), "~nav0")
695
+ .returns("~entityType0");
696
+ oMetadataMock.expects("_getEntityTypeByNavProperty").withExactArgs("~entityType0", "~nav1")
697
+ .returns("~entityType1");
698
+ oMetadataMock.expects("_getPropertyMetadata").withExactArgs("~entityType1", "~property")
699
+ .returns("~oPropertyMetadata");
700
+
701
+ // code under test
702
+ assert.strictEqual(
703
+ ODataMetadata.prototype._getPropertyMetadata.call(oMetadata, oEntityType, "~nav0/~nav1/~property"),
704
+ "~oPropertyMetadata");
705
+ });
706
+
707
+ //*********************************************************************************************
708
+ QUnit.test("_getPropertyMetadata: first part is not a complex type, nav. property or property", function (assert) {
709
+ var oMetadata = {
710
+ _getEntityTypeByNavProperty() {}
711
+ },
712
+ oMetadataMock = this.mock(oMetadata),
713
+ oEntityType = {property: []};
714
+
715
+ oMetadataMock.expects("_getEntityTypeByNavProperty").withExactArgs(sinon.match.same(oEntityType), "~nav0")
716
+ .returns(undefined);
717
+
718
+ // code under test
719
+ assert.strictEqual(
720
+ ODataMetadata.prototype._getPropertyMetadata.call(oMetadata, oEntityType, "~nav0/~property"),
721
+ undefined);
722
+ });
723
+
724
+ //*********************************************************************************************
725
+ QUnit.test("_getPropertyMetadata: path segment may be a complex type", function (assert) {
726
+ var oMetadata = {
727
+ _getEntityTypeByNavProperty() {},
728
+ _getPropertyMetadata() {}
729
+ },
730
+ oMetadataMock = this.mock(oMetadata),
731
+ oEntityType = {property: []};
732
+
733
+ oMetadataMock.expects("_getEntityTypeByNavProperty").withExactArgs(sinon.match.same(oEntityType), "~nav0")
734
+ .returns("~entityType0");
735
+ oMetadataMock.expects("_getEntityTypeByNavProperty").withExactArgs("~entityType0", "~maybeComplex")
736
+ .returns(undefined);
737
+ oMetadataMock.expects("_getPropertyMetadata").withExactArgs("~entityType0", "~maybeComplex/~property")
738
+ .returns("~recursiveCallResult");
739
+
740
+ // code under test
741
+ assert.strictEqual(
742
+ ODataMetadata.prototype._getPropertyMetadata.call(oMetadata, oEntityType, "~nav0/~maybeComplex/~property"),
743
+ "~recursiveCallResult");
744
+ });
745
+
746
+ //*********************************************************************************************
747
+ QUnit.test("_getPropertyMetadata: complex type property", function (assert) {
748
+ var oMetadata = {
749
+ _getObjectMetadata() {},
750
+ _getPropertyMetadata() {},
751
+ _splitName() {}
752
+ },
753
+ oEntityType = {property: [{name: "~complex", type: "~complexType"}]};
754
+
755
+ this.mock(oMetadata).expects("_splitName").withExactArgs("~complexType")
756
+ .returns({name: "~complexTypeName", namespace: "~namespace"});
757
+ this.mock(oMetadata).expects("_getObjectMetadata")
758
+ .withExactArgs("complexType", "~complexTypeName", "~namespace")
759
+ .returns("~oComplexEntityType");
760
+ this.mock(oMetadata).expects("_getPropertyMetadata").withExactArgs("~oComplexEntityType", "~property")
761
+ .returns("~oComplexTypePropertyMetadata");
762
+
763
+ // code under test
764
+ assert.strictEqual(
765
+ ODataMetadata.prototype._getPropertyMetadata.call(oMetadata, oEntityType, "~complex/~property"),
766
+ "~oComplexTypePropertyMetadata");
767
+ });
768
+
769
+ //*********************************************************************************************
770
+ QUnit.test("_getPropertyMetadata: complex type property addressed via navigation properties", function (assert) {
771
+ var oMetadata = {
772
+ _getEntityTypeByNavProperty() {},
773
+ _getPropertyMetadata() {}
774
+ },
775
+ oMetadataMock = this.mock(oMetadata),
776
+ oEntityType = {property: []};
777
+
778
+ oMetadataMock.expects("_getEntityTypeByNavProperty").withExactArgs(sinon.match.same(oEntityType), "~nav0")
779
+ .returns("~entityType0");
780
+ oMetadataMock.expects("_getEntityTypeByNavProperty").withExactArgs("~entityType0", "~nav1")
781
+ .returns("~entityType1");
782
+ oMetadataMock.expects("_getEntityTypeByNavProperty").withExactArgs("~entityType1", "~complex")
783
+ .returns(undefined);
784
+ oMetadataMock.expects("_getPropertyMetadata").withExactArgs("~entityType1", "~complex/~property")
785
+ .returns("~oComplexTypePropertyMetadata");
786
+
787
+ // code under test
788
+ assert.strictEqual(
789
+ ODataMetadata.prototype._getPropertyMetadata.call(oMetadata, oEntityType, "~nav0/~nav1/~complex/~property"),
790
+ "~oComplexTypePropertyMetadata");
791
+ });
792
+
793
+ //*********************************************************************************************
794
+ QUnit.test("_getPropertyMetadata: with metadata path", function (assert) {
795
+ var oPropertyMetadata = {name: "~property", type: "Edm.String"},
796
+ oEntityType = {
797
+ property: [oPropertyMetadata]
798
+ },
799
+ oResult;
800
+
801
+ // code under test
802
+ oResult = ODataMetadata.prototype._getPropertyMetadata.call({}, oEntityType, "~property/@sap:label");
803
+
804
+ assert.strictEqual(oResult, oPropertyMetadata);
805
+ assert.deepEqual(oResult, {name: "~property", type: "Edm.String"});
806
+ });
653
807
  });
@@ -804,13 +804,21 @@ sap.ui.define([
804
804
  //*********************************************************************************************
805
805
  QUnit.test("_getReadRange with placeholder", function (assert) {
806
806
  const oPlaceholder = {placeholder : true};
807
- const aElements = [oPlaceholder, oPlaceholder, {}, {}, {}, oPlaceholder, oPlaceholder,
808
- oPlaceholder, oPlaceholder];
807
+ let aElements = [oPlaceholder, oPlaceholder, {}, {}, {}, oPlaceholder, oPlaceholder,
808
+ oPlaceholder];
809
809
 
810
810
  assert.deepEqual(
811
811
  // code under test
812
812
  ODataUtils._getReadRange(aElements, 2, 3, 4, (oElement) => oElement.placeholder),
813
813
  {start : 0, length : 9}
814
814
  );
815
+
816
+ aElements = [oPlaceholder, oPlaceholder, {}, {}, {}];
817
+
818
+ assert.deepEqual(
819
+ // code under test - do not call callback with undefined
820
+ ODataUtils._getReadRange(aElements, 2, 3, 4, (oElement) => oElement.placeholder),
821
+ {start : 0, length : 9}
822
+ );
815
823
  });
816
824
  });
@@ -837,8 +837,8 @@ sap.ui.define([
837
837
  oUtilsMock = this.mock(Utils);
838
838
 
839
839
  // Associations, ComplexTypes and EntityType of Schema0
840
- oLift0 = oUtilsMock.expects("liftSAPData").withExactArgs(sinon.match.same(oSchema0),
841
- ignoreAnnotationsFromMetadata);
840
+ oLift0 = oUtilsMock.expects("liftSAPData")
841
+ .withExactArgs(sinon.match.same(oSchema0), undefined, ignoreAnnotationsFromMetadata);
842
842
  oVisitAssociation0 = oUtilsMock.expects("visitParents")
843
843
  .withExactArgs(sinon.match.same(oSchema0), sinon.match.same(oAnnotations),
844
844
  "association", sinon.match.func);
@@ -849,8 +849,8 @@ sap.ui.define([
849
849
  .withExactArgs(sinon.match.same(oSchema0), sinon.match.same(oAnnotations),
850
850
  "entityType", sinon.match.same(Utils.visitEntityType), undefined, ignoreAnnotationsFromMetadata);
851
851
  // Associations, ComplexTypes and EntityType of Schema1
852
- oLift1 = oUtilsMock.expects("liftSAPData").withExactArgs(sinon.match.same(oSchema1),
853
- ignoreAnnotationsFromMetadata);
852
+ oLift1 = oUtilsMock.expects("liftSAPData")
853
+ .withExactArgs(sinon.match.same(oSchema1), undefined, ignoreAnnotationsFromMetadata);
854
854
  oVisitAssociation1 = oUtilsMock.expects("visitParents")
855
855
  .withExactArgs(sinon.match.same(oSchema1), sinon.match.same(oAnnotations),
856
856
  "association", sinon.match.func);