No-Copy Regression Test
Scope
- Quick regression test plan to verify expected no-copy object behavior
Set-up
Environment
TBD
Other
- User A has in his inventory all Object types at least one (no-copy) version
- You can get no-copy object if the it was shared by a previous owner that didn't want the next owner to have copy permissions.
- Object Types:
- Body Part:
- Shape
- Skin
- Hair
- Eyes
- Clothes:
- Shirt
- Pants
- Shoes
- Socks
- Jacket
- Skirt
- Gloves
- Undershirt
- Alpha
- Tattoo
- Physics
- Gesture
- Notecard
- Script
- Image
- Sound
- Animation
- Model
- Body Part:
Test Steps
Regression Tests
For each (no-copy) Object Type verify that:
- Using (wearing, playing, display) it in-world behaves/displays as expected
- Upon restart of the Viewer it still persists in the inventory
- Upon restart of the Viewer after clear cache it still persists in the inventory
- Is searchable on the Viewer
- When rezzing inworld (if applicable) it gets removed from the inventory and doesn't copy
- You are not able to run operations that can copy the no-copy object
- When sharing the (no-copy) it gets removed from the inventory and transferred to the new owner
- Move between inventory folders and back again, verify that there is no duplication of disappearance
- Add no-copy objects as inventory in objects
Functional Tests
Permissions Basics
- Create 6 prims and rename each: "Trans", "Copy/Trans", "Mod/Trans", "Mod/Copy/Trans", "Copy", "Mod/Copy"
- For each prims, right-click and change properties
- On the "Trans" object, under Next Owner Can: Verify "Resell/GiveAway" is Ticked and Greyed out, Close the window
- On the "Copy/Trans" object, under Next Owner Can: Tick the "Copy" Checkbox and Leave the "Resell/GiveAway" Ticked, Close the window.
- On the "Mod/Trans" object, under Next Owner Can: Tick the "Modify" Checkbox and Leave the "Resell/GiveAway" Ticked, Close the window.
- On the "Mod/Copy/Trans" object, under Next Owner Can: Tick the "Modify" and "Copy" Checkboxes and Leave the "Resell/GiveAway" Ticked, Close the window
- On the "Copy" object, under Next Owner Can: Tick the "Copy" Checkbox and UNTICK the "Resell/GiveAway" Tickbox, Close the window.
- On the "Mod/Copy" object, under Next Owner Can: Tick the "Modify" and "Copy" Checkboxes and UNTICK the "Resell/GiveAway" Tickbox, Close the window.
- Drag the Items over User B:'s avatar, User B accepts all of them and verifies the following
- mod/copy has (no transfer) after it
- copy has (no modify) (no transfer) after it
- mod/copy/trans has nothing after it as it has all permissions
- mod/trans has (no copy) after it
- copy/trans has (no modify) after it
- trans has (no copy) (no modify) after it
For Sale Permissions
- Rez 2 prims and rename each "SaleOrig" and "SaleCopy"
- In their properties
- On the "SaleOrig" object, under Mark Item: Tick the "For Sale" Checkbox and Click the "Original" marker and Set the Price to 0, Close the window.
- On the "SaleCopy" object, under Mark Item: Tick the "For Sale" Checkbox and Click the "Copy" marker and Set the Price to 0 and under Next Owner Can: Tick the "Copy" Checkbox and Leave the "Resell/GiveAway" Ticked
- Drag the Items over User B:'s avatar, User B accepts all of them and verifies the following
- User B confirms the received items and rezzes both on the ground
- User A clicks on "SaleOrig" object
- User A cannot buy multiple copies
- User A clicks on "SaleCopy" object
- User A can buy multiple copies
Adding objects in Group Notices
- Only objects with transfer permissions can be added to notices (copy)
- Only objects with transfer permissions can be added to notices (no-copy)
Adding objects in IMs
- Only objects with transfer permissions can be added to IMs (copy)
- Only objects with transfer permissions can be added to IMs (no-copy)
Adding objects in Notecards
- Only objects with transfer permissions can be added to Notecards (copy)
- Only objects with transfer permissions can be added to Notecards (no-copy)
LSL Inventory Tests
- llAllowInventoryDrop
- llGiveInventory
default { state_entry() { llAllowInventoryDrop(TRUE); } }
//llGiveInventory default { state_entry() { llSay(0, "Hello, Avatar!"); integer allowdrop = TRUE; llAllowInventoryDrop(allowdrop); llSay(0, "llAllowInventoryDrop is "+(string)allowdrop); } touch_start(integer total_number) { key destination = "..."; llGiveInventory(destination, "Object"); } changed(integer change) { if (change == CHANGED_INVENTORY) { llSay(0, "CHANGED_INVENTORY"); } else if (change == CHANGED_ALLOWED_DROP) { llSay(0, "CHANGED_ALLOWED_DROP"); } } }
Adhoc No-Copy Tests
Derived from Adhoc Inventory Perm Test
- User A drags no-copy object on User B
- User A detach no-copy object while flying off the region
- User A tries to rez no-copy object on a busy region multiple times
- User A puts no-copy object in a folder and tries to rez the folder
- User A puts no-copy object in a folder and tries to share the folder
- User A puts no-copy into an attachment
- User A puts no-copy for sale
- User A links no-copy object to a full perm object and tries to copy it
- User A tries to copy a new no-copy object that hasn't been rezzed yet
- User A wears no-copy object in multiple outfits
Pass/Fail Criteria
- Passes if
- e.g. No unexpected behaviors are observed
- Fails if
- e.g. Expected behaviors are broken
- e.g. A bug is detected that was not accounted for by this test plan
Tear Down
TBD