| 253 | } |
| 254 | |
| 255 | export function randomValidValue< |
| 256 | T extends UnitBase<any> | Action<any>, |
| 257 | C extends BaseConfig | UnitConfig<any> |
| 258 | >(o: (new (config?: C) => T) | T, nestingLvl = 2, maxKeys = 3, maxLength = 5) { |
| 259 | const isCtor = typeof o === 'function'; |
| 260 | const ctorName = isCtor ? (o as new () => UnitBase<any>).name : o.constructor.name; |
| 261 | |
| 262 | switch (ctorName) { |
| 263 | case 'BoolUnit': |
| 264 | return randomBoolean(); |
| 265 | case 'NumUnit': |
| 266 | return randomWholeNumber(); |
| 267 | case 'StringUnit': |
| 268 | return randomString(); |
| 269 | case 'ListUnit': |
| 270 | return randomArray(maxLength); |
| 271 | case 'DictUnit': |
| 272 | return randomDictObject(nestingLvl, maxKeys); |
| 273 | case 'Action': |
| 274 | case 'GenericUnit': |
| 275 | return randomValue(nestingLvl); |
| 276 | } |
| 277 | } |
| 278 | |
| 279 | export function unitsDefaultValue<T extends UnitBase<any>>( |
| 280 | unit: (new (config?: UnitConfig<any>) => T) | T |