@quenty/adorneeutils 3.4.0 → 3.6.0
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.
- package/CHANGELOG.md +10 -0
- package/package.json +3 -2
- package/src/Shared/AdorneeUtils.lua +32 -0
- package/src/Shared/AdorneeUtils.spec.lua +141 -87
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [3.6.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/adorneeutils@3.5.0...@quenty/adorneeutils@3.6.0) (2026-09-02)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **adorneeutils:** Add AdorneeUtils.setBoundingBoxCFrame ([d4b0fe8](https://github.com/Quenty/NevermoreEngine/commit/d4b0fe8f04b9e5ce26de76c47e387e6031ad87ec))
|
|
11
|
+
|
|
12
|
+
# [3.5.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/adorneeutils@3.4.0...@quenty/adorneeutils@3.5.0) (2026-08-28)
|
|
13
|
+
|
|
14
|
+
**Note:** Version bump only for package @quenty/adorneeutils
|
|
15
|
+
|
|
6
16
|
# [3.4.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/adorneeutils@3.3.6...@quenty/adorneeutils@3.4.0) (2026-08-28)
|
|
7
17
|
|
|
8
18
|
**Note:** Version bump only for package @quenty/adorneeutils
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/adorneeutils",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.0",
|
|
4
4
|
"description": "AdorneeUtils - Generic adornee functions to make attaching to objects in Roblox easier.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Roblox",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"preinstall": "npx only-allow pnpm"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
+
"@quenty/jestutils": "1.1.0",
|
|
28
29
|
"@quenty/loader": "10.11.1",
|
|
29
30
|
"@quenty/maid": "3.12.0",
|
|
30
31
|
"@quenty/nevermore-test-runner": "1.6.0",
|
|
@@ -36,5 +37,5 @@
|
|
|
36
37
|
"publishConfig": {
|
|
37
38
|
"access": "public"
|
|
38
39
|
},
|
|
39
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "278f4ca25486a8ba0601704b27a11da8c77499c9"
|
|
40
41
|
}
|
|
@@ -69,6 +69,38 @@ function AdorneeUtils.getBoundingBox(adornee: Instance): (CFrame?, Vector3?)
|
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
+
--[=[
|
|
73
|
+
Moves the adornee so its bounding box sits at the given cframe, keeping every part where it
|
|
74
|
+
sits relative to the others.
|
|
75
|
+
|
|
76
|
+
This is the counterpart to [AdorneeUtils.getBoundingBox], and is not the same as `PivotTo`,
|
|
77
|
+
which moves the adornee by its pivot rather than by the center of its bounds.
|
|
78
|
+
|
|
79
|
+
@param adornee Instance
|
|
80
|
+
@param cframe CFrame -- New bounding box cframe
|
|
81
|
+
@return boolean -- False when the adornee has no bounding box to move
|
|
82
|
+
]=]
|
|
83
|
+
function AdorneeUtils.setBoundingBoxCFrame(adornee: Instance, cframe: CFrame): boolean
|
|
84
|
+
assert(typeof(adornee) == "Instance", "Adornee must by of type 'Instance'")
|
|
85
|
+
assert(typeof(cframe) == "CFrame", "Bad cframe")
|
|
86
|
+
|
|
87
|
+
local bbCFrame = AdorneeUtils.getBoundingBox(adornee)
|
|
88
|
+
if not bbCFrame then
|
|
89
|
+
return false
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
local relativeCFrames: { [BasePart]: CFrame } = {}
|
|
93
|
+
for _, part in AdorneeUtils.getParts(adornee) do
|
|
94
|
+
relativeCFrames[part] = bbCFrame:ToObjectSpace(part.CFrame)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
for part, relativeCFrame in relativeCFrames do
|
|
98
|
+
part.CFrame = cframe:ToWorldSpace(relativeCFrame)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
return true
|
|
102
|
+
end
|
|
103
|
+
|
|
72
104
|
--[=[
|
|
73
105
|
Returns whether a part is a part of an adornee
|
|
74
106
|
@param adornee Instance
|
|
@@ -7,6 +7,7 @@ local require = require(script.Parent.loader).load(script)
|
|
|
7
7
|
|
|
8
8
|
local AdorneeUtils = require("AdorneeUtils")
|
|
9
9
|
local Jest = require("Jest")
|
|
10
|
+
local JestUtils = require("JestUtils")
|
|
10
11
|
local Maid = require("Maid")
|
|
11
12
|
|
|
12
13
|
local describe = Jest.Globals.describe
|
|
@@ -44,7 +45,7 @@ type Controller = {
|
|
|
44
45
|
newHandlelessTool: () -> (Tool, BasePart),
|
|
45
46
|
newAccessory: () -> (Accessory, BasePart),
|
|
46
47
|
newClothing: () -> (Clothing, BasePart),
|
|
47
|
-
|
|
48
|
+
Destroy: (self: Controller) -> (),
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
local function setup(): Controller
|
|
@@ -161,11 +162,13 @@ local function setup(): Controller
|
|
|
161
162
|
return clothing, part
|
|
162
163
|
end,
|
|
163
164
|
|
|
164
|
-
|
|
165
|
+
Destroy = function(_self)
|
|
165
166
|
maid:DoCleaning()
|
|
166
167
|
end,
|
|
167
168
|
}
|
|
168
169
|
|
|
170
|
+
maid:GiveTask(JestUtils.afterThis(controller))
|
|
171
|
+
|
|
169
172
|
return controller
|
|
170
173
|
end
|
|
171
174
|
|
|
@@ -176,7 +179,7 @@ describe("Tool inheriting from Model", function()
|
|
|
176
179
|
|
|
177
180
|
expect(tool:IsA("Model")).toEqual(true)
|
|
178
181
|
|
|
179
|
-
controller
|
|
182
|
+
controller:Destroy()
|
|
180
183
|
end)
|
|
181
184
|
|
|
182
185
|
it("adorns to the handle rather than the model bounding box", function()
|
|
@@ -189,7 +192,7 @@ describe("Tool inheriting from Model", function()
|
|
|
189
192
|
expect(AdorneeUtils.getAlignedSize(tool)).toEqual(handle.Size)
|
|
190
193
|
expect(AdorneeUtils.getRenderAdornee(tool)).toEqual(handle)
|
|
191
194
|
|
|
192
|
-
controller
|
|
195
|
+
controller:Destroy()
|
|
193
196
|
end)
|
|
194
197
|
|
|
195
198
|
it("does not fall back to another part when the tool has no handle", function()
|
|
@@ -202,7 +205,7 @@ describe("Tool inheriting from Model", function()
|
|
|
202
205
|
expect(AdorneeUtils.getAlignedSize(tool)).toBeNil()
|
|
203
206
|
expect(AdorneeUtils.getRenderAdornee(tool)).toBeNil()
|
|
204
207
|
|
|
205
|
-
controller
|
|
208
|
+
controller:Destroy()
|
|
206
209
|
end)
|
|
207
210
|
|
|
208
211
|
it("adorns to the handle even when the tool has a primary part", function()
|
|
@@ -212,7 +215,7 @@ describe("Tool inheriting from Model", function()
|
|
|
212
215
|
|
|
213
216
|
expect(AdorneeUtils.getPart(tool)).toEqual(handle)
|
|
214
217
|
|
|
215
|
-
controller
|
|
218
|
+
controller:Destroy()
|
|
216
219
|
end)
|
|
217
220
|
|
|
218
221
|
it("leaves plain models on the model path", function()
|
|
@@ -223,7 +226,7 @@ describe("Tool inheriting from Model", function()
|
|
|
223
226
|
expect(AdorneeUtils.getAlignedSize(model)).toEqual(MODEL_BOUNDING_BOX_SIZE)
|
|
224
227
|
expect(AdorneeUtils.getRenderAdornee(model)).toEqual(model)
|
|
225
228
|
|
|
226
|
-
controller
|
|
229
|
+
controller:Destroy()
|
|
227
230
|
end)
|
|
228
231
|
end)
|
|
229
232
|
|
|
@@ -234,7 +237,7 @@ describe("AdorneeUtils.getCenter", function()
|
|
|
234
237
|
|
|
235
238
|
expect(AdorneeUtils.getCenter(part)).toEqual(Vector3.new(1, 2, 3))
|
|
236
239
|
|
|
237
|
-
controller
|
|
240
|
+
controller:Destroy()
|
|
238
241
|
end)
|
|
239
242
|
|
|
240
243
|
it("returns the bounding box center of a model", function()
|
|
@@ -243,7 +246,7 @@ describe("AdorneeUtils.getCenter", function()
|
|
|
243
246
|
|
|
244
247
|
expect(AdorneeUtils.getCenter(model)).toEqual(MODEL_BOUNDING_BOX_CFRAME.Position)
|
|
245
248
|
|
|
246
|
-
controller
|
|
249
|
+
controller:Destroy()
|
|
247
250
|
end)
|
|
248
251
|
|
|
249
252
|
it("returns the world position of an attachment", function()
|
|
@@ -253,7 +256,7 @@ describe("AdorneeUtils.getCenter", function()
|
|
|
253
256
|
|
|
254
257
|
expect(AdorneeUtils.getCenter(attachment)).toEqual(Vector3.new(10, 1, 0))
|
|
255
258
|
|
|
256
|
-
controller
|
|
259
|
+
controller:Destroy()
|
|
257
260
|
end)
|
|
258
261
|
|
|
259
262
|
it("returns the root part position of a humanoid", function()
|
|
@@ -262,7 +265,7 @@ describe("AdorneeUtils.getCenter", function()
|
|
|
262
265
|
|
|
263
266
|
expect(AdorneeUtils.getCenter(humanoid)).toEqual(ROOT_PART_CFRAME.Position)
|
|
264
267
|
|
|
265
|
-
controller
|
|
268
|
+
controller:Destroy()
|
|
266
269
|
end)
|
|
267
270
|
|
|
268
271
|
it("returns nil for a humanoid with no root part", function()
|
|
@@ -271,7 +274,7 @@ describe("AdorneeUtils.getCenter", function()
|
|
|
271
274
|
|
|
272
275
|
expect(AdorneeUtils.getCenter(humanoid)).toBeNil()
|
|
273
276
|
|
|
274
|
-
controller
|
|
277
|
+
controller:Destroy()
|
|
275
278
|
end)
|
|
276
279
|
|
|
277
280
|
it("returns the handle position of an accessory", function()
|
|
@@ -280,7 +283,7 @@ describe("AdorneeUtils.getCenter", function()
|
|
|
280
283
|
|
|
281
284
|
expect(AdorneeUtils.getCenter(accessory)).toEqual(ACCESSORY_HANDLE_CFRAME.Position)
|
|
282
285
|
|
|
283
|
-
controller
|
|
286
|
+
controller:Destroy()
|
|
284
287
|
end)
|
|
285
288
|
|
|
286
289
|
it("returns nil for an accessory with no part", function()
|
|
@@ -290,7 +293,7 @@ describe("AdorneeUtils.getCenter", function()
|
|
|
290
293
|
expect(AdorneeUtils.getCenter(accessory)).toBeNil()
|
|
291
294
|
|
|
292
295
|
accessory:Destroy()
|
|
293
|
-
controller
|
|
296
|
+
controller:Destroy()
|
|
294
297
|
end)
|
|
295
298
|
|
|
296
299
|
it("returns the part position of clothing", function()
|
|
@@ -299,7 +302,7 @@ describe("AdorneeUtils.getCenter", function()
|
|
|
299
302
|
|
|
300
303
|
expect(AdorneeUtils.getCenter(clothing)).toEqual(CLOTHING_PART_CFRAME.Position)
|
|
301
304
|
|
|
302
|
-
controller
|
|
305
|
+
controller:Destroy()
|
|
303
306
|
end)
|
|
304
307
|
|
|
305
308
|
it("returns the handle position of a tool", function()
|
|
@@ -308,7 +311,7 @@ describe("AdorneeUtils.getCenter", function()
|
|
|
308
311
|
|
|
309
312
|
expect(AdorneeUtils.getCenter(tool)).toEqual(HANDLE_CFRAME.Position)
|
|
310
313
|
|
|
311
|
-
controller
|
|
314
|
+
controller:Destroy()
|
|
312
315
|
end)
|
|
313
316
|
|
|
314
317
|
it("returns nil when a tool's handle is not a base part", function()
|
|
@@ -321,7 +324,7 @@ describe("AdorneeUtils.getCenter", function()
|
|
|
321
324
|
|
|
322
325
|
expect(AdorneeUtils.getCenter(tool)).toBeNil()
|
|
323
326
|
|
|
324
|
-
controller
|
|
327
|
+
controller:Destroy()
|
|
325
328
|
end)
|
|
326
329
|
|
|
327
330
|
it("returns nil for an unsupported adornee", function()
|
|
@@ -330,7 +333,7 @@ describe("AdorneeUtils.getCenter", function()
|
|
|
330
333
|
|
|
331
334
|
expect(AdorneeUtils.getCenter(folder)).toBeNil()
|
|
332
335
|
|
|
333
|
-
controller
|
|
336
|
+
controller:Destroy()
|
|
334
337
|
end)
|
|
335
338
|
|
|
336
339
|
it("throws for a non-instance", function()
|
|
@@ -354,7 +357,7 @@ describe("AdorneeUtils.getBoundingBox", function()
|
|
|
354
357
|
expect(cframe).toEqual(MODEL_BOUNDING_BOX_CFRAME)
|
|
355
358
|
expect(size).toEqual(MODEL_BOUNDING_BOX_SIZE)
|
|
356
359
|
|
|
357
|
-
controller
|
|
360
|
+
controller:Destroy()
|
|
358
361
|
end)
|
|
359
362
|
|
|
360
363
|
it("returns a zero sized box at an attachment's world cframe", function()
|
|
@@ -367,7 +370,7 @@ describe("AdorneeUtils.getBoundingBox", function()
|
|
|
367
370
|
expect(cframe).toEqual(CFrame.new(10, 1, 0))
|
|
368
371
|
expect(size).toEqual(Vector3.zero)
|
|
369
372
|
|
|
370
|
-
controller
|
|
373
|
+
controller:Destroy()
|
|
371
374
|
end)
|
|
372
375
|
|
|
373
376
|
it("returns the cframe and size of a base part", function()
|
|
@@ -379,7 +382,7 @@ describe("AdorneeUtils.getBoundingBox", function()
|
|
|
379
382
|
expect(cframe).toEqual(CFrame.new(1, 2, 3))
|
|
380
383
|
expect(size).toEqual(Vector3.new(4, 1, 2))
|
|
381
384
|
|
|
382
|
-
controller
|
|
385
|
+
controller:Destroy()
|
|
383
386
|
end)
|
|
384
387
|
|
|
385
388
|
it("returns the handle box of a tool rather than its model bounding box", function()
|
|
@@ -396,7 +399,7 @@ describe("AdorneeUtils.getBoundingBox", function()
|
|
|
396
399
|
expect(cframe).toEqual(HANDLE_CFRAME)
|
|
397
400
|
expect(size).toEqual(HANDLE_SIZE)
|
|
398
401
|
|
|
399
|
-
controller
|
|
402
|
+
controller:Destroy()
|
|
400
403
|
end)
|
|
401
404
|
|
|
402
405
|
it("returns nil for a tool with no handle", function()
|
|
@@ -408,7 +411,7 @@ describe("AdorneeUtils.getBoundingBox", function()
|
|
|
408
411
|
expect(cframe).toBeNil()
|
|
409
412
|
expect(size).toBeNil()
|
|
410
413
|
|
|
411
|
-
controller
|
|
414
|
+
controller:Destroy()
|
|
412
415
|
end)
|
|
413
416
|
|
|
414
417
|
it("returns the root part cframe and the character size for a humanoid", function()
|
|
@@ -420,7 +423,7 @@ describe("AdorneeUtils.getBoundingBox", function()
|
|
|
420
423
|
expect(cframe).toEqual(ROOT_PART_CFRAME)
|
|
421
424
|
expect(size).toEqual(CHARACTER_BOUNDING_BOX_SIZE)
|
|
422
425
|
|
|
423
|
-
controller
|
|
426
|
+
controller:Destroy()
|
|
424
427
|
end)
|
|
425
428
|
|
|
426
429
|
it("returns nil for an unsupported adornee", function()
|
|
@@ -432,7 +435,58 @@ describe("AdorneeUtils.getBoundingBox", function()
|
|
|
432
435
|
expect(cframe).toBeNil()
|
|
433
436
|
expect(size).toBeNil()
|
|
434
437
|
|
|
435
|
-
controller
|
|
438
|
+
controller:Destroy()
|
|
439
|
+
end)
|
|
440
|
+
end)
|
|
441
|
+
|
|
442
|
+
describe("AdorneeUtils.setBoundingBoxCFrame", function()
|
|
443
|
+
it("puts the bounding box where it was asked to go", function()
|
|
444
|
+
local controller = setup()
|
|
445
|
+
local model = controller.newModel()
|
|
446
|
+
|
|
447
|
+
local target = CFrame.new(20, 8, -4)
|
|
448
|
+
local moved = AdorneeUtils.setBoundingBoxCFrame(model, target)
|
|
449
|
+
|
|
450
|
+
local cframe = AdorneeUtils.getBoundingBox(model)
|
|
451
|
+
|
|
452
|
+
expect(moved).toBe(true)
|
|
453
|
+
expect(cframe).toEqual(target)
|
|
454
|
+
|
|
455
|
+
controller:Destroy()
|
|
456
|
+
end)
|
|
457
|
+
|
|
458
|
+
it("keeps parts where they sit relative to each other", function()
|
|
459
|
+
local controller = setup()
|
|
460
|
+
local model, first, second = controller.newModel()
|
|
461
|
+
|
|
462
|
+
local offset = first.CFrame:ToObjectSpace(second.CFrame)
|
|
463
|
+
|
|
464
|
+
AdorneeUtils.setBoundingBoxCFrame(model, CFrame.Angles(0, math.pi / 2, 0) + Vector3.new(20, 8, -4))
|
|
465
|
+
|
|
466
|
+
expect(first.CFrame:ToObjectSpace(second.CFrame)).toEqual(offset)
|
|
467
|
+
|
|
468
|
+
controller:Destroy()
|
|
469
|
+
end)
|
|
470
|
+
|
|
471
|
+
it("moves a lone part", function()
|
|
472
|
+
local controller = setup()
|
|
473
|
+
local part = controller.newPart(Vector3.new(4, 1, 2), CFrame.new(1, 2, 3))
|
|
474
|
+
|
|
475
|
+
local moved = AdorneeUtils.setBoundingBoxCFrame(part, CFrame.new(7, 7, 7))
|
|
476
|
+
|
|
477
|
+
expect(moved).toBe(true)
|
|
478
|
+
expect(part.CFrame).toEqual(CFrame.new(7, 7, 7))
|
|
479
|
+
|
|
480
|
+
controller:Destroy()
|
|
481
|
+
end)
|
|
482
|
+
|
|
483
|
+
it("reports nothing moved when the adornee has no parts", function()
|
|
484
|
+
local controller = setup()
|
|
485
|
+
local folder = controller.newFolder()
|
|
486
|
+
|
|
487
|
+
expect(AdorneeUtils.setBoundingBoxCFrame(folder, CFrame.new(1, 2, 3))).toBe(false)
|
|
488
|
+
|
|
489
|
+
controller:Destroy()
|
|
436
490
|
end)
|
|
437
491
|
end)
|
|
438
492
|
|
|
@@ -443,7 +497,7 @@ describe("AdorneeUtils.isPartOfAdornee", function()
|
|
|
443
497
|
|
|
444
498
|
expect(AdorneeUtils.isPartOfAdornee(part, part)).toEqual(true)
|
|
445
499
|
|
|
446
|
-
controller
|
|
500
|
+
controller:Destroy()
|
|
447
501
|
end)
|
|
448
502
|
|
|
449
503
|
it("returns true for a descendant part", function()
|
|
@@ -452,7 +506,7 @@ describe("AdorneeUtils.isPartOfAdornee", function()
|
|
|
452
506
|
|
|
453
507
|
expect(AdorneeUtils.isPartOfAdornee(model, first)).toEqual(true)
|
|
454
508
|
|
|
455
|
-
controller
|
|
509
|
+
controller:Destroy()
|
|
456
510
|
end)
|
|
457
511
|
|
|
458
512
|
it("returns true for a deeply nested part", function()
|
|
@@ -467,7 +521,7 @@ describe("AdorneeUtils.isPartOfAdornee", function()
|
|
|
467
521
|
|
|
468
522
|
expect(AdorneeUtils.isPartOfAdornee(model, nested)).toEqual(true)
|
|
469
523
|
|
|
470
|
-
controller
|
|
524
|
+
controller:Destroy()
|
|
471
525
|
end)
|
|
472
526
|
|
|
473
527
|
it("returns false for an unrelated part", function()
|
|
@@ -477,7 +531,7 @@ describe("AdorneeUtils.isPartOfAdornee", function()
|
|
|
477
531
|
|
|
478
532
|
expect(AdorneeUtils.isPartOfAdornee(model, other)).toEqual(false)
|
|
479
533
|
|
|
480
|
-
controller
|
|
534
|
+
controller:Destroy()
|
|
481
535
|
end)
|
|
482
536
|
|
|
483
537
|
it("returns true for a part of the humanoid's character", function()
|
|
@@ -486,7 +540,7 @@ describe("AdorneeUtils.isPartOfAdornee", function()
|
|
|
486
540
|
|
|
487
541
|
expect(AdorneeUtils.isPartOfAdornee(humanoid, rootPart)).toEqual(true)
|
|
488
542
|
|
|
489
|
-
controller
|
|
543
|
+
controller:Destroy()
|
|
490
544
|
end)
|
|
491
545
|
|
|
492
546
|
it("returns false for a part outside the humanoid's character", function()
|
|
@@ -496,7 +550,7 @@ describe("AdorneeUtils.isPartOfAdornee", function()
|
|
|
496
550
|
|
|
497
551
|
expect(AdorneeUtils.isPartOfAdornee(humanoid, other)).toEqual(false)
|
|
498
552
|
|
|
499
|
-
controller
|
|
553
|
+
controller:Destroy()
|
|
500
554
|
end)
|
|
501
555
|
|
|
502
556
|
it("returns false for a humanoid with no parent", function()
|
|
@@ -506,7 +560,7 @@ describe("AdorneeUtils.isPartOfAdornee", function()
|
|
|
506
560
|
|
|
507
561
|
expect(AdorneeUtils.isPartOfAdornee(humanoid, part)).toEqual(false)
|
|
508
562
|
|
|
509
|
-
controller
|
|
563
|
+
controller:Destroy()
|
|
510
564
|
end)
|
|
511
565
|
|
|
512
566
|
it("returns true for the parts of a tool", function()
|
|
@@ -516,7 +570,7 @@ describe("AdorneeUtils.isPartOfAdornee", function()
|
|
|
516
570
|
expect(AdorneeUtils.isPartOfAdornee(tool, handle)).toEqual(true)
|
|
517
571
|
expect(AdorneeUtils.isPartOfAdornee(tool, blade)).toEqual(true)
|
|
518
572
|
|
|
519
|
-
controller
|
|
573
|
+
controller:Destroy()
|
|
520
574
|
end)
|
|
521
575
|
|
|
522
576
|
it("throws for a bad part", function()
|
|
@@ -532,7 +586,7 @@ describe("AdorneeUtils.isPartOfAdornee", function()
|
|
|
532
586
|
AdorneeUtils.isPartOfAdornee(part, folder :: any)
|
|
533
587
|
end).toThrow()
|
|
534
588
|
|
|
535
|
-
controller
|
|
589
|
+
controller:Destroy()
|
|
536
590
|
end)
|
|
537
591
|
end)
|
|
538
592
|
|
|
@@ -543,7 +597,7 @@ describe("AdorneeUtils.getParts", function()
|
|
|
543
597
|
|
|
544
598
|
expect(AdorneeUtils.getParts(part)).toEqual({ part })
|
|
545
599
|
|
|
546
|
-
controller
|
|
600
|
+
controller:Destroy()
|
|
547
601
|
end)
|
|
548
602
|
|
|
549
603
|
it("includes the descendants of a base part", function()
|
|
@@ -554,7 +608,7 @@ describe("AdorneeUtils.getParts", function()
|
|
|
554
608
|
|
|
555
609
|
expect(AdorneeUtils.getParts(part)).toEqual({ part, child })
|
|
556
610
|
|
|
557
|
-
controller
|
|
611
|
+
controller:Destroy()
|
|
558
612
|
end)
|
|
559
613
|
|
|
560
614
|
it("returns every part of a model", function()
|
|
@@ -563,7 +617,7 @@ describe("AdorneeUtils.getParts", function()
|
|
|
563
617
|
|
|
564
618
|
expect(AdorneeUtils.getParts(model)).toEqual({ first, second })
|
|
565
619
|
|
|
566
|
-
controller
|
|
620
|
+
controller:Destroy()
|
|
567
621
|
end)
|
|
568
622
|
|
|
569
623
|
it("returns the nested parts of a model", function()
|
|
@@ -578,7 +632,7 @@ describe("AdorneeUtils.getParts", function()
|
|
|
578
632
|
|
|
579
633
|
expect(AdorneeUtils.getParts(model)).toEqual({ nested })
|
|
580
634
|
|
|
581
|
-
controller
|
|
635
|
+
controller:Destroy()
|
|
582
636
|
end)
|
|
583
637
|
|
|
584
638
|
it("returns the character's parts for a humanoid", function()
|
|
@@ -590,7 +644,7 @@ describe("AdorneeUtils.getParts", function()
|
|
|
590
644
|
expect(#parts).toEqual(2)
|
|
591
645
|
expect(parts[1]).toEqual(rootPart)
|
|
592
646
|
|
|
593
|
-
controller
|
|
647
|
+
controller:Destroy()
|
|
594
648
|
end)
|
|
595
649
|
|
|
596
650
|
it("returns an empty list for a humanoid with no parent", function()
|
|
@@ -599,7 +653,7 @@ describe("AdorneeUtils.getParts", function()
|
|
|
599
653
|
|
|
600
654
|
expect(AdorneeUtils.getParts(humanoid)).toEqual({})
|
|
601
655
|
|
|
602
|
-
controller
|
|
656
|
+
controller:Destroy()
|
|
603
657
|
end)
|
|
604
658
|
|
|
605
659
|
it("returns every part of a tool", function()
|
|
@@ -608,7 +662,7 @@ describe("AdorneeUtils.getParts", function()
|
|
|
608
662
|
|
|
609
663
|
expect(AdorneeUtils.getParts(tool)).toEqual({ blade, handle })
|
|
610
664
|
|
|
611
|
-
controller
|
|
665
|
+
controller:Destroy()
|
|
612
666
|
end)
|
|
613
667
|
|
|
614
668
|
it("returns an empty list for an adornee with no parts", function()
|
|
@@ -617,7 +671,7 @@ describe("AdorneeUtils.getParts", function()
|
|
|
617
671
|
|
|
618
672
|
expect(AdorneeUtils.getParts(folder)).toEqual({})
|
|
619
673
|
|
|
620
|
-
controller
|
|
674
|
+
controller:Destroy()
|
|
621
675
|
end)
|
|
622
676
|
|
|
623
677
|
it("throws for a non-instance", function()
|
|
@@ -634,7 +688,7 @@ describe("AdorneeUtils.getAlignedSize", function()
|
|
|
634
688
|
|
|
635
689
|
expect(AdorneeUtils.getAlignedSize(model)).toEqual(MODEL_BOUNDING_BOX_SIZE)
|
|
636
690
|
|
|
637
|
-
controller
|
|
691
|
+
controller:Destroy()
|
|
638
692
|
end)
|
|
639
693
|
|
|
640
694
|
it("returns the character bounding box size for a humanoid", function()
|
|
@@ -643,7 +697,7 @@ describe("AdorneeUtils.getAlignedSize", function()
|
|
|
643
697
|
|
|
644
698
|
expect(AdorneeUtils.getAlignedSize(humanoid)).toEqual(CHARACTER_BOUNDING_BOX_SIZE)
|
|
645
699
|
|
|
646
|
-
controller
|
|
700
|
+
controller:Destroy()
|
|
647
701
|
end)
|
|
648
702
|
|
|
649
703
|
it("returns nil for a humanoid whose parent is not a model", function()
|
|
@@ -653,7 +707,7 @@ describe("AdorneeUtils.getAlignedSize", function()
|
|
|
653
707
|
|
|
654
708
|
expect(AdorneeUtils.getAlignedSize(humanoid)).toBeNil()
|
|
655
709
|
|
|
656
|
-
controller
|
|
710
|
+
controller:Destroy()
|
|
657
711
|
end)
|
|
658
712
|
|
|
659
713
|
it("returns nil for a humanoid with no parent", function()
|
|
@@ -662,7 +716,7 @@ describe("AdorneeUtils.getAlignedSize", function()
|
|
|
662
716
|
|
|
663
717
|
expect(AdorneeUtils.getAlignedSize(humanoid)).toBeNil()
|
|
664
718
|
|
|
665
|
-
controller
|
|
719
|
+
controller:Destroy()
|
|
666
720
|
end)
|
|
667
721
|
|
|
668
722
|
it("returns the size of a base part", function()
|
|
@@ -671,7 +725,7 @@ describe("AdorneeUtils.getAlignedSize", function()
|
|
|
671
725
|
|
|
672
726
|
expect(AdorneeUtils.getAlignedSize(part)).toEqual(Vector3.new(4, 1, 2))
|
|
673
727
|
|
|
674
|
-
controller
|
|
728
|
+
controller:Destroy()
|
|
675
729
|
end)
|
|
676
730
|
|
|
677
731
|
it("returns the ancestor part size for an attachment", function()
|
|
@@ -681,7 +735,7 @@ describe("AdorneeUtils.getAlignedSize", function()
|
|
|
681
735
|
|
|
682
736
|
expect(AdorneeUtils.getAlignedSize(attachment)).toEqual(Vector3.new(4, 1, 2))
|
|
683
737
|
|
|
684
|
-
controller
|
|
738
|
+
controller:Destroy()
|
|
685
739
|
end)
|
|
686
740
|
|
|
687
741
|
it("returns the handle size of a tool", function()
|
|
@@ -690,7 +744,7 @@ describe("AdorneeUtils.getAlignedSize", function()
|
|
|
690
744
|
|
|
691
745
|
expect(AdorneeUtils.getAlignedSize(tool)).toEqual(HANDLE_SIZE)
|
|
692
746
|
|
|
693
|
-
controller
|
|
747
|
+
controller:Destroy()
|
|
694
748
|
end)
|
|
695
749
|
|
|
696
750
|
it("returns nil for a tool with no handle", function()
|
|
@@ -699,7 +753,7 @@ describe("AdorneeUtils.getAlignedSize", function()
|
|
|
699
753
|
|
|
700
754
|
expect(AdorneeUtils.getAlignedSize(tool)).toBeNil()
|
|
701
755
|
|
|
702
|
-
controller
|
|
756
|
+
controller:Destroy()
|
|
703
757
|
end)
|
|
704
758
|
|
|
705
759
|
it("returns nil for an unsupported adornee", function()
|
|
@@ -708,7 +762,7 @@ describe("AdorneeUtils.getAlignedSize", function()
|
|
|
708
762
|
|
|
709
763
|
expect(AdorneeUtils.getAlignedSize(folder)).toBeNil()
|
|
710
764
|
|
|
711
|
-
controller
|
|
765
|
+
controller:Destroy()
|
|
712
766
|
end)
|
|
713
767
|
end)
|
|
714
768
|
|
|
@@ -719,7 +773,7 @@ describe("AdorneeUtils.getPartCFrame", function()
|
|
|
719
773
|
|
|
720
774
|
expect(AdorneeUtils.getPartCFrame(part)).toEqual(CFrame.new(1, 2, 3))
|
|
721
775
|
|
|
722
|
-
controller
|
|
776
|
+
controller:Destroy()
|
|
723
777
|
end)
|
|
724
778
|
|
|
725
779
|
it("returns the handle cframe of a tool", function()
|
|
@@ -728,7 +782,7 @@ describe("AdorneeUtils.getPartCFrame", function()
|
|
|
728
782
|
|
|
729
783
|
expect(AdorneeUtils.getPartCFrame(tool)).toEqual(HANDLE_CFRAME)
|
|
730
784
|
|
|
731
|
-
controller
|
|
785
|
+
controller:Destroy()
|
|
732
786
|
end)
|
|
733
787
|
|
|
734
788
|
it("returns the root part cframe of a humanoid", function()
|
|
@@ -737,7 +791,7 @@ describe("AdorneeUtils.getPartCFrame", function()
|
|
|
737
791
|
|
|
738
792
|
expect(AdorneeUtils.getPartCFrame(humanoid)).toEqual(ROOT_PART_CFRAME)
|
|
739
793
|
|
|
740
|
-
controller
|
|
794
|
+
controller:Destroy()
|
|
741
795
|
end)
|
|
742
796
|
|
|
743
797
|
it("returns nil for an adornee with no part", function()
|
|
@@ -746,7 +800,7 @@ describe("AdorneeUtils.getPartCFrame", function()
|
|
|
746
800
|
|
|
747
801
|
expect(AdorneeUtils.getPartCFrame(folder)).toBeNil()
|
|
748
802
|
|
|
749
|
-
controller
|
|
803
|
+
controller:Destroy()
|
|
750
804
|
end)
|
|
751
805
|
|
|
752
806
|
it("throws for a non-instance", function()
|
|
@@ -763,7 +817,7 @@ describe("AdorneeUtils.getPartPosition", function()
|
|
|
763
817
|
|
|
764
818
|
expect(AdorneeUtils.getPartPosition(part)).toEqual(Vector3.new(1, 2, 3))
|
|
765
819
|
|
|
766
|
-
controller
|
|
820
|
+
controller:Destroy()
|
|
767
821
|
end)
|
|
768
822
|
|
|
769
823
|
it("returns the primary part position of a model", function()
|
|
@@ -773,7 +827,7 @@ describe("AdorneeUtils.getPartPosition", function()
|
|
|
773
827
|
|
|
774
828
|
expect(AdorneeUtils.getPartPosition(model)).toEqual(second.Position)
|
|
775
829
|
|
|
776
|
-
controller
|
|
830
|
+
controller:Destroy()
|
|
777
831
|
end)
|
|
778
832
|
|
|
779
833
|
it("returns the root part position of a humanoid", function()
|
|
@@ -782,7 +836,7 @@ describe("AdorneeUtils.getPartPosition", function()
|
|
|
782
836
|
|
|
783
837
|
expect(AdorneeUtils.getPartPosition(humanoid)).toEqual(ROOT_PART_CFRAME.Position)
|
|
784
838
|
|
|
785
|
-
controller
|
|
839
|
+
controller:Destroy()
|
|
786
840
|
end)
|
|
787
841
|
|
|
788
842
|
it("returns nil for an adornee with no part", function()
|
|
@@ -791,7 +845,7 @@ describe("AdorneeUtils.getPartPosition", function()
|
|
|
791
845
|
|
|
792
846
|
expect(AdorneeUtils.getPartPosition(folder)).toBeNil()
|
|
793
847
|
|
|
794
|
-
controller
|
|
848
|
+
controller:Destroy()
|
|
795
849
|
end)
|
|
796
850
|
|
|
797
851
|
it("throws for a non-instance", function()
|
|
@@ -810,7 +864,7 @@ describe("AdorneeUtils.getPartVelocity", function()
|
|
|
810
864
|
|
|
811
865
|
expect(AdorneeUtils.getPartVelocity(part)).toEqual(Vector3.new(1, 2, 3))
|
|
812
866
|
|
|
813
|
-
controller
|
|
867
|
+
controller:Destroy()
|
|
814
868
|
end)
|
|
815
869
|
|
|
816
870
|
it("returns zero for an anchored part", function()
|
|
@@ -819,7 +873,7 @@ describe("AdorneeUtils.getPartVelocity", function()
|
|
|
819
873
|
|
|
820
874
|
expect(AdorneeUtils.getPartVelocity(part)).toEqual(Vector3.zero)
|
|
821
875
|
|
|
822
|
-
controller
|
|
876
|
+
controller:Destroy()
|
|
823
877
|
end)
|
|
824
878
|
|
|
825
879
|
it("returns the handle velocity of a tool", function()
|
|
@@ -830,7 +884,7 @@ describe("AdorneeUtils.getPartVelocity", function()
|
|
|
830
884
|
|
|
831
885
|
expect(AdorneeUtils.getPartVelocity(tool)).toEqual(Vector3.new(0, 5, 0))
|
|
832
886
|
|
|
833
|
-
controller
|
|
887
|
+
controller:Destroy()
|
|
834
888
|
end)
|
|
835
889
|
|
|
836
890
|
it("returns nil for an adornee with no part", function()
|
|
@@ -839,7 +893,7 @@ describe("AdorneeUtils.getPartVelocity", function()
|
|
|
839
893
|
|
|
840
894
|
expect(AdorneeUtils.getPartVelocity(folder)).toBeNil()
|
|
841
895
|
|
|
842
|
-
controller
|
|
896
|
+
controller:Destroy()
|
|
843
897
|
end)
|
|
844
898
|
end)
|
|
845
899
|
|
|
@@ -850,7 +904,7 @@ describe("AdorneeUtils.getPart", function()
|
|
|
850
904
|
|
|
851
905
|
expect(AdorneeUtils.getPart(part)).toEqual(part)
|
|
852
906
|
|
|
853
|
-
controller
|
|
907
|
+
controller:Destroy()
|
|
854
908
|
end)
|
|
855
909
|
|
|
856
910
|
it("returns a model's primary part", function()
|
|
@@ -860,7 +914,7 @@ describe("AdorneeUtils.getPart", function()
|
|
|
860
914
|
|
|
861
915
|
expect(AdorneeUtils.getPart(model)).toEqual(second)
|
|
862
916
|
|
|
863
|
-
controller
|
|
917
|
+
controller:Destroy()
|
|
864
918
|
end)
|
|
865
919
|
|
|
866
920
|
it("returns a model's first base part when there is no primary part", function()
|
|
@@ -869,7 +923,7 @@ describe("AdorneeUtils.getPart", function()
|
|
|
869
923
|
|
|
870
924
|
expect(AdorneeUtils.getPart(model)).toEqual(first)
|
|
871
925
|
|
|
872
|
-
controller
|
|
926
|
+
controller:Destroy()
|
|
873
927
|
end)
|
|
874
928
|
|
|
875
929
|
it("returns nil for a model with no parts", function()
|
|
@@ -878,7 +932,7 @@ describe("AdorneeUtils.getPart", function()
|
|
|
878
932
|
|
|
879
933
|
expect(AdorneeUtils.getPart(model)).toBeNil()
|
|
880
934
|
|
|
881
|
-
controller
|
|
935
|
+
controller:Destroy()
|
|
882
936
|
end)
|
|
883
937
|
|
|
884
938
|
it("returns nil for a model whose parts are not direct children", function()
|
|
@@ -893,7 +947,7 @@ describe("AdorneeUtils.getPart", function()
|
|
|
893
947
|
|
|
894
948
|
expect(AdorneeUtils.getPart(model)).toBeNil()
|
|
895
949
|
|
|
896
|
-
controller
|
|
950
|
+
controller:Destroy()
|
|
897
951
|
end)
|
|
898
952
|
|
|
899
953
|
it("returns the ancestor part of an attachment", function()
|
|
@@ -903,7 +957,7 @@ describe("AdorneeUtils.getPart", function()
|
|
|
903
957
|
|
|
904
958
|
expect(AdorneeUtils.getPart(attachment)).toEqual(part)
|
|
905
959
|
|
|
906
|
-
controller
|
|
960
|
+
controller:Destroy()
|
|
907
961
|
end)
|
|
908
962
|
|
|
909
963
|
it("returns nil for an attachment with no ancestor part", function()
|
|
@@ -913,7 +967,7 @@ describe("AdorneeUtils.getPart", function()
|
|
|
913
967
|
|
|
914
968
|
expect(AdorneeUtils.getPart(attachment)).toBeNil()
|
|
915
969
|
|
|
916
|
-
controller
|
|
970
|
+
controller:Destroy()
|
|
917
971
|
end)
|
|
918
972
|
|
|
919
973
|
it("returns the root part of a humanoid", function()
|
|
@@ -922,7 +976,7 @@ describe("AdorneeUtils.getPart", function()
|
|
|
922
976
|
|
|
923
977
|
expect(AdorneeUtils.getPart(humanoid)).toEqual(rootPart)
|
|
924
978
|
|
|
925
|
-
controller
|
|
979
|
+
controller:Destroy()
|
|
926
980
|
end)
|
|
927
981
|
|
|
928
982
|
it("returns nil for a humanoid with no root part", function()
|
|
@@ -931,7 +985,7 @@ describe("AdorneeUtils.getPart", function()
|
|
|
931
985
|
|
|
932
986
|
expect(AdorneeUtils.getPart(humanoid)).toBeNil()
|
|
933
987
|
|
|
934
|
-
controller
|
|
988
|
+
controller:Destroy()
|
|
935
989
|
end)
|
|
936
990
|
|
|
937
991
|
it("returns the handle of an accessory", function()
|
|
@@ -940,7 +994,7 @@ describe("AdorneeUtils.getPart", function()
|
|
|
940
994
|
|
|
941
995
|
expect(AdorneeUtils.getPart(accessory)).toEqual(handle)
|
|
942
996
|
|
|
943
|
-
controller
|
|
997
|
+
controller:Destroy()
|
|
944
998
|
end)
|
|
945
999
|
|
|
946
1000
|
it("returns the part of clothing", function()
|
|
@@ -949,7 +1003,7 @@ describe("AdorneeUtils.getPart", function()
|
|
|
949
1003
|
|
|
950
1004
|
expect(AdorneeUtils.getPart(clothing)).toEqual(part)
|
|
951
1005
|
|
|
952
|
-
controller
|
|
1006
|
+
controller:Destroy()
|
|
953
1007
|
end)
|
|
954
1008
|
|
|
955
1009
|
it("returns the handle of a tool ahead of any other part", function()
|
|
@@ -958,7 +1012,7 @@ describe("AdorneeUtils.getPart", function()
|
|
|
958
1012
|
|
|
959
1013
|
expect(AdorneeUtils.getPart(tool)).toEqual(handle)
|
|
960
1014
|
|
|
961
|
-
controller
|
|
1015
|
+
controller:Destroy()
|
|
962
1016
|
end)
|
|
963
1017
|
|
|
964
1018
|
it("returns nil for a tool with no handle", function()
|
|
@@ -967,7 +1021,7 @@ describe("AdorneeUtils.getPart", function()
|
|
|
967
1021
|
|
|
968
1022
|
expect(AdorneeUtils.getPart(tool)).toBeNil()
|
|
969
1023
|
|
|
970
|
-
controller
|
|
1024
|
+
controller:Destroy()
|
|
971
1025
|
end)
|
|
972
1026
|
|
|
973
1027
|
it("returns nil for an unsupported adornee", function()
|
|
@@ -976,7 +1030,7 @@ describe("AdorneeUtils.getPart", function()
|
|
|
976
1030
|
|
|
977
1031
|
expect(AdorneeUtils.getPart(folder)).toBeNil()
|
|
978
1032
|
|
|
979
|
-
controller
|
|
1033
|
+
controller:Destroy()
|
|
980
1034
|
end)
|
|
981
1035
|
|
|
982
1036
|
it("throws for a non-instance", function()
|
|
@@ -993,7 +1047,7 @@ describe("AdorneeUtils.getRenderAdornee", function()
|
|
|
993
1047
|
|
|
994
1048
|
expect(AdorneeUtils.getRenderAdornee(part)).toEqual(part)
|
|
995
1049
|
|
|
996
|
-
controller
|
|
1050
|
+
controller:Destroy()
|
|
997
1051
|
end)
|
|
998
1052
|
|
|
999
1053
|
it("returns a model itself", function()
|
|
@@ -1002,7 +1056,7 @@ describe("AdorneeUtils.getRenderAdornee", function()
|
|
|
1002
1056
|
|
|
1003
1057
|
expect(AdorneeUtils.getRenderAdornee(model)).toEqual(model)
|
|
1004
1058
|
|
|
1005
|
-
controller
|
|
1059
|
+
controller:Destroy()
|
|
1006
1060
|
end)
|
|
1007
1061
|
|
|
1008
1062
|
it("returns an attachment itself", function()
|
|
@@ -1012,7 +1066,7 @@ describe("AdorneeUtils.getRenderAdornee", function()
|
|
|
1012
1066
|
|
|
1013
1067
|
expect(AdorneeUtils.getRenderAdornee(attachment)).toEqual(attachment)
|
|
1014
1068
|
|
|
1015
|
-
controller
|
|
1069
|
+
controller:Destroy()
|
|
1016
1070
|
end)
|
|
1017
1071
|
|
|
1018
1072
|
it("returns the character of a humanoid", function()
|
|
@@ -1021,7 +1075,7 @@ describe("AdorneeUtils.getRenderAdornee", function()
|
|
|
1021
1075
|
|
|
1022
1076
|
expect(AdorneeUtils.getRenderAdornee(humanoid)).toEqual(character)
|
|
1023
1077
|
|
|
1024
|
-
controller
|
|
1078
|
+
controller:Destroy()
|
|
1025
1079
|
end)
|
|
1026
1080
|
|
|
1027
1081
|
it("returns nil for a humanoid with no parent", function()
|
|
@@ -1030,7 +1084,7 @@ describe("AdorneeUtils.getRenderAdornee", function()
|
|
|
1030
1084
|
|
|
1031
1085
|
expect(AdorneeUtils.getRenderAdornee(humanoid)).toBeNil()
|
|
1032
1086
|
|
|
1033
|
-
controller
|
|
1087
|
+
controller:Destroy()
|
|
1034
1088
|
end)
|
|
1035
1089
|
|
|
1036
1090
|
it("returns the handle of an accessory", function()
|
|
@@ -1039,7 +1093,7 @@ describe("AdorneeUtils.getRenderAdornee", function()
|
|
|
1039
1093
|
|
|
1040
1094
|
expect(AdorneeUtils.getRenderAdornee(accessory)).toEqual(handle)
|
|
1041
1095
|
|
|
1042
|
-
controller
|
|
1096
|
+
controller:Destroy()
|
|
1043
1097
|
end)
|
|
1044
1098
|
|
|
1045
1099
|
it("returns the part of clothing", function()
|
|
@@ -1048,7 +1102,7 @@ describe("AdorneeUtils.getRenderAdornee", function()
|
|
|
1048
1102
|
|
|
1049
1103
|
expect(AdorneeUtils.getRenderAdornee(clothing)).toEqual(part)
|
|
1050
1104
|
|
|
1051
|
-
controller
|
|
1105
|
+
controller:Destroy()
|
|
1052
1106
|
end)
|
|
1053
1107
|
|
|
1054
1108
|
it("returns the handle of a tool rather than the tool", function()
|
|
@@ -1057,7 +1111,7 @@ describe("AdorneeUtils.getRenderAdornee", function()
|
|
|
1057
1111
|
|
|
1058
1112
|
expect(AdorneeUtils.getRenderAdornee(tool)).toEqual(handle)
|
|
1059
1113
|
|
|
1060
|
-
controller
|
|
1114
|
+
controller:Destroy()
|
|
1061
1115
|
end)
|
|
1062
1116
|
|
|
1063
1117
|
it("returns nil for a tool with no handle", function()
|
|
@@ -1066,7 +1120,7 @@ describe("AdorneeUtils.getRenderAdornee", function()
|
|
|
1066
1120
|
|
|
1067
1121
|
expect(AdorneeUtils.getRenderAdornee(tool)).toBeNil()
|
|
1068
1122
|
|
|
1069
|
-
controller
|
|
1123
|
+
controller:Destroy()
|
|
1070
1124
|
end)
|
|
1071
1125
|
|
|
1072
1126
|
it("returns nil for an unsupported adornee", function()
|
|
@@ -1075,7 +1129,7 @@ describe("AdorneeUtils.getRenderAdornee", function()
|
|
|
1075
1129
|
|
|
1076
1130
|
expect(AdorneeUtils.getRenderAdornee(folder)).toBeNil()
|
|
1077
1131
|
|
|
1078
|
-
controller
|
|
1132
|
+
controller:Destroy()
|
|
1079
1133
|
end)
|
|
1080
1134
|
|
|
1081
1135
|
it("throws for a non-instance", function()
|