@vived/core 1.4.2 → 1.4.3

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 (378) hide show
  1. package/README.md +118 -20
  2. package/dist/cjs/AppObject/AppObject.js +53 -0
  3. package/dist/cjs/AppObject/AppObject.js.map +1 -1
  4. package/dist/cjs/AppObject/AppObjectComponent.js +78 -0
  5. package/dist/cjs/AppObject/AppObjectComponent.js.map +1 -1
  6. package/dist/cjs/AppObject/AppObjectController.js +22 -0
  7. package/dist/cjs/AppObject/AppObjectController.js.map +1 -1
  8. package/dist/cjs/AppObject/AppObjectEntity.js +52 -0
  9. package/dist/cjs/AppObject/AppObjectEntity.js.map +1 -1
  10. package/dist/cjs/AppObject/AppObjectEntityRepo.js +75 -1
  11. package/dist/cjs/AppObject/AppObjectEntityRepo.js.map +1 -1
  12. package/dist/cjs/AppObject/AppObjectPM.js +46 -0
  13. package/dist/cjs/AppObject/AppObjectPM.js.map +1 -1
  14. package/dist/cjs/AppObject/AppObjectRepo.js +20 -0
  15. package/dist/cjs/AppObject/AppObjectRepo.js.map +1 -1
  16. package/dist/cjs/AppObject/AppObjectUC.js +23 -0
  17. package/dist/cjs/AppObject/AppObjectUC.js.map +1 -1
  18. package/dist/cjs/AppObject/AppObjectView.js +22 -0
  19. package/dist/cjs/AppObject/AppObjectView.js.map +1 -1
  20. package/dist/cjs/AppObject/getSingletonComponent.js +19 -0
  21. package/dist/cjs/AppObject/getSingletonComponent.js.map +1 -1
  22. package/dist/cjs/Entities/MemoizedAngle.js +21 -0
  23. package/dist/cjs/Entities/MemoizedAngle.js.map +1 -1
  24. package/dist/cjs/Entities/MemoizedBoolean.js +21 -0
  25. package/dist/cjs/Entities/MemoizedBoolean.js.map +1 -1
  26. package/dist/cjs/Entities/MemoizedColor.js +21 -0
  27. package/dist/cjs/Entities/MemoizedColor.js.map +1 -1
  28. package/dist/cjs/Entities/MemoizedNumber.js +21 -0
  29. package/dist/cjs/Entities/MemoizedNumber.js.map +1 -1
  30. package/dist/cjs/Entities/MemoizedQuaternion.js +21 -0
  31. package/dist/cjs/Entities/MemoizedQuaternion.js.map +1 -1
  32. package/dist/cjs/Entities/MemoizedString.js +21 -0
  33. package/dist/cjs/Entities/MemoizedString.js.map +1 -1
  34. package/dist/cjs/Entities/MemoizedVector2.js +21 -0
  35. package/dist/cjs/Entities/MemoizedVector2.js.map +1 -1
  36. package/dist/cjs/Entities/MemoizedVector3.js +21 -0
  37. package/dist/cjs/Entities/MemoizedVector3.js.map +1 -1
  38. package/dist/cjs/Entities/ObservableEntity.js +17 -0
  39. package/dist/cjs/Entities/ObservableEntity.js.map +1 -1
  40. package/dist/cjs/Entities/ObserverList.js +21 -0
  41. package/dist/cjs/Entities/ObserverList.js.map +1 -1
  42. package/dist/cjs/Entities/RangedNumber.js +29 -0
  43. package/dist/cjs/Entities/RangedNumber.js.map +1 -1
  44. package/dist/cjs/Types/PmAdapter.js.map +1 -1
  45. package/dist/cjs/Types/SingletonPmAdapter.js.map +1 -1
  46. package/dist/cjs/ValueObjects/Angle.js +1 -1
  47. package/dist/cjs/ValueObjects/Angle.js.map +1 -1
  48. package/dist/cjs/ValueObjects/LineSegment2D.js +6 -6
  49. package/dist/cjs/ValueObjects/LineSegment2D.js.map +1 -1
  50. package/dist/cjs/ValueObjects/Matrix.js +6 -6
  51. package/dist/cjs/ValueObjects/Matrix.js.map +1 -1
  52. package/dist/cjs/ValueObjects/Quaternion.js +17 -17
  53. package/dist/cjs/ValueObjects/Quaternion.js.map +1 -1
  54. package/dist/cjs/ValueObjects/Vector2.js +15 -8
  55. package/dist/cjs/ValueObjects/Vector2.js.map +1 -1
  56. package/dist/esm/AppObject/AppObject.js +53 -0
  57. package/dist/esm/AppObject/AppObject.js.map +1 -1
  58. package/dist/esm/AppObject/AppObjectComponent.js +78 -0
  59. package/dist/esm/AppObject/AppObjectComponent.js.map +1 -1
  60. package/dist/esm/AppObject/AppObjectController.js +22 -0
  61. package/dist/esm/AppObject/AppObjectController.js.map +1 -1
  62. package/dist/esm/AppObject/AppObjectEntity.js +52 -0
  63. package/dist/esm/AppObject/AppObjectEntity.js.map +1 -1
  64. package/dist/esm/AppObject/AppObjectEntityRepo.js +75 -1
  65. package/dist/esm/AppObject/AppObjectEntityRepo.js.map +1 -1
  66. package/dist/esm/AppObject/AppObjectPM.js +46 -0
  67. package/dist/esm/AppObject/AppObjectPM.js.map +1 -1
  68. package/dist/esm/AppObject/AppObjectRepo.js +20 -0
  69. package/dist/esm/AppObject/AppObjectRepo.js.map +1 -1
  70. package/dist/esm/AppObject/AppObjectUC.js +24 -1
  71. package/dist/esm/AppObject/AppObjectUC.js.map +1 -1
  72. package/dist/esm/AppObject/AppObjectView.js +23 -1
  73. package/dist/esm/AppObject/AppObjectView.js.map +1 -1
  74. package/dist/esm/AppObject/getSingletonComponent.js +19 -0
  75. package/dist/esm/AppObject/getSingletonComponent.js.map +1 -1
  76. package/dist/esm/Entities/MemoizedAngle.js +21 -0
  77. package/dist/esm/Entities/MemoizedAngle.js.map +1 -1
  78. package/dist/esm/Entities/MemoizedBoolean.js +21 -0
  79. package/dist/esm/Entities/MemoizedBoolean.js.map +1 -1
  80. package/dist/esm/Entities/MemoizedColor.js +21 -0
  81. package/dist/esm/Entities/MemoizedColor.js.map +1 -1
  82. package/dist/esm/Entities/MemoizedNumber.js +21 -0
  83. package/dist/esm/Entities/MemoizedNumber.js.map +1 -1
  84. package/dist/esm/Entities/MemoizedQuaternion.js +21 -0
  85. package/dist/esm/Entities/MemoizedQuaternion.js.map +1 -1
  86. package/dist/esm/Entities/MemoizedString.js +21 -0
  87. package/dist/esm/Entities/MemoizedString.js.map +1 -1
  88. package/dist/esm/Entities/MemoizedVector2.js +21 -0
  89. package/dist/esm/Entities/MemoizedVector2.js.map +1 -1
  90. package/dist/esm/Entities/MemoizedVector3.js +21 -0
  91. package/dist/esm/Entities/MemoizedVector3.js.map +1 -1
  92. package/dist/esm/Entities/ObservableEntity.js +17 -0
  93. package/dist/esm/Entities/ObservableEntity.js.map +1 -1
  94. package/dist/esm/Entities/ObserverList.js +21 -0
  95. package/dist/esm/Entities/ObserverList.js.map +1 -1
  96. package/dist/esm/Entities/RangedNumber.js +29 -0
  97. package/dist/esm/Entities/RangedNumber.js.map +1 -1
  98. package/dist/esm/Types/PmAdapter.js.map +1 -1
  99. package/dist/esm/Types/SingletonPmAdapter.js.map +1 -1
  100. package/dist/esm/ValueObjects/Angle.js +1 -1
  101. package/dist/esm/ValueObjects/Angle.js.map +1 -1
  102. package/dist/esm/ValueObjects/LineSegment2D.js +6 -6
  103. package/dist/esm/ValueObjects/LineSegment2D.js.map +1 -1
  104. package/dist/esm/ValueObjects/Matrix.js +6 -6
  105. package/dist/esm/ValueObjects/Matrix.js.map +1 -1
  106. package/dist/esm/ValueObjects/Quaternion.js +17 -17
  107. package/dist/esm/ValueObjects/Quaternion.js.map +1 -1
  108. package/dist/esm/ValueObjects/Vector2.js +15 -8
  109. package/dist/esm/ValueObjects/Vector2.js.map +1 -1
  110. package/dist/types/AppObject/AppObject.d.ts +42 -0
  111. package/dist/types/AppObject/AppObject.d.ts.map +1 -1
  112. package/dist/types/AppObject/AppObjectComponent.d.ts +80 -0
  113. package/dist/types/AppObject/AppObjectComponent.d.ts.map +1 -1
  114. package/dist/types/AppObject/AppObjectController.d.ts +22 -0
  115. package/dist/types/AppObject/AppObjectController.d.ts.map +1 -1
  116. package/dist/types/AppObject/AppObjectEntity.d.ts +55 -0
  117. package/dist/types/AppObject/AppObjectEntity.d.ts.map +1 -1
  118. package/dist/types/AppObject/AppObjectEntityRepo.d.ts +75 -0
  119. package/dist/types/AppObject/AppObjectEntityRepo.d.ts.map +1 -1
  120. package/dist/types/AppObject/AppObjectPM.d.ts +53 -0
  121. package/dist/types/AppObject/AppObjectPM.d.ts.map +1 -1
  122. package/dist/types/AppObject/AppObjectRepo.d.ts +124 -0
  123. package/dist/types/AppObject/AppObjectRepo.d.ts.map +1 -1
  124. package/dist/types/AppObject/AppObjectUC.d.ts +23 -0
  125. package/dist/types/AppObject/AppObjectUC.d.ts.map +1 -1
  126. package/dist/types/AppObject/AppObjectView.d.ts +22 -0
  127. package/dist/types/AppObject/AppObjectView.d.ts.map +1 -1
  128. package/dist/types/AppObject/getSingletonComponent.d.ts +19 -0
  129. package/dist/types/AppObject/getSingletonComponent.d.ts.map +1 -1
  130. package/dist/types/Entities/MemoizedAngle.d.ts +21 -0
  131. package/dist/types/Entities/MemoizedAngle.d.ts.map +1 -1
  132. package/dist/types/Entities/MemoizedBoolean.d.ts +21 -0
  133. package/dist/types/Entities/MemoizedBoolean.d.ts.map +1 -1
  134. package/dist/types/Entities/MemoizedColor.d.ts +21 -0
  135. package/dist/types/Entities/MemoizedColor.d.ts.map +1 -1
  136. package/dist/types/Entities/MemoizedNumber.d.ts +21 -0
  137. package/dist/types/Entities/MemoizedNumber.d.ts.map +1 -1
  138. package/dist/types/Entities/MemoizedQuaternion.d.ts +21 -0
  139. package/dist/types/Entities/MemoizedQuaternion.d.ts.map +1 -1
  140. package/dist/types/Entities/MemoizedString.d.ts +21 -0
  141. package/dist/types/Entities/MemoizedString.d.ts.map +1 -1
  142. package/dist/types/Entities/MemoizedVector2.d.ts +21 -0
  143. package/dist/types/Entities/MemoizedVector2.d.ts.map +1 -1
  144. package/dist/types/Entities/MemoizedVector3.d.ts +21 -0
  145. package/dist/types/Entities/MemoizedVector3.d.ts.map +1 -1
  146. package/dist/types/Entities/ObservableEntity.d.ts +20 -0
  147. package/dist/types/Entities/ObservableEntity.d.ts.map +1 -1
  148. package/dist/types/Entities/ObserverList.d.ts +21 -0
  149. package/dist/types/Entities/ObserverList.d.ts.map +1 -1
  150. package/dist/types/Entities/RangedNumber.d.ts +37 -0
  151. package/dist/types/Entities/RangedNumber.d.ts.map +1 -1
  152. package/dist/types/Types/PmAdapter.d.ts +60 -0
  153. package/dist/types/Types/PmAdapter.d.ts.map +1 -1
  154. package/dist/types/Types/SingletonPmAdapter.d.ts +55 -0
  155. package/dist/types/Types/SingletonPmAdapter.d.ts.map +1 -1
  156. package/dist/types/ValueObjects/Angle.d.ts +1 -1
  157. package/dist/types/ValueObjects/Matrix.d.ts +5 -5
  158. package/dist/types/ValueObjects/Matrix.d.ts.map +1 -1
  159. package/dist/types/ValueObjects/Quaternion.d.ts +17 -17
  160. package/dist/types/ValueObjects/Vector2.d.ts +8 -3
  161. package/dist/types/ValueObjects/Vector2.d.ts.map +1 -1
  162. package/package.json +1 -1
  163. package/dist/cjs/AppObject/AppObject.test.js +0 -113
  164. package/dist/cjs/AppObject/AppObject.test.js.map +0 -1
  165. package/dist/cjs/AppObject/AppObjectComponent.test.js +0 -132
  166. package/dist/cjs/AppObject/AppObjectComponent.test.js.map +0 -1
  167. package/dist/cjs/AppObject/AppObjectEntity.test.js +0 -108
  168. package/dist/cjs/AppObject/AppObjectEntity.test.js.map +0 -1
  169. package/dist/cjs/AppObject/AppObjectEntityRepo.test.js +0 -149
  170. package/dist/cjs/AppObject/AppObjectEntityRepo.test.js.map +0 -1
  171. package/dist/cjs/AppObject/AppObjectPM.test.js +0 -103
  172. package/dist/cjs/AppObject/AppObjectPM.test.js.map +0 -1
  173. package/dist/cjs/AppObject/AppObjectRepo.test.js +0 -213
  174. package/dist/cjs/AppObject/AppObjectRepo.test.js.map +0 -1
  175. package/dist/cjs/AppObject/getSingletonComponent.test.js +0 -13
  176. package/dist/cjs/AppObject/getSingletonComponent.test.js.map +0 -1
  177. package/dist/cjs/Entities/MemoizedAngle.test.js +0 -30
  178. package/dist/cjs/Entities/MemoizedAngle.test.js.map +0 -1
  179. package/dist/cjs/Entities/MemoizedBoolean.test.js +0 -34
  180. package/dist/cjs/Entities/MemoizedBoolean.test.js.map +0 -1
  181. package/dist/cjs/Entities/MemoizedColor.test.js +0 -32
  182. package/dist/cjs/Entities/MemoizedColor.test.js.map +0 -1
  183. package/dist/cjs/Entities/MemoizedNumber.test.js +0 -29
  184. package/dist/cjs/Entities/MemoizedNumber.test.js.map +0 -1
  185. package/dist/cjs/Entities/MemoizedQuaternion.test.js +0 -32
  186. package/dist/cjs/Entities/MemoizedQuaternion.test.js.map +0 -1
  187. package/dist/cjs/Entities/MemoizedString.test.js +0 -29
  188. package/dist/cjs/Entities/MemoizedString.test.js.map +0 -1
  189. package/dist/cjs/Entities/MemoizedVector2.test.js +0 -32
  190. package/dist/cjs/Entities/MemoizedVector2.test.js.map +0 -1
  191. package/dist/cjs/Entities/MemoizedVector3.test.js +0 -32
  192. package/dist/cjs/Entities/MemoizedVector3.test.js.map +0 -1
  193. package/dist/cjs/Entities/ObservableEntity.test.js +0 -25
  194. package/dist/cjs/Entities/ObservableEntity.test.js.map +0 -1
  195. package/dist/cjs/Entities/ObserverList.test.js +0 -44
  196. package/dist/cjs/Entities/ObserverList.test.js.map +0 -1
  197. package/dist/cjs/Entities/RangedNumber.test.js +0 -96
  198. package/dist/cjs/Entities/RangedNumber.test.js.map +0 -1
  199. package/dist/cjs/Utilities/LengthConverters.test.js +0 -24
  200. package/dist/cjs/Utilities/LengthConverters.test.js.map +0 -1
  201. package/dist/cjs/Utilities/LerpNumber.test.js +0 -90
  202. package/dist/cjs/Utilities/LerpNumber.test.js.map +0 -1
  203. package/dist/cjs/Utilities/addAlphaToHex.test.js +0 -34
  204. package/dist/cjs/Utilities/addAlphaToHex.test.js.map +0 -1
  205. package/dist/cjs/Utilities/alphaToHex.test.js +0 -75
  206. package/dist/cjs/Utilities/alphaToHex.test.js.map +0 -1
  207. package/dist/cjs/Utilities/degreesToRadians.test.js +0 -9
  208. package/dist/cjs/Utilities/degreesToRadians.test.js.map +0 -1
  209. package/dist/cjs/Utilities/easeFunctions.test.js +0 -209
  210. package/dist/cjs/Utilities/easeFunctions.test.js.map +0 -1
  211. package/dist/cjs/Utilities/interpolateNumber.test.js +0 -26
  212. package/dist/cjs/Utilities/interpolateNumber.test.js.map +0 -1
  213. package/dist/cjs/ValueObjects/Angle.test.js +0 -28
  214. package/dist/cjs/ValueObjects/Angle.test.js.map +0 -1
  215. package/dist/cjs/ValueObjects/Color.test.js +0 -147
  216. package/dist/cjs/ValueObjects/Color.test.js.map +0 -1
  217. package/dist/cjs/ValueObjects/LineSegment2D.test.js +0 -102
  218. package/dist/cjs/ValueObjects/LineSegment2D.test.js.map +0 -1
  219. package/dist/cjs/ValueObjects/Matrix.test.js +0 -385
  220. package/dist/cjs/ValueObjects/Matrix.test.js.map +0 -1
  221. package/dist/cjs/ValueObjects/ParametricLine.test.js +0 -126
  222. package/dist/cjs/ValueObjects/ParametricLine.test.js.map +0 -1
  223. package/dist/cjs/ValueObjects/ParametricPlane.test.js +0 -101
  224. package/dist/cjs/ValueObjects/ParametricPlane.test.js.map +0 -1
  225. package/dist/cjs/ValueObjects/Quaternion.test.js +0 -240
  226. package/dist/cjs/ValueObjects/Quaternion.test.js.map +0 -1
  227. package/dist/cjs/ValueObjects/Rectangle.test.js +0 -32
  228. package/dist/cjs/ValueObjects/Rectangle.test.js.map +0 -1
  229. package/dist/cjs/ValueObjects/Vector2.test.js +0 -136
  230. package/dist/cjs/ValueObjects/Vector2.test.js.map +0 -1
  231. package/dist/cjs/ValueObjects/Vector3.test.js +0 -188
  232. package/dist/cjs/ValueObjects/Vector3.test.js.map +0 -1
  233. package/dist/cjs/ValueObjects/Version.test.js +0 -310
  234. package/dist/cjs/ValueObjects/Version.test.js.map +0 -1
  235. package/dist/esm/AppObject/AppObject.test.js +0 -110
  236. package/dist/esm/AppObject/AppObject.test.js.map +0 -1
  237. package/dist/esm/AppObject/AppObjectComponent.test.js +0 -130
  238. package/dist/esm/AppObject/AppObjectComponent.test.js.map +0 -1
  239. package/dist/esm/AppObject/AppObjectEntity.test.js +0 -106
  240. package/dist/esm/AppObject/AppObjectEntity.test.js.map +0 -1
  241. package/dist/esm/AppObject/AppObjectEntityRepo.test.js +0 -147
  242. package/dist/esm/AppObject/AppObjectEntityRepo.test.js.map +0 -1
  243. package/dist/esm/AppObject/AppObjectPM.test.js +0 -101
  244. package/dist/esm/AppObject/AppObjectPM.test.js.map +0 -1
  245. package/dist/esm/AppObject/AppObjectRepo.test.js +0 -211
  246. package/dist/esm/AppObject/AppObjectRepo.test.js.map +0 -1
  247. package/dist/esm/AppObject/getSingletonComponent.test.js +0 -11
  248. package/dist/esm/AppObject/getSingletonComponent.test.js.map +0 -1
  249. package/dist/esm/Entities/MemoizedAngle.test.js +0 -28
  250. package/dist/esm/Entities/MemoizedAngle.test.js.map +0 -1
  251. package/dist/esm/Entities/MemoizedBoolean.test.js +0 -32
  252. package/dist/esm/Entities/MemoizedBoolean.test.js.map +0 -1
  253. package/dist/esm/Entities/MemoizedColor.test.js +0 -30
  254. package/dist/esm/Entities/MemoizedColor.test.js.map +0 -1
  255. package/dist/esm/Entities/MemoizedNumber.test.js +0 -27
  256. package/dist/esm/Entities/MemoizedNumber.test.js.map +0 -1
  257. package/dist/esm/Entities/MemoizedQuaternion.test.js +0 -30
  258. package/dist/esm/Entities/MemoizedQuaternion.test.js.map +0 -1
  259. package/dist/esm/Entities/MemoizedString.test.js +0 -27
  260. package/dist/esm/Entities/MemoizedString.test.js.map +0 -1
  261. package/dist/esm/Entities/MemoizedVector2.test.js +0 -30
  262. package/dist/esm/Entities/MemoizedVector2.test.js.map +0 -1
  263. package/dist/esm/Entities/MemoizedVector3.test.js +0 -30
  264. package/dist/esm/Entities/MemoizedVector3.test.js.map +0 -1
  265. package/dist/esm/Entities/ObservableEntity.test.js +0 -23
  266. package/dist/esm/Entities/ObservableEntity.test.js.map +0 -1
  267. package/dist/esm/Entities/ObserverList.test.js +0 -42
  268. package/dist/esm/Entities/ObserverList.test.js.map +0 -1
  269. package/dist/esm/Entities/RangedNumber.test.js +0 -94
  270. package/dist/esm/Entities/RangedNumber.test.js.map +0 -1
  271. package/dist/esm/Utilities/LengthConverters.test.js +0 -22
  272. package/dist/esm/Utilities/LengthConverters.test.js.map +0 -1
  273. package/dist/esm/Utilities/LerpNumber.test.js +0 -88
  274. package/dist/esm/Utilities/LerpNumber.test.js.map +0 -1
  275. package/dist/esm/Utilities/addAlphaToHex.test.js +0 -32
  276. package/dist/esm/Utilities/addAlphaToHex.test.js.map +0 -1
  277. package/dist/esm/Utilities/alphaToHex.test.js +0 -73
  278. package/dist/esm/Utilities/alphaToHex.test.js.map +0 -1
  279. package/dist/esm/Utilities/degreesToRadians.test.js +0 -7
  280. package/dist/esm/Utilities/degreesToRadians.test.js.map +0 -1
  281. package/dist/esm/Utilities/easeFunctions.test.js +0 -207
  282. package/dist/esm/Utilities/easeFunctions.test.js.map +0 -1
  283. package/dist/esm/Utilities/interpolateNumber.test.js +0 -24
  284. package/dist/esm/Utilities/interpolateNumber.test.js.map +0 -1
  285. package/dist/esm/ValueObjects/Angle.test.js +0 -26
  286. package/dist/esm/ValueObjects/Angle.test.js.map +0 -1
  287. package/dist/esm/ValueObjects/Color.test.js +0 -145
  288. package/dist/esm/ValueObjects/Color.test.js.map +0 -1
  289. package/dist/esm/ValueObjects/LineSegment2D.test.js +0 -100
  290. package/dist/esm/ValueObjects/LineSegment2D.test.js.map +0 -1
  291. package/dist/esm/ValueObjects/Matrix.test.js +0 -383
  292. package/dist/esm/ValueObjects/Matrix.test.js.map +0 -1
  293. package/dist/esm/ValueObjects/ParametricLine.test.js +0 -124
  294. package/dist/esm/ValueObjects/ParametricLine.test.js.map +0 -1
  295. package/dist/esm/ValueObjects/ParametricPlane.test.js +0 -99
  296. package/dist/esm/ValueObjects/ParametricPlane.test.js.map +0 -1
  297. package/dist/esm/ValueObjects/Quaternion.test.js +0 -238
  298. package/dist/esm/ValueObjects/Quaternion.test.js.map +0 -1
  299. package/dist/esm/ValueObjects/Rectangle.test.js +0 -30
  300. package/dist/esm/ValueObjects/Rectangle.test.js.map +0 -1
  301. package/dist/esm/ValueObjects/Vector2.test.js +0 -134
  302. package/dist/esm/ValueObjects/Vector2.test.js.map +0 -1
  303. package/dist/esm/ValueObjects/Vector3.test.js +0 -186
  304. package/dist/esm/ValueObjects/Vector3.test.js.map +0 -1
  305. package/dist/esm/ValueObjects/Version.test.js +0 -308
  306. package/dist/esm/ValueObjects/Version.test.js.map +0 -1
  307. package/dist/types/AppObject/AppObject.test.d.ts +0 -7
  308. package/dist/types/AppObject/AppObject.test.d.ts.map +0 -1
  309. package/dist/types/AppObject/AppObjectComponent.test.d.ts +0 -2
  310. package/dist/types/AppObject/AppObjectComponent.test.d.ts.map +0 -1
  311. package/dist/types/AppObject/AppObjectEntity.test.d.ts +0 -2
  312. package/dist/types/AppObject/AppObjectEntity.test.d.ts.map +0 -1
  313. package/dist/types/AppObject/AppObjectEntityRepo.test.d.ts +0 -2
  314. package/dist/types/AppObject/AppObjectEntityRepo.test.d.ts.map +0 -1
  315. package/dist/types/AppObject/AppObjectPM.test.d.ts +0 -2
  316. package/dist/types/AppObject/AppObjectPM.test.d.ts.map +0 -1
  317. package/dist/types/AppObject/AppObjectRepo.test.d.ts +0 -2
  318. package/dist/types/AppObject/AppObjectRepo.test.d.ts.map +0 -1
  319. package/dist/types/AppObject/getSingletonComponent.test.d.ts +0 -2
  320. package/dist/types/AppObject/getSingletonComponent.test.d.ts.map +0 -1
  321. package/dist/types/Entities/MemoizedAngle.test.d.ts +0 -2
  322. package/dist/types/Entities/MemoizedAngle.test.d.ts.map +0 -1
  323. package/dist/types/Entities/MemoizedBoolean.test.d.ts +0 -2
  324. package/dist/types/Entities/MemoizedBoolean.test.d.ts.map +0 -1
  325. package/dist/types/Entities/MemoizedColor.test.d.ts +0 -2
  326. package/dist/types/Entities/MemoizedColor.test.d.ts.map +0 -1
  327. package/dist/types/Entities/MemoizedNumber.test.d.ts +0 -2
  328. package/dist/types/Entities/MemoizedNumber.test.d.ts.map +0 -1
  329. package/dist/types/Entities/MemoizedQuaternion.test.d.ts +0 -2
  330. package/dist/types/Entities/MemoizedQuaternion.test.d.ts.map +0 -1
  331. package/dist/types/Entities/MemoizedString.test.d.ts +0 -2
  332. package/dist/types/Entities/MemoizedString.test.d.ts.map +0 -1
  333. package/dist/types/Entities/MemoizedVector2.test.d.ts +0 -2
  334. package/dist/types/Entities/MemoizedVector2.test.d.ts.map +0 -1
  335. package/dist/types/Entities/MemoizedVector3.test.d.ts +0 -2
  336. package/dist/types/Entities/MemoizedVector3.test.d.ts.map +0 -1
  337. package/dist/types/Entities/ObservableEntity.test.d.ts +0 -2
  338. package/dist/types/Entities/ObservableEntity.test.d.ts.map +0 -1
  339. package/dist/types/Entities/ObserverList.test.d.ts +0 -2
  340. package/dist/types/Entities/ObserverList.test.d.ts.map +0 -1
  341. package/dist/types/Entities/RangedNumber.test.d.ts +0 -2
  342. package/dist/types/Entities/RangedNumber.test.d.ts.map +0 -1
  343. package/dist/types/Utilities/LengthConverters.test.d.ts +0 -2
  344. package/dist/types/Utilities/LengthConverters.test.d.ts.map +0 -1
  345. package/dist/types/Utilities/LerpNumber.test.d.ts +0 -2
  346. package/dist/types/Utilities/LerpNumber.test.d.ts.map +0 -1
  347. package/dist/types/Utilities/addAlphaToHex.test.d.ts +0 -2
  348. package/dist/types/Utilities/addAlphaToHex.test.d.ts.map +0 -1
  349. package/dist/types/Utilities/alphaToHex.test.d.ts +0 -2
  350. package/dist/types/Utilities/alphaToHex.test.d.ts.map +0 -1
  351. package/dist/types/Utilities/degreesToRadians.test.d.ts +0 -2
  352. package/dist/types/Utilities/degreesToRadians.test.d.ts.map +0 -1
  353. package/dist/types/Utilities/easeFunctions.test.d.ts +0 -2
  354. package/dist/types/Utilities/easeFunctions.test.d.ts.map +0 -1
  355. package/dist/types/Utilities/interpolateNumber.test.d.ts +0 -2
  356. package/dist/types/Utilities/interpolateNumber.test.d.ts.map +0 -1
  357. package/dist/types/ValueObjects/Angle.test.d.ts +0 -2
  358. package/dist/types/ValueObjects/Angle.test.d.ts.map +0 -1
  359. package/dist/types/ValueObjects/Color.test.d.ts +0 -2
  360. package/dist/types/ValueObjects/Color.test.d.ts.map +0 -1
  361. package/dist/types/ValueObjects/LineSegment2D.test.d.ts +0 -2
  362. package/dist/types/ValueObjects/LineSegment2D.test.d.ts.map +0 -1
  363. package/dist/types/ValueObjects/Matrix.test.d.ts +0 -2
  364. package/dist/types/ValueObjects/Matrix.test.d.ts.map +0 -1
  365. package/dist/types/ValueObjects/ParametricLine.test.d.ts +0 -2
  366. package/dist/types/ValueObjects/ParametricLine.test.d.ts.map +0 -1
  367. package/dist/types/ValueObjects/ParametricPlane.test.d.ts +0 -2
  368. package/dist/types/ValueObjects/ParametricPlane.test.d.ts.map +0 -1
  369. package/dist/types/ValueObjects/Quaternion.test.d.ts +0 -2
  370. package/dist/types/ValueObjects/Quaternion.test.d.ts.map +0 -1
  371. package/dist/types/ValueObjects/Rectangle.test.d.ts +0 -2
  372. package/dist/types/ValueObjects/Rectangle.test.d.ts.map +0 -1
  373. package/dist/types/ValueObjects/Vector2.test.d.ts +0 -2
  374. package/dist/types/ValueObjects/Vector2.test.d.ts.map +0 -1
  375. package/dist/types/ValueObjects/Vector3.test.d.ts +0 -2
  376. package/dist/types/ValueObjects/Vector3.test.d.ts.map +0 -1
  377. package/dist/types/ValueObjects/Version.test.d.ts +0 -2
  378. package/dist/types/ValueObjects/Version.test.d.ts.map +0 -1
@@ -1,110 +0,0 @@
1
- import { makeAppObject } from "./AppObject";
2
- import { AppObjectComponent } from "./AppObjectComponent";
3
- import { makeAppObjectRepo } from "./AppObjectRepo";
4
- export function makeTestRig() {
5
- const repo = makeAppObjectRepo();
6
- const appObj = makeAppObject("obj id", repo);
7
- const observer = jest.fn();
8
- appObj.addObserver(observer);
9
- return { repo, appObj, observer };
10
- }
11
- describe("App Object", () => {
12
- it("Adds itself to the repo", () => {
13
- const { repo, appObj } = makeTestRig();
14
- expect(repo.has(appObj.id)).toEqual(true);
15
- });
16
- it("Removes itself from the repo when disposed", () => {
17
- const { repo, appObj } = makeTestRig();
18
- appObj.dispose();
19
- expect(repo.has(appObj.id)).toEqual(false);
20
- });
21
- it("Checks to see it has a component", () => {
22
- const { appObj } = makeTestRig();
23
- expect(appObj.hasComponent(MockComponent.type)).toEqual(false);
24
- new MockComponent(appObj);
25
- expect(appObj.hasComponent(MockComponent.type)).toEqual(true);
26
- });
27
- it("Notifies when an component is added", () => {
28
- const { appObj, observer } = makeTestRig();
29
- new MockComponent(appObj);
30
- expect(observer).toBeCalled();
31
- });
32
- it("Gets a component", () => {
33
- const { appObj } = makeTestRig();
34
- expect(appObj.getComponent(MockComponent.type)).toEqual(undefined);
35
- const mockComponent = new MockComponent(appObj);
36
- expect(appObj.getComponent(MockComponent.type)).toEqual(mockComponent);
37
- });
38
- it("Warns if a component is replaced", () => {
39
- const { appObj } = makeTestRig();
40
- console.warn = jest.fn();
41
- const mockComponent = new MockComponent(appObj);
42
- appObj.addComponent(mockComponent);
43
- appObj.addComponent(new MockComponent(appObj));
44
- expect(console.warn).toBeCalled();
45
- });
46
- it("Returns the component list", () => {
47
- const { appObj } = makeTestRig();
48
- expect(appObj.allComponents()).toEqual([]);
49
- const mockComponent = new MockComponent(appObj);
50
- appObj.addComponent(mockComponent);
51
- const anotherMockComponent = new AnotherMockComponent(appObj);
52
- appObj.addComponent(anotherMockComponent);
53
- expect(appObj.allComponents()).toEqual([mockComponent, anotherMockComponent]);
54
- });
55
- it("Removes a component", () => {
56
- const { appObj } = makeTestRig();
57
- const comp = new MockComponent(appObj);
58
- appObj.addComponent(comp);
59
- expect(appObj.hasComponent(MockComponent.type)).toEqual(true);
60
- appObj.removeComponent(MockComponent.type);
61
- expect(appObj.hasComponent(MockComponent.type)).toEqual(false);
62
- });
63
- it("Notifies when an component is removed", () => {
64
- const { appObj, observer } = makeTestRig();
65
- const comp = new MockComponent(appObj);
66
- appObj.addComponent(comp);
67
- observer.mockClear();
68
- appObj.removeComponent(MockComponent.type);
69
- appObj.removeComponent(MockComponent.type);
70
- appObj.removeComponent(MockComponent.type);
71
- expect(observer).toHaveBeenCalledTimes(1);
72
- });
73
- it("Disposes all components when the App Object is disposed", () => {
74
- const { appObj } = makeTestRig();
75
- const comp = new MockComponent(appObj);
76
- appObj.addComponent(comp);
77
- const spy = jest.spyOn(comp, "dispose");
78
- appObj.dispose();
79
- expect(spy).toBeCalled();
80
- });
81
- it("Clears the component list when disposed", () => {
82
- const { appObj } = makeTestRig();
83
- const comp = new MockComponent(appObj);
84
- appObj.addComponent(comp);
85
- expect(appObj.allComponents()).toHaveLength(1);
86
- appObj.dispose();
87
- expect(appObj.allComponents()).toHaveLength(0);
88
- });
89
- it("If an entity is replace, it disposes the original", () => {
90
- const { appObj } = makeTestRig();
91
- const comp = new MockComponent(appObj);
92
- appObj.addComponent(comp);
93
- const spy = jest.spyOn(comp, "dispose");
94
- appObj.addComponent(new MockComponent(appObj));
95
- expect(spy).toBeCalled();
96
- });
97
- });
98
- class MockComponent extends AppObjectComponent {
99
- constructor(appObject) {
100
- super(appObject, MockComponent.type);
101
- }
102
- }
103
- MockComponent.type = "mockComponent";
104
- class AnotherMockComponent extends AppObjectComponent {
105
- constructor(appObject) {
106
- super(appObject, AnotherMockComponent.type);
107
- }
108
- }
109
- AnotherMockComponent.type = "mockComponent2";
110
- //# sourceMappingURL=AppObject.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppObject.test.js","sourceRoot":"","sources":["../../../src/AppObject/AppObject.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, makeAppObject } from \"./AppObject\";\r\nimport { AppObjectComponent } from \"./AppObjectComponent\";\r\nimport { makeAppObjectRepo } from \"./AppObjectRepo\";\r\n\r\nexport function makeTestRig() {\r\n const repo = makeAppObjectRepo();\r\n const appObj = makeAppObject(\"obj id\", repo);\r\n const observer = jest.fn();\r\n appObj.addObserver(observer);\r\n\r\n return { repo, appObj, observer };\r\n}\r\n\r\ndescribe(\"App Object\", () => {\r\n it(\"Adds itself to the repo\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n expect(repo.has(appObj.id)).toEqual(true);\r\n });\r\n\r\n it(\"Removes itself from the repo when disposed\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n appObj.dispose();\r\n expect(repo.has(appObj.id)).toEqual(false);\r\n });\r\n\r\n it(\"Checks to see it has a component\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(MockComponent.type)).toEqual(false);\r\n\r\n new MockComponent(appObj);\r\n\r\n expect(appObj.hasComponent(MockComponent.type)).toEqual(true);\r\n });\r\n\r\n it(\"Notifies when an component is added\", () => {\r\n const { appObj, observer } = makeTestRig();\r\n\r\n new MockComponent(appObj);\r\n\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Gets a component\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n expect(appObj.getComponent(MockComponent.type)).toEqual(undefined);\r\n\r\n const mockComponent = new MockComponent(appObj);\r\n\r\n expect(appObj.getComponent(MockComponent.type)).toEqual(mockComponent);\r\n });\r\n\r\n it(\"Warns if a component is replaced\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n console.warn = jest.fn();\r\n\r\n const mockComponent = new MockComponent(appObj);\r\n appObj.addComponent(mockComponent);\r\n appObj.addComponent(new MockComponent(appObj));\r\n\r\n expect(console.warn).toBeCalled();\r\n });\r\n\r\n it(\"Returns the component list\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n expect(appObj.allComponents()).toEqual([]);\r\n\r\n const mockComponent = new MockComponent(appObj);\r\n appObj.addComponent(mockComponent);\r\n\r\n const anotherMockComponent = new AnotherMockComponent(appObj);\r\n appObj.addComponent(anotherMockComponent)\r\n\r\n expect(appObj.allComponents()).toEqual([mockComponent, anotherMockComponent]);\r\n });\r\n\r\n it(\"Removes a component\", () => {\r\n const { appObj } = makeTestRig();\r\n const comp = new MockComponent(appObj);\r\n appObj.addComponent(comp)\r\n\r\n expect(appObj.hasComponent(MockComponent.type)).toEqual(true);\r\n\r\n appObj.removeComponent(MockComponent.type);\r\n\r\n expect(appObj.hasComponent(MockComponent.type)).toEqual(false);\r\n });\r\n\r\n it(\"Notifies when an component is removed\", () => {\r\n const { appObj, observer } = makeTestRig();\r\n const comp = new MockComponent(appObj);\r\n appObj.addComponent(comp)\r\n observer.mockClear();\r\n\r\n appObj.removeComponent(MockComponent.type);\r\n appObj.removeComponent(MockComponent.type);\r\n appObj.removeComponent(MockComponent.type);\r\n\r\n expect(observer).toHaveBeenCalledTimes(1);\r\n });\r\n\r\n it(\"Disposes all components when the App Object is disposed\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n const comp = new MockComponent(appObj);\r\n appObj.addComponent(comp)\r\n\r\n const spy = jest.spyOn(comp, \"dispose\");\r\n\r\n appObj.dispose();\r\n\r\n expect(spy).toBeCalled();\r\n });\r\n\r\n it(\"Clears the component list when disposed\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n const comp = new MockComponent(appObj);\r\n appObj.addComponent(comp)\r\n\r\n expect(appObj.allComponents()).toHaveLength(1);\r\n\r\n appObj.dispose();\r\n\r\n expect(appObj.allComponents()).toHaveLength(0);\r\n });\r\n\r\n it(\"If an entity is replace, it disposes the original\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n const comp = new MockComponent(appObj);\r\n appObj.addComponent(comp)\r\n\r\n const spy = jest.spyOn(comp, \"dispose\");\r\n appObj.addComponent(new MockComponent(appObj))\r\n\r\n expect(spy).toBeCalled();\r\n });\r\n});\r\n\r\nclass MockComponent extends AppObjectComponent {\r\n static readonly type: string = \"mockComponent\";\r\n constructor(appObject: AppObject) {\r\n super(appObject, MockComponent.type)\r\n }\r\n}\r\n\r\nclass AnotherMockComponent extends AppObjectComponent {\r\n static readonly type: string = \"mockComponent2\";\r\n constructor(appObject: AppObject) {\r\n super(appObject, AnotherMockComponent.type)\r\n }\r\n}"]}
@@ -1,130 +0,0 @@
1
- import { makeAppObject } from "./AppObject";
2
- import { AppObjectComponent } from "./AppObjectComponent";
3
- import { makeAppObjectRepo } from "./AppObjectRepo";
4
- function makeTestRig() {
5
- const appObjectRepo = makeAppObjectRepo();
6
- const appObj = makeAppObject("appObj", appObjectRepo);
7
- const appObjectComponent = new AppObjectComponent(appObj, "aComponent");
8
- return { appObjectComponent, appObj, appObjectRepo };
9
- }
10
- describe("App Object Component", () => {
11
- it("Sets the type", () => {
12
- const { appObjectComponent } = makeTestRig();
13
- expect(appObjectComponent.type).toEqual("aComponent");
14
- });
15
- it("Stores the app object", () => {
16
- const { appObjectComponent, appObj } = makeTestRig();
17
- expect(appObjectComponent.appObject).toEqual(appObj);
18
- });
19
- it("Adds itself to the app object", () => {
20
- const { appObjectComponent, appObj } = makeTestRig();
21
- expect(appObj.hasComponent(appObjectComponent.type)).toEqual(true);
22
- });
23
- it("Removes itself from the app object when disposed", () => {
24
- const { appObjectComponent, appObj } = makeTestRig();
25
- appObjectComponent.dispose();
26
- expect(appObj.hasComponent(appObjectComponent.type)).toEqual(false);
27
- });
28
- it("Returns the repo", () => {
29
- const { appObjectComponent, appObjectRepo } = makeTestRig();
30
- expect(appObjectComponent.appObjects).toEqual(appObjectRepo);
31
- });
32
- it("Forwards a warn to the App Object Repo warn", () => {
33
- const { appObjectComponent, appObjectRepo } = makeTestRig();
34
- appObjectRepo.submitWarning = jest.fn();
35
- appObjectComponent.warn("Some warning");
36
- expect(appObjectRepo.submitWarning).toBeCalledWith(`appObj/aComponent`, "Some warning");
37
- });
38
- it("Forwards a log to the App Object Repo log", () => {
39
- const { appObjectComponent, appObjectRepo } = makeTestRig();
40
- appObjectRepo.submitLog = jest.fn();
41
- appObjectComponent.log("Some log");
42
- expect(appObjectRepo.submitLog).toBeCalledWith(`appObj/aComponent`, "Some log");
43
- });
44
- it("Forwards an error to the App Object Repo error", () => {
45
- const { appObjectComponent, appObjectRepo } = makeTestRig();
46
- appObjectRepo.submitError = jest.fn();
47
- appObjectComponent.error("Some error");
48
- expect(appObjectRepo.submitError).toBeCalledWith(`appObj/aComponent`, "Some error");
49
- });
50
- it("Gets a singleton", () => {
51
- const { appObjectComponent, appObjectRepo } = makeTestRig();
52
- const mockSingleton = new MockComponent(appObjectRepo.getOrCreate("Some other"));
53
- const returned = appObjectComponent.getSingleton(MockComponent.type);
54
- expect(returned).toEqual(mockSingleton);
55
- });
56
- it("Warns by default if the singleton cannot be found", () => {
57
- const { appObjectComponent, appObjectRepo } = makeTestRig();
58
- appObjectComponent.warn = jest.fn();
59
- appObjectRepo.submitWarning = jest.fn();
60
- appObjectComponent.getSingleton(MockComponent.type);
61
- expect(appObjectComponent.warn).toBeCalled();
62
- });
63
- it("Errors if the singleton cannot be found", () => {
64
- const { appObjectComponent, appObjectRepo } = makeTestRig();
65
- appObjectComponent.error = jest.fn();
66
- appObjectRepo.submitWarning = jest.fn();
67
- appObjectComponent.getSingleton(MockComponent.type, "ERROR");
68
- expect(appObjectComponent.error).toBeCalled();
69
- });
70
- it("Logs if the singleton cannot be found", () => {
71
- const { appObjectComponent, appObjectRepo } = makeTestRig();
72
- appObjectComponent.log = jest.fn();
73
- appObjectRepo.submitWarning = jest.fn();
74
- appObjectComponent.getSingleton(MockComponent.type, "LOG");
75
- expect(appObjectComponent.log).toBeCalled();
76
- });
77
- it("Warns if the singleton cannot be found", () => {
78
- const { appObjectComponent, appObjectRepo } = makeTestRig();
79
- appObjectComponent.warn = jest.fn();
80
- appObjectRepo.submitWarning = jest.fn();
81
- appObjectComponent.getSingleton(MockComponent.type, "WARN");
82
- expect(appObjectComponent.warn).toBeCalled();
83
- });
84
- it("Gets a cached singleton", () => {
85
- const { appObjectComponent, appObjectRepo } = makeTestRig();
86
- const mockSingleton = new MockComponent(appObjectRepo.getOrCreate("Some other"));
87
- const returned = appObjectComponent.getCachedSingleton(MockComponent.type);
88
- expect(returned).toEqual(mockSingleton);
89
- });
90
- it("Gets a cached singleton from the local cache", () => {
91
- const { appObjectComponent, appObjectRepo } = makeTestRig();
92
- const spy = jest.spyOn(appObjectRepo, "getSingleton");
93
- new MockComponent(appObjectRepo.getOrCreate("Some other"));
94
- appObjectComponent.getCachedSingleton(MockComponent.type);
95
- appObjectComponent.getCachedSingleton(MockComponent.type);
96
- appObjectComponent.getCachedSingleton(MockComponent.type);
97
- appObjectComponent.getCachedSingleton(MockComponent.type);
98
- expect(spy).toBeCalledTimes(1);
99
- });
100
- it("Warns if the cached singleton cannot be found", () => {
101
- const { appObjectComponent, appObjectRepo } = makeTestRig();
102
- appObjectComponent.warn = jest.fn();
103
- appObjectRepo.submitWarning = jest.fn();
104
- appObjectComponent.getCachedSingleton(MockComponent.type);
105
- expect(appObjectComponent.warn).toBeCalled();
106
- });
107
- it("Gets a local component", () => {
108
- const { appObjectComponent, appObjectRepo, appObj } = makeTestRig();
109
- const b1 = new MockComponent(appObj);
110
- new MockComponent(appObjectRepo.getOrCreate("otherAO"));
111
- expect(appObjectComponent.getCachedLocalComponent(MockComponent.type)).toEqual(b1);
112
- });
113
- it("Caches the local component", () => {
114
- const { appObjectComponent, appObj } = makeTestRig();
115
- const spy = jest.spyOn(appObj, "getComponent");
116
- new MockComponent(appObj);
117
- appObjectComponent.getCachedLocalComponent(MockComponent.type);
118
- appObjectComponent.getCachedLocalComponent(MockComponent.type);
119
- appObjectComponent.getCachedLocalComponent(MockComponent.type);
120
- appObjectComponent.getCachedLocalComponent(MockComponent.type);
121
- expect(spy).toBeCalledTimes(1);
122
- });
123
- });
124
- class MockComponent extends AppObjectComponent {
125
- constructor(appObject) {
126
- super(appObject, MockComponent.type);
127
- }
128
- }
129
- MockComponent.type = "MockComponent";
130
- //# sourceMappingURL=AppObjectComponent.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppObjectComponent.test.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectComponent.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, makeAppObject } from \"./AppObject\";\r\nimport { AppObjectComponent } from \"./AppObjectComponent\";\r\nimport { makeAppObjectRepo } from \"./AppObjectRepo\";\r\n\r\nfunction makeTestRig() {\r\n const appObjectRepo = makeAppObjectRepo();\r\n const appObj = makeAppObject(\"appObj\", appObjectRepo);\r\n const appObjectComponent = new AppObjectComponent(appObj, \"aComponent\");\r\n\r\n return { appObjectComponent, appObj, appObjectRepo };\r\n}\r\n\r\ndescribe(\"App Object Component\", () => {\r\n it(\"Sets the type\", () => {\r\n const { appObjectComponent } = makeTestRig();\r\n expect(appObjectComponent.type).toEqual(\"aComponent\");\r\n });\r\n\r\n it(\"Stores the app object\", () => {\r\n const { appObjectComponent, appObj } = makeTestRig();\r\n expect(appObjectComponent.appObject).toEqual(appObj);\r\n });\r\n\r\n it(\"Adds itself to the app object\", () => {\r\n const { appObjectComponent, appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(appObjectComponent.type)).toEqual(true);\r\n });\r\n\r\n it(\"Removes itself from the app object when disposed\", () => {\r\n const { appObjectComponent, appObj } = makeTestRig();\r\n\r\n appObjectComponent.dispose();\r\n\r\n expect(appObj.hasComponent(appObjectComponent.type)).toEqual(false);\r\n });\r\n\r\n it(\"Returns the repo\", () => {\r\n const { appObjectComponent, appObjectRepo } = makeTestRig();\r\n expect(appObjectComponent.appObjects).toEqual(appObjectRepo);\r\n });\r\n\r\n it(\"Forwards a warn to the App Object Repo warn\", () => {\r\n const { appObjectComponent, appObjectRepo } = makeTestRig();\r\n appObjectRepo.submitWarning = jest.fn();\r\n\r\n appObjectComponent.warn(\"Some warning\");\r\n\r\n expect(appObjectRepo.submitWarning).toBeCalledWith(\r\n `appObj/aComponent`,\r\n \"Some warning\"\r\n );\r\n });\r\n\r\n it(\"Forwards a log to the App Object Repo log\", () => {\r\n const { appObjectComponent, appObjectRepo } = makeTestRig();\r\n appObjectRepo.submitLog = jest.fn();\r\n\r\n appObjectComponent.log(\"Some log\");\r\n\r\n expect(appObjectRepo.submitLog).toBeCalledWith(\r\n `appObj/aComponent`,\r\n \"Some log\"\r\n );\r\n });\r\n\r\n it(\"Forwards an error to the App Object Repo error\", () => {\r\n const { appObjectComponent, appObjectRepo } = makeTestRig();\r\n appObjectRepo.submitError = jest.fn();\r\n\r\n appObjectComponent.error(\"Some error\");\r\n\r\n expect(appObjectRepo.submitError).toBeCalledWith(\r\n `appObj/aComponent`,\r\n \"Some error\"\r\n );\r\n });\r\n\r\n it(\"Gets a singleton\", () => {\r\n const { appObjectComponent, appObjectRepo } = makeTestRig();\r\n const mockSingleton = new MockComponent(\r\n appObjectRepo.getOrCreate(\"Some other\")\r\n );\r\n\r\n const returned = appObjectComponent.getSingleton<MockComponent>(\r\n MockComponent.type\r\n );\r\n\r\n expect(returned).toEqual(mockSingleton);\r\n });\r\n\r\n it(\"Warns by default if the singleton cannot be found\", () => {\r\n const { appObjectComponent, appObjectRepo } = makeTestRig();\r\n\r\n appObjectComponent.warn = jest.fn();\r\n appObjectRepo.submitWarning = jest.fn();\r\n\r\n appObjectComponent.getSingleton<MockComponent>(MockComponent.type);\r\n\r\n expect(appObjectComponent.warn).toBeCalled();\r\n });\r\n\r\n it(\"Errors if the singleton cannot be found\", () => {\r\n const { appObjectComponent, appObjectRepo } = makeTestRig();\r\n\r\n appObjectComponent.error = jest.fn();\r\n appObjectRepo.submitWarning = jest.fn();\r\n\r\n appObjectComponent.getSingleton<MockComponent>(MockComponent.type, \"ERROR\");\r\n\r\n expect(appObjectComponent.error).toBeCalled();\r\n });\r\n\r\n it(\"Logs if the singleton cannot be found\", () => {\r\n const { appObjectComponent, appObjectRepo } = makeTestRig();\r\n\r\n appObjectComponent.log = jest.fn();\r\n appObjectRepo.submitWarning = jest.fn();\r\n\r\n appObjectComponent.getSingleton<MockComponent>(MockComponent.type, \"LOG\");\r\n\r\n expect(appObjectComponent.log).toBeCalled();\r\n });\r\n\r\n it(\"Warns if the singleton cannot be found\", () => {\r\n const { appObjectComponent, appObjectRepo } = makeTestRig();\r\n\r\n appObjectComponent.warn = jest.fn();\r\n appObjectRepo.submitWarning = jest.fn();\r\n\r\n appObjectComponent.getSingleton<MockComponent>(MockComponent.type, \"WARN\");\r\n\r\n expect(appObjectComponent.warn).toBeCalled();\r\n });\r\n\r\n it(\"Gets a cached singleton\", () => {\r\n const { appObjectComponent, appObjectRepo } = makeTestRig();\r\n const mockSingleton = new MockComponent(\r\n appObjectRepo.getOrCreate(\"Some other\")\r\n );\r\n\r\n const returned = appObjectComponent.getCachedSingleton<MockComponent>(\r\n MockComponent.type\r\n );\r\n\r\n expect(returned).toEqual(mockSingleton);\r\n });\r\n\r\n it(\"Gets a cached singleton from the local cache\", () => {\r\n const { appObjectComponent, appObjectRepo } = makeTestRig();\r\n\r\n const spy = jest.spyOn(appObjectRepo, \"getSingleton\");\r\n\r\n new MockComponent(appObjectRepo.getOrCreate(\"Some other\"));\r\n\r\n appObjectComponent.getCachedSingleton<MockComponent>(MockComponent.type);\r\n appObjectComponent.getCachedSingleton<MockComponent>(MockComponent.type);\r\n appObjectComponent.getCachedSingleton<MockComponent>(MockComponent.type);\r\n appObjectComponent.getCachedSingleton<MockComponent>(MockComponent.type);\r\n\r\n expect(spy).toBeCalledTimes(1);\r\n });\r\n\r\n it(\"Warns if the cached singleton cannot be found\", () => {\r\n const { appObjectComponent, appObjectRepo } = makeTestRig();\r\n\r\n appObjectComponent.warn = jest.fn();\r\n appObjectRepo.submitWarning = jest.fn();\r\n\r\n appObjectComponent.getCachedSingleton<MockComponent>(MockComponent.type);\r\n\r\n expect(appObjectComponent.warn).toBeCalled();\r\n });\r\n\r\n it(\"Gets a local component\", () => {\r\n const { appObjectComponent, appObjectRepo, appObj } = makeTestRig();\r\n\r\n const b1 = new MockComponent(appObj);\r\n\r\n new MockComponent(appObjectRepo.getOrCreate(\"otherAO\"));\r\n\r\n expect(\r\n appObjectComponent.getCachedLocalComponent<MockComponent>(\r\n MockComponent.type\r\n )\r\n ).toEqual(b1);\r\n });\r\n\r\n it(\"Caches the local component\", () => {\r\n const { appObjectComponent, appObj } = makeTestRig();\r\n\r\n const spy = jest.spyOn(appObj, \"getComponent\");\r\n\r\n new MockComponent(appObj);\r\n\r\n appObjectComponent.getCachedLocalComponent<MockComponent>(\r\n MockComponent.type\r\n );\r\n appObjectComponent.getCachedLocalComponent<MockComponent>(\r\n MockComponent.type\r\n );\r\n appObjectComponent.getCachedLocalComponent<MockComponent>(\r\n MockComponent.type\r\n );\r\n appObjectComponent.getCachedLocalComponent<MockComponent>(\r\n MockComponent.type\r\n );\r\n\r\n expect(spy).toBeCalledTimes(1);\r\n });\r\n});\r\n\r\nclass MockComponent extends AppObjectComponent {\r\n static type = \"MockComponent\";\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, MockComponent.type);\r\n }\r\n}\r\n"]}
@@ -1,106 +0,0 @@
1
- import { makeAppObject } from "./AppObject";
2
- import { AppObjectComponentType } from "./AppObjectComponent";
3
- import { AppObjectEntity } from "./AppObjectEntity";
4
- import { makeAppObjectRepo } from "./AppObjectRepo";
5
- class MockEntity extends AppObjectEntity {
6
- constructor(appObject) {
7
- super(appObject, MockEntity.type);
8
- }
9
- }
10
- MockEntity.type = "mockEntity";
11
- function makeTestRig() {
12
- const appObjectRepo = makeAppObjectRepo();
13
- const appObj = makeAppObject("appObj", appObjectRepo);
14
- const appObjectEntity = new MockEntity(appObj);
15
- const onChangeObserver = jest.fn();
16
- appObjectEntity.addChangeObserver(onChangeObserver);
17
- return { appObjectEntity, onChangeObserver, appObj, appObjectRepo };
18
- }
19
- describe("Abstract Observable Entity", () => {
20
- it("Sets the type", () => {
21
- const { appObjectEntity } = makeTestRig();
22
- expect(appObjectEntity.type).toEqual("mockEntity");
23
- });
24
- it("Notifies on change", () => {
25
- const { onChangeObserver, appObjectEntity } = makeTestRig();
26
- appObjectEntity.notifyOnChange();
27
- expect(onChangeObserver).toBeCalled();
28
- });
29
- it("Removes an on change onChangeObserver", () => {
30
- const { onChangeObserver, appObjectEntity } = makeTestRig();
31
- appObjectEntity.removeChangeObserver(onChangeObserver);
32
- appObjectEntity.notifyOnChange();
33
- expect(onChangeObserver).not.toBeCalled();
34
- });
35
- it("Notifies when disposed", () => {
36
- const { appObjectEntity } = makeTestRig();
37
- const disposeObserver = jest.fn();
38
- appObjectEntity.addOnDisposeObserver(disposeObserver);
39
- appObjectEntity.dispose();
40
- expect(disposeObserver).toBeCalled();
41
- });
42
- it("Removes a dispose onChangeObserver", () => {
43
- const { appObjectEntity } = makeTestRig();
44
- const disposeObserver = jest.fn();
45
- appObjectEntity.addOnDisposeObserver(disposeObserver);
46
- appObjectEntity.removeOnDisposeObserver(disposeObserver);
47
- appObjectEntity.dispose();
48
- expect(disposeObserver).not.toBeCalled();
49
- });
50
- it("Clears all observers when disposed", () => {
51
- const { onChangeObserver, appObjectEntity } = makeTestRig();
52
- const disposeObserver = jest.fn();
53
- appObjectEntity.addOnDisposeObserver(disposeObserver);
54
- appObjectEntity.dispose();
55
- disposeObserver.mockClear();
56
- onChangeObserver.mockClear();
57
- appObjectEntity.notifyOnChange();
58
- appObjectEntity.dispose();
59
- expect(onChangeObserver).not.toBeCalled();
60
- expect(disposeObserver).not.toBeCalled();
61
- });
62
- it("Stores the app object", () => {
63
- const { appObjectEntity, appObj } = makeTestRig();
64
- expect(appObjectEntity.appObject).toEqual(appObj);
65
- });
66
- it("Adds itself to the app object", () => {
67
- const { appObjectEntity, appObj } = makeTestRig();
68
- expect(appObj.hasComponent(appObjectEntity.type)).toEqual(true);
69
- });
70
- it("Removes itself from the app object when disposed", () => {
71
- const { appObjectEntity, appObj } = makeTestRig();
72
- appObjectEntity.dispose();
73
- expect(appObj.hasComponent(appObjectEntity.type)).toEqual(false);
74
- });
75
- it("Forwards notifications to the App Object observers", () => {
76
- const { appObjectEntity, appObj } = makeTestRig();
77
- const appObjObserver = jest.fn();
78
- appObj.addObserver(appObjObserver);
79
- appObjectEntity.notifyOnChange();
80
- expect(appObjObserver).toBeCalled();
81
- });
82
- it("Stops forwarding notifications to the App Object observers when disposed", () => {
83
- const { appObjectEntity, appObj } = makeTestRig();
84
- const appObjObserver = jest.fn();
85
- appObj.addObserver(appObjObserver);
86
- appObjectEntity.dispose();
87
- appObjObserver.mockClear();
88
- appObjectEntity.notifyOnChange();
89
- expect(appObjObserver).not.toBeCalled();
90
- });
91
- it("Returns the repo", () => {
92
- const { appObjectEntity, appObjectRepo } = makeTestRig();
93
- expect(appObjectEntity.appObjects).toEqual(appObjectRepo);
94
- });
95
- it("Forwards a warn to the App Object Repo warn", () => {
96
- const { appObjectEntity, appObjectRepo } = makeTestRig();
97
- appObjectRepo.submitWarning = jest.fn();
98
- appObjectEntity.warn("Some warning");
99
- expect(appObjectRepo.submitWarning).toBeCalledWith(`appObj/mockEntity`, "Some warning");
100
- });
101
- it("Sets Component type to Entity", () => {
102
- const { appObjectEntity } = makeTestRig();
103
- expect(appObjectEntity.componentType).toEqual(AppObjectComponentType.ENTITY);
104
- });
105
- });
106
- //# sourceMappingURL=AppObjectEntity.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppObjectEntity.test.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectEntity.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,UAAW,SAAQ,eAAe;IAGtC,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;;AAJM,eAAI,GAAG,YAAY,CAAC;AAO7B,SAAS,WAAW;IAClB,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAE/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACnC,eAAe,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAEpD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACtE,CAAC;AAED,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC1C,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC5D,eAAe,CAAC,cAAc,EAAE,CAAC;QAEjC,MAAM,CAAC,gBAAgB,CAAC,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC5D,eAAe,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QACvD,eAAe,CAAC,cAAc,EAAE,CAAC;QAEjC,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAClC,eAAe,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAEtD,eAAe,CAAC,OAAO,EAAE,CAAC;QAE1B,MAAM,CAAC,eAAe,CAAC,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAClC,eAAe,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;QACtD,eAAe,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;QAEzD,eAAe,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAClC,eAAe,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAEtD,eAAe,CAAC,OAAO,EAAE,CAAC;QAE1B,eAAe,CAAC,SAAS,EAAE,CAAC;QAC5B,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAE7B,eAAe,CAAC,cAAc,EAAE,CAAC;QACjC,eAAe,CAAC,OAAO,EAAE,CAAC;QAE1B,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QAC1C,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QAClD,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QAElD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QAElD,eAAe,CAAC,OAAO,EAAE,CAAC;QAE1B,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QAElD,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAEnC,eAAe,CAAC,cAAc,EAAE,CAAC;QAEjC,MAAM,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QAElD,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAEnC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC1B,cAAc,CAAC,SAAS,EAAE,CAAC;QAE3B,eAAe,CAAC,cAAc,EAAE,CAAC;QAEjC,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC;QACzD,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC;QACzD,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAExC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAErC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,cAAc,CAChD,mBAAmB,EACnB,cAAc,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAE1C,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,OAAO,CAC3C,sBAAsB,CAAC,MAAM,CAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { AppObject, makeAppObject } from \"./AppObject\";\r\nimport { AppObjectComponentType } from \"./AppObjectComponent\";\r\nimport { AppObjectEntity } from \"./AppObjectEntity\";\r\nimport { makeAppObjectRepo } from \"./AppObjectRepo\";\r\n\r\nclass MockEntity extends AppObjectEntity {\r\n static type = \"mockEntity\";\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, MockEntity.type);\r\n }\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjectRepo = makeAppObjectRepo();\r\n const appObj = makeAppObject(\"appObj\", appObjectRepo);\r\n const appObjectEntity = new MockEntity(appObj);\r\n\r\n const onChangeObserver = jest.fn();\r\n appObjectEntity.addChangeObserver(onChangeObserver);\r\n\r\n return { appObjectEntity, onChangeObserver, appObj, appObjectRepo };\r\n}\r\n\r\ndescribe(\"Abstract Observable Entity\", () => {\r\n it(\"Sets the type\", () => {\r\n const { appObjectEntity } = makeTestRig();\r\n expect(appObjectEntity.type).toEqual(\"mockEntity\");\r\n });\r\n\r\n it(\"Notifies on change\", () => {\r\n const { onChangeObserver, appObjectEntity } = makeTestRig();\r\n appObjectEntity.notifyOnChange();\r\n\r\n expect(onChangeObserver).toBeCalled();\r\n });\r\n\r\n it(\"Removes an on change onChangeObserver\", () => {\r\n const { onChangeObserver, appObjectEntity } = makeTestRig();\r\n appObjectEntity.removeChangeObserver(onChangeObserver);\r\n appObjectEntity.notifyOnChange();\r\n\r\n expect(onChangeObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Notifies when disposed\", () => {\r\n const { appObjectEntity } = makeTestRig();\r\n const disposeObserver = jest.fn();\r\n appObjectEntity.addOnDisposeObserver(disposeObserver);\r\n\r\n appObjectEntity.dispose();\r\n\r\n expect(disposeObserver).toBeCalled();\r\n });\r\n\r\n it(\"Removes a dispose onChangeObserver\", () => {\r\n const { appObjectEntity } = makeTestRig();\r\n const disposeObserver = jest.fn();\r\n appObjectEntity.addOnDisposeObserver(disposeObserver);\r\n appObjectEntity.removeOnDisposeObserver(disposeObserver);\r\n\r\n appObjectEntity.dispose();\r\n expect(disposeObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Clears all observers when disposed\", () => {\r\n const { onChangeObserver, appObjectEntity } = makeTestRig();\r\n const disposeObserver = jest.fn();\r\n appObjectEntity.addOnDisposeObserver(disposeObserver);\r\n\r\n appObjectEntity.dispose();\r\n\r\n disposeObserver.mockClear();\r\n onChangeObserver.mockClear();\r\n\r\n appObjectEntity.notifyOnChange();\r\n appObjectEntity.dispose();\r\n\r\n expect(onChangeObserver).not.toBeCalled();\r\n expect(disposeObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Stores the app object\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n expect(appObjectEntity.appObject).toEqual(appObj);\r\n });\r\n\r\n it(\"Adds itself to the app object\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(appObjectEntity.type)).toEqual(true);\r\n });\r\n\r\n it(\"Removes itself from the app object when disposed\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n\r\n appObjectEntity.dispose();\r\n\r\n expect(appObj.hasComponent(appObjectEntity.type)).toEqual(false);\r\n });\r\n\r\n it(\"Forwards notifications to the App Object observers\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n\r\n const appObjObserver = jest.fn();\r\n appObj.addObserver(appObjObserver);\r\n\r\n appObjectEntity.notifyOnChange();\r\n\r\n expect(appObjObserver).toBeCalled();\r\n });\r\n\r\n it(\"Stops forwarding notifications to the App Object observers when disposed\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n\r\n const appObjObserver = jest.fn();\r\n appObj.addObserver(appObjObserver);\r\n\r\n appObjectEntity.dispose();\r\n appObjObserver.mockClear();\r\n\r\n appObjectEntity.notifyOnChange();\r\n\r\n expect(appObjObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Returns the repo\", () => {\r\n const { appObjectEntity, appObjectRepo } = makeTestRig();\r\n expect(appObjectEntity.appObjects).toEqual(appObjectRepo);\r\n });\r\n\r\n it(\"Forwards a warn to the App Object Repo warn\", () => {\r\n const { appObjectEntity, appObjectRepo } = makeTestRig();\r\n appObjectRepo.submitWarning = jest.fn();\r\n\r\n appObjectEntity.warn(\"Some warning\");\r\n\r\n expect(appObjectRepo.submitWarning).toBeCalledWith(\r\n `appObj/mockEntity`,\r\n \"Some warning\"\r\n );\r\n });\r\n\r\n it(\"Sets Component type to Entity\", () => {\r\n const { appObjectEntity } = makeTestRig();\r\n\r\n expect(appObjectEntity.componentType).toEqual(\r\n AppObjectComponentType.ENTITY\r\n );\r\n });\r\n});\r\n"]}
@@ -1,147 +0,0 @@
1
- import { makeAppObject } from "./AppObject";
2
- import { AppObjectEntity } from "./AppObjectEntity";
3
- import { AppObjectEntityRepo } from "./AppObjectEntityRepo";
4
- import { makeAppObjectRepo } from "./AppObjectRepo";
5
- class MockAppEntity extends AppObjectEntity {
6
- constructor(appObject) {
7
- super(appObject, MockAppEntity.type);
8
- }
9
- }
10
- MockAppEntity.type = "mockEntity";
11
- class MockEntityRepoImp extends AppObjectEntityRepo {
12
- makeEntity(appObj) {
13
- return new MockAppEntity(appObj);
14
- }
15
- constructor(appObject) {
16
- super(appObject, MockAppEntity.type);
17
- }
18
- }
19
- MockEntityRepoImp.type = "Mock Repo";
20
- function makeTestRig() {
21
- const appObjects = makeAppObjectRepo();
22
- const repoAppObj = makeAppObject("repo", appObjects);
23
- const repo = new MockEntityRepoImp(repoAppObj);
24
- const appObj = makeAppObject("appObjID", appObjects);
25
- const observer = jest.fn();
26
- repo.addChangeObserver(observer);
27
- return { repo, observer, appObj };
28
- }
29
- describe("Observable Entity Repo", () => {
30
- it("Allows an entity to be added", () => {
31
- const { repo, appObj } = makeTestRig();
32
- const entity = new MockAppEntity(appObj);
33
- expect(repo.hasForAppObject("appObjID")).toEqual(false);
34
- repo.add(entity);
35
- expect(repo.hasForAppObject("appObjID")).toEqual(true);
36
- });
37
- it("Notifies when an entity is added", () => {
38
- const { repo, observer, appObj } = makeTestRig();
39
- const entity = new MockAppEntity(appObj);
40
- repo.add(entity);
41
- expect(observer).toBeCalled();
42
- });
43
- it("Forwards notification from an added entity", () => {
44
- const { repo, observer, appObj } = makeTestRig();
45
- const entity = new MockAppEntity(appObj);
46
- repo.add(entity);
47
- observer.mockClear();
48
- entity.notifyOnChange();
49
- expect(observer).toBeCalled();
50
- });
51
- it("Stops notifying if adding an entity replaces and exisitng entity", () => {
52
- const { repo, observer, appObj } = makeTestRig();
53
- console.warn = jest.fn(); // Replacing warns. This keeps the console clean
54
- const original = new MockAppEntity(appObj);
55
- repo.add(original);
56
- const replacement = new MockAppEntity(appObj);
57
- repo.add(replacement);
58
- observer.mockClear();
59
- original.notifyOnChange();
60
- expect(observer).not.toBeCalled();
61
- });
62
- it("Removes an entity", () => {
63
- const { repo, appObj } = makeTestRig();
64
- const entity = new MockAppEntity(appObj);
65
- repo.add(entity);
66
- expect(repo.hasForAppObject("appObjID")).toEqual(true);
67
- repo.removeForAppObject("appObjID");
68
- expect(repo.hasForAppObject("appObjID")).toEqual(false);
69
- });
70
- it("Notifies if an entity is removed", () => {
71
- const { repo, observer, appObj } = makeTestRig();
72
- const entity = new MockAppEntity(appObj);
73
- repo.add(entity);
74
- observer.mockClear();
75
- repo.removeForAppObject("appObjID");
76
- expect(observer).toBeCalled();
77
- });
78
- it("Does not notifyOnChange if the entity to be removed cannot be found", () => {
79
- const { repo, observer } = makeTestRig();
80
- repo.removeForAppObject("someId");
81
- repo.removeForAppObject("someId");
82
- repo.removeForAppObject("someId");
83
- expect(observer).not.toBeCalled();
84
- });
85
- it("Stops observing a removed entity", () => {
86
- const { repo, observer, appObj } = makeTestRig();
87
- const entity = new MockAppEntity(appObj);
88
- repo.add(entity);
89
- repo.removeForAppObject("appObjID");
90
- observer.mockClear();
91
- entity.notifyOnChange();
92
- expect(observer).not.toBeCalled();
93
- });
94
- it("Gets an entity", () => {
95
- const { repo, appObj } = makeTestRig();
96
- const entity = new MockAppEntity(appObj);
97
- repo.add(entity);
98
- expect(repo.getForAppObject("appObjID")).toEqual(entity);
99
- });
100
- it("Gets all entities", () => {
101
- const { repo, appObj } = makeTestRig();
102
- const entity = new MockAppEntity(appObj);
103
- repo.add(entity);
104
- expect(repo.getAll()).toEqual([entity]);
105
- });
106
- it("Returns undefined for an unknown entity", () => {
107
- const { repo } = makeTestRig();
108
- expect(repo.getForAppObject("unknownID")).toBeUndefined();
109
- });
110
- it("Supports notifying an observer when an entity is added", () => {
111
- const { repo, appObj } = makeTestRig();
112
- const addEntityObserver = jest.fn();
113
- repo.addEntityAddedObserver(addEntityObserver);
114
- const ent = new MockAppEntity(appObj);
115
- repo.add(ent);
116
- expect(addEntityObserver).toBeCalledWith(ent);
117
- });
118
- it("Add entity observer can be removed", () => {
119
- const { repo, appObj } = makeTestRig();
120
- const addEntityObserver = jest.fn();
121
- repo.addEntityAddedObserver(addEntityObserver);
122
- repo.removeEntityAddedObserver(addEntityObserver);
123
- const ent = new MockAppEntity(appObj);
124
- repo.add(ent);
125
- expect(addEntityObserver).not.toBeCalled();
126
- });
127
- it("Supports notifying an observer when an entity is removed", () => {
128
- const { repo, appObj } = makeTestRig();
129
- const removeEntityObserver = jest.fn();
130
- repo.addEntityRemovedObserver(removeEntityObserver);
131
- const ent = new MockAppEntity(appObj);
132
- repo.add(ent);
133
- repo.removeForAppObject("appObjID");
134
- expect(removeEntityObserver).toBeCalledWith(ent);
135
- });
136
- it("Remove entity observer can be removed", () => {
137
- const { repo, appObj } = makeTestRig();
138
- const removeEntityObserver = jest.fn();
139
- repo.addEntityRemovedObserver(removeEntityObserver);
140
- repo.removeEntityRemovedObserver(removeEntityObserver);
141
- const ent = new MockAppEntity(appObj);
142
- repo.add(ent);
143
- repo.removeForAppObject("appObjID");
144
- expect(removeEntityObserver).not.toBeCalled();
145
- });
146
- });
147
- //# sourceMappingURL=AppObjectEntityRepo.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppObjectEntityRepo.test.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectEntityRepo.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, makeAppObject } from \"./AppObject\";\r\nimport { AppObjectEntity } from \"./AppObjectEntity\";\r\nimport { AppObjectEntityRepo } from \"./AppObjectEntityRepo\";\r\nimport { makeAppObjectRepo } from \"./AppObjectRepo\";\r\n\r\nclass MockAppEntity extends AppObjectEntity {\r\n static type: string = \"mockEntity\";\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, MockAppEntity.type)\r\n }\r\n}\r\n\r\nclass MockEntityRepoImp extends AppObjectEntityRepo<MockAppEntity> {\r\n static type: string = \"Mock Repo\";\r\n\r\n makeEntity(appObj: AppObject): MockAppEntity {\r\n return new MockAppEntity(appObj);\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, MockAppEntity.type)\r\n }\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const repoAppObj = makeAppObject(\"repo\", appObjects);\r\n const repo = new MockEntityRepoImp(repoAppObj);\r\n \r\n const appObj = makeAppObject(\"appObjID\", appObjects);\r\n const observer = jest.fn();\r\n repo.addChangeObserver(observer);\r\n\r\n return { repo, observer, appObj };\r\n}\r\n\r\ndescribe(\"Observable Entity Repo\", () => {\r\n it(\"Allows an entity to be added\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n const entity = new MockAppEntity(appObj);\r\n\r\n expect(repo.hasForAppObject(\"appObjID\")).toEqual(false);\r\n\r\n repo.add(entity);\r\n\r\n expect(repo.hasForAppObject(\"appObjID\")).toEqual(true);\r\n });\r\n\r\n it(\"Notifies when an entity is added\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n repo.add(entity);\r\n\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Forwards notification from an added entity\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n repo.add(entity);\r\n\r\n observer.mockClear();\r\n\r\n entity.notifyOnChange();\r\n\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Stops notifying if adding an entity replaces and exisitng entity\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n\r\n console.warn = jest.fn(); // Replacing warns. This keeps the console clean\r\n\r\n const original =new MockAppEntity(appObj);\r\n repo.add(original);\r\n\r\n const replacement =new MockAppEntity(appObj);\r\n repo.add(replacement);\r\n observer.mockClear();\r\n\r\n original.notifyOnChange();\r\n\r\n expect(observer).not.toBeCalled();\r\n });\r\n\r\n it(\"Removes an entity\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n\r\n repo.add(entity);\r\n\r\n expect(repo.hasForAppObject(\"appObjID\")).toEqual(true);\r\n\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n expect(repo.hasForAppObject(\"appObjID\")).toEqual(false);\r\n });\r\n\r\n it(\"Notifies if an entity is removed\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n\r\n repo.add(entity);\r\n observer.mockClear();\r\n\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Does not notifyOnChange if the entity to be removed cannot be found\", () => {\r\n const { repo, observer } = makeTestRig();\r\n\r\n repo.removeForAppObject(\"someId\");\r\n repo.removeForAppObject(\"someId\");\r\n repo.removeForAppObject(\"someId\");\r\n\r\n expect(observer).not.toBeCalled();\r\n });\r\n\r\n it(\"Stops observing a removed entity\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n\r\n repo.add(entity);\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n observer.mockClear();\r\n\r\n entity.notifyOnChange();\r\n\r\n expect(observer).not.toBeCalled();\r\n });\r\n\r\n it(\"Gets an entity\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n repo.add(entity);\r\n\r\n expect(repo.getForAppObject(\"appObjID\")).toEqual(entity);\r\n });\r\n\r\n it(\"Gets all entities\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n repo.add(entity);\r\n\r\n expect(repo.getAll()).toEqual([entity]);\r\n });\r\n\r\n it(\"Returns undefined for an unknown entity\", () => {\r\n const { repo } = makeTestRig();\r\n\r\n expect(repo.getForAppObject(\"unknownID\")).toBeUndefined();\r\n });\r\n\r\n\r\n it(\"Supports notifying an observer when an entity is added\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n const addEntityObserver = jest.fn();\r\n repo.addEntityAddedObserver(addEntityObserver);\r\n\r\n const ent =new MockAppEntity(appObj);\r\n repo.add(ent);\r\n\r\n expect(addEntityObserver).toBeCalledWith(ent);\r\n });\r\n\r\n it(\"Add entity observer can be removed\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n const addEntityObserver = jest.fn();\r\n repo.addEntityAddedObserver(addEntityObserver);\r\n repo.removeEntityAddedObserver(addEntityObserver);\r\n\r\n const ent =new MockAppEntity(appObj);\r\n repo.add(ent);\r\n\r\n expect(addEntityObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Supports notifying an observer when an entity is removed\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n const removeEntityObserver = jest.fn();\r\n repo.addEntityRemovedObserver(removeEntityObserver);\r\n\r\n const ent =new MockAppEntity(appObj);\r\n repo.add(ent);\r\n\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n expect(removeEntityObserver).toBeCalledWith(ent);\r\n });\r\n\r\n it(\"Remove entity observer can be removed\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n const removeEntityObserver = jest.fn();\r\n repo.addEntityRemovedObserver(removeEntityObserver);\r\n repo.removeEntityRemovedObserver(removeEntityObserver);\r\n\r\n const ent =new MockAppEntity(appObj);\r\n repo.add(ent);\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n expect(removeEntityObserver).not.toBeCalled();\r\n });\r\n});\r\n"]}