ItemGenerator.brs

  1. ' /**
  2. ' * @module ItemGenerator
  3. ' */
  4. ' /**
  5. ' * @memberof module:ItemGenerator
  6. ' * @name ItemGenerator
  7. ' * @function
  8. ' * @instance
  9. ' * @param {Dynamic} scheme - A scheme with desired object structure. Can be
  10. ' * any simple type, array of types or associative array in form
  11. ' *
  12. ' * ``` { propertyName1 : "propertyType1"
  13. ' * propertyName2 : "propertyType2"
  14. ' * ...
  15. ' * propertyNameN : "propertyTypeN" }
  16. ' * ```
  17. ' * @description Creates an ItemGenerator instance
  18. ' * @returns {Object} An object according to specified scheme or invalid, if scheme is not valid.
  19. ' */
  20. function __Rooibos_ItemGenerator_builder()
  21. instance = {}
  22. instance.new = function()
  23. m.isValid = Rooibos_Common_isValid(scheme)
  24. end function
  25. ' /**
  26. ' * @memberof module:ItemGenerator
  27. ' * @name GetItem
  28. ' * @function
  29. ' * @instance
  30. ' * @param {Dynamic} scheme - A scheme with desired object structure. Can be
  31. ' * any simple type, array of types or associative array in form
  32. ' *
  33. ' * ``` { propertyName1 : "propertyType1"
  34. ' * propertyName2 : "propertyType2"
  35. ' * ...
  36. ' * propertyNameN : "propertyTypeN" }
  37. ' * ```
  38. ' * @description Gets an item according to the schem
  39. ' * @returns {Object} An object according to specified scheme or invalid if scheme is not one of simple type, array or associative array.
  40. ' */
  41. instance.GetItem = function(scheme as object) as object
  42. item = invalid
  43. if Rooibos_Common_isAssociativeArray(scheme) then
  44. item = m.getAssocArray(scheme)
  45. else if Rooibos_Common_isArray(scheme) then
  46. item = m.getArray(scheme)
  47. else if Rooibos_Common_isString(scheme) then
  48. item = m.getSimpleType(lCase(scheme))
  49. end if
  50. return item
  51. end function
  52. ' /**
  53. ' * @memberof module:ItemGenerator
  54. ' * @name GetAssocArray
  55. ' * @function
  56. ' * @instance
  57. ' * @param {Dynamic} scheme - A scheme with desired object structure. Can be
  58. ' * any simple type, array of types or associative array in form
  59. ' *
  60. ' * ``` { propertyName1 : "propertyType1"
  61. ' * propertyName2 : "propertyType2"
  62. ' * ...
  63. ' * propertyNameN : "propertyTypeN" }
  64. ' * ```
  65. ' * @description Generates associative array according to specified scheme.
  66. ' * @returns {Object} An associative array according to specified scheme.
  67. ' */
  68. instance.GetAssocArray = function(scheme as object) as object
  69. item = {}
  70. for each key in scheme
  71. if not item.DoesExist(key) then
  72. item[key] = m.getItem(scheme[key])
  73. end if
  74. end for
  75. return item
  76. end function
  77. ' /**
  78. ' * @memberof module:ItemGenerator
  79. ' * @name GetArray
  80. ' * @function
  81. ' * @instance
  82. ' * @param {Dynamic} An array with desired object types.
  83. ' *
  84. ' * ``` { propertyName1 : "propertyType1"
  85. ' * propertyName2 : "propertyType2"
  86. ' * ...
  87. ' * propertyNameN : "propertyTypeN" }
  88. ' * ```
  89. ' * @description Generates array according to specified scheme.
  90. ' * @returns {Object} An array according to specified scheme.
  91. ' */
  92. instance.GetArray = function(scheme as object) as object
  93. item = []
  94. for each key in scheme
  95. item.Push(m.getItem(key))
  96. end for
  97. return item
  98. end function
  99. ' /**
  100. ' * @memberof module:ItemGenerator
  101. ' * @name GetSimpleType
  102. ' * @function
  103. ' * @instance
  104. ' * @description Generates random value of specified type
  105. ' * @param {Dynamic} typeStr - name of desired object type.
  106. ' * @returns {Object} A simple type object or invalid if type is not supported.
  107. ' */
  108. instance.GetSimpleType = function(typeStr as string) as object
  109. item = invalid
  110. if typeStr = "integer" or typeStr = "int" or typeStr = "roint" then
  111. item = m.getInteger()
  112. else if typeStr = "float" or typeStr = "rofloat" then
  113. item = m.getFloat()
  114. else if typeStr = "string" or typeStr = "rostring" then
  115. item = m.getString(10)
  116. else if typeStr = "boolean" or typeStr = "roboolean" then
  117. item = m.getBoolean()
  118. end if
  119. return item
  120. end function
  121. ' /**
  122. ' * @memberof module:ItemGenerator
  123. ' * @name GetBoolean
  124. ' * @function
  125. ' * @instance
  126. ' * @description Generates random boolean value.
  127. ' * @returns {Boolean} A random boolean value.
  128. ' */
  129. instance.GetBoolean = function() as boolean
  130. return Rooibos_Common_asBoolean(Rnd(2) \ Rnd(2))
  131. end function
  132. ' /**
  133. ' * @memberof module:ItemGenerator
  134. ' * @name GetInteger
  135. ' * @function
  136. ' * @instance
  137. ' * @description Generates random integer value from 1 to specified seed value.
  138. ' * @param {Dynamic} seed - seed value for Rnd function.
  139. ' * @returns {integer} A random integer value.
  140. ' */
  141. instance.GetInteger = function(seed = 100) as integer
  142. return Rnd(seed)
  143. end function
  144. ' /**
  145. ' * @memberof module:ItemGenerator
  146. ' * @name GetFloat
  147. ' * @function
  148. ' * @instance
  149. ' * @description Generates random float value.
  150. ' * @returns {float} A random float value.
  151. ' */
  152. instance.GetFloat = function() as float
  153. return Rnd(0)
  154. end function
  155. ' /**
  156. ' * @memberof module:ItemGenerator
  157. ' * @name GetString
  158. ' * @function
  159. ' * @instance
  160. ' * @description Generates random string with specified length.
  161. ' * @param {Dynamic} seed - A string length
  162. ' * @returns {string} A random string value or empty string if seed is 0.
  163. ' */
  164. instance.GetString = function(seed as integer) as string
  165. item = ""
  166. if seed > 0 then
  167. stringLength = Rnd(seed)
  168. for i = 0 to stringLength
  169. chType = Rnd(3)
  170. if chType = 1 then 'Chr(48-57) - numbers
  171. chNumber = 47 + Rnd(10)
  172. else if chType = 2 then 'Chr(65-90) - Uppercase Letters
  173. chNumber = 64 + Rnd(26)
  174. else 'Chr(97-122) - Lowercase Letters
  175. chNumber = 96 + Rnd(26)
  176. end if
  177. item = item + Chr(chNumber)
  178. end for
  179. end if
  180. return item
  181. end function
  182. return instance
  183. end function
  184. function Rooibos_ItemGenerator()
  185. instance = __Rooibos_ItemGenerator_builder()
  186. instance.new()
  187. return instance
  188. end function