local o=require("\078\101\120\117\115\085\110\105\116\084\101\115\116\105\110\103")local T=game:GetService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")local m=game:GetService("\072\116\116\112\083\101\114\118\105\099\101")local w=require((T:WaitForChild("\080\114\111\106\101\099\116")):WaitForChild("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101"))local e=w:GetResource("\083\116\097\116\101\046\073\110\118\101\110\116\111\114\121")local C=o.UnitTest:Extend()function C.Setup(o)local T=Instance.new("\070\111\108\100\101\114")local m=Instance.new("\070\111\108\100\101\114")m.Name="\080\108\097\121\101\114\068\097\116\097"m.Parent=T local w=Instance.new("\083\116\114\105\110\103\086\097\108\117\101")w.Name="\073\110\118\101\110\116\111\114\121"w.Value="\091\093"w.Parent=m o.CuT1=e.new(T)o.CuT2=e.new(T)end o:RegisterUnitTest((C.new("\084\101\115\116\065\100\100\073\116\101\109")):SetRun(function(o)o:AssertEquals(o.CuT1:GetItem(1),nil,"\073\116\101\109 \101\120\105\115\116\115\046")o:AssertEquals(o.CuT2:GetItem(1),nil,"\073\116\101\109 \101\120\105\115\116\115\046")o:AssertEquals(o.CuT1:GetNextOpenSlot(),1,"\070\105\114\115\116 \111\112\101\110 \115\108\111\116 \105\115 \105\110\118\097\108\105\100\046")o:AssertEquals(o.CuT2:GetNextOpenSlot(),1,"\070\105\114\115\116 \111\112\101\110 \115\108\111\116 \105\115 \105\110\118\097\108\105\100\046")for T=1,104,1 do o.CuT1:AddItem({Name="\077\111\099\107\073\116\101\109"..tostring(T)})o:AssertEquals(o.CuT1:GetItem(T),{Name="\077\111\099\107\073\116\101\109"..tostring(T)},"\073\116\101\109 \105\110 \115\108\111\116 \105\115 \105\110\118\097\108\105\100\046")o:AssertEquals(o.CuT2:GetItem(T),{Name="\077\111\099\107\073\116\101\109"..tostring(T)},"\073\116\101\109 \105\110 \115\108\111\116 \105\115 \105\110\118\097\108\105\100\046")o:AssertEquals(o.CuT1:GetNextOpenSlot(),T+1,"\078\101\120\116 \111\112\101\110 \115\108\111\116 \105\115 \105\110\118\097\108\105\100\046")o:AssertEquals(o.CuT2:GetNextOpenSlot(),T+1,"\078\101\120\116 \111\112\101\110 \115\108\111\116 \105\115 \105\110\118\097\108\105\100\046")end o.CuT1:AddItem({Name="\077\111\099\107\073\116\101\109\049\048\053"})o:AssertEquals(o.CuT1:GetItem(105),{Name="\077\111\099\107\073\116\101\109\049\048\053"},"\073\116\101\109 \105\110 \115\108\111\116 \105\115 \105\110\118\097\108\105\100\046")o:AssertEquals(o.CuT2:GetItem(105),{Name="\077\111\099\107\073\116\101\109\049\048\053"},"\073\116\101\109 \105\110 \115\108\111\116 \105\115 \105\110\118\097\108\105\100\046")o:AssertEquals(o.CuT1:GetNextOpenSlot(),nil,"\078\101\120\116 \111\112\101\110 \115\108\111\116 \101\120\105\115\116\115\046")o:AssertEquals(o.CuT2:GetNextOpenSlot(),nil,"\078\101\120\116 \111\112\101\110 \115\108\111\116 \101\120\105\115\116\115\046")o:AssertErrors(function()o.CuT1:AddItem({Name="\077\111\099\107\073\116\101\109\049\048\054"})end)end))o:RegisterUnitTest((C.new("\084\101\115\116\083\119\097\112\083\108\111\116\115")):SetRun(function(o)o.CuT1:AddItem({Name="\077\111\099\107\073\116\101\109\049"})o.CuT1:AddItem({Name="\077\111\099\107\073\116\101\109\049"})o.CuT1:AddItem({Name="\077\111\099\107\073\116\101\109\050"})o.CuT1:AddItem({Name="\077\111\099\107\073\116\101\109\050"})o.CuT1:AddItem({Name="\077\111\099\107\073\116\101\109\049"})o.CuT1:SwapSlots(1,3)o:AssertEquals(o.CuT1:GetItem(1),{Name="\077\111\099\107\073\116\101\109\050"},"\083\119\097\112\112\101\100 \105\116\101\109 \105\115 \105\110\099\111\114\114\101\099\116\046")o:AssertEquals(o.CuT1:GetItem(3),{Name="\077\111\099\107\073\116\101\109\049"},"\083\119\097\112\112\101\100 \105\116\101\109 \105\115 \105\110\099\111\114\114\101\099\116\046")o:AssertEquals(#o.CuT1:GetItemSlots("\077\111\099\107\073\116\101\109\049"),3,"\084\111\116\097\108 \115\108\111\116\115 \097\114\101 \105\110\099\111\114\114\101\099\116\046")o:AssertEquals(#o.CuT1:GetItemSlots("\077\111\099\107\073\116\101\109\050"),2,"\084\111\116\097\108 \115\108\111\116\115 \097\114\101 \105\110\099\111\114\114\101\099\116\046")end))o:RegisterUnitTest((C.new("\084\101\115\116\082\101\109\111\118\101\083\108\111\116\115")):SetRun(function(o)o.CuT1:AddItem({Name="\077\111\099\107\073\116\101\109\049"})o.CuT1:AddItem({Name="\077\111\099\107\073\116\101\109\049"})o.CuT1:AddItem({Name="\077\111\099\107\073\116\101\109\050"})o.CuT1:AddItem({Name="\077\111\099\107\073\116\101\109\050"})o.CuT1:AddItem({Name="\077\111\099\107\073\116\101\109\049"})o.CuT1:RemoveSlots({2;4})o:AssertEquals(o.CuT1:GetItem(2),nil,"\082\101\109\111\118\101\100 \105\116\101\109 \101\120\105\115\116\115\046")o:AssertEquals(o.CuT1:GetItem(4),nil,"\082\101\109\111\118\101\100 \105\116\101\109 \101\120\105\115\116\115\046")o:AssertEquals(o.CuT2:GetNextOpenSlot(),2,"\078\101\120\116 \111\112\101\110 \115\108\111\116 \105\115 \105\110\118\097\108\105\100\046")o:AssertEquals(#o.CuT1:GetItemSlots("\077\111\099\107\073\116\101\109\049"),2,"\084\111\116\097\108 \115\108\111\116\115 \097\114\101 \105\110\099\111\114\114\101\099\116\046")o:AssertEquals(#o.CuT1:GetItemSlots("\077\111\099\107\073\116\101\109\050"),1,"\084\111\116\097\108 \115\108\111\116\115 \097\114\101 \105\110\099\111\114\114\101\099\116\046")o.CuT1:RemoveSlot(1)o:AssertEquals(o.CuT1:GetItem(1),nil,"\082\101\109\111\118\101\100 \105\116\101\109 \101\120\105\115\116\115\046")o:AssertEquals(o.CuT2:GetNextOpenSlot(),1,"\078\101\120\116 \111\112\101\110 \115\108\111\116 \105\115 \105\110\118\097\108\105\100\046")o:AssertEquals(#o.CuT1:GetItemSlots("\077\111\099\107\073\116\101\109\049"),1,"\084\111\116\097\108 \115\108\111\116\115 \097\114\101 \105\110\099\111\114\114\101\099\116\046")o:AssertEquals(#o.CuT1:GetItemSlots("\077\111\099\107\073\116\101\109\050"),1,"\084\111\116\097\108 \115\108\111\116\115 \097\114\101 \105\110\099\111\114\114\101\099\116\046")end))o:RegisterUnitTest((C.new("\084\101\115\116\067\097\110\070\105\116\073\110\083\108\111\116")):SetRun(function(o)o.CuT1:AddItem({Name="\086\105\114\116\117\097\108\066\108\111\120\099\111\110\072\101\108\109\101\116"})o.CuT1:AddItem({Name="\086\105\114\116\117\097\108\066\108\111\120\099\111\110\072\101\108\109\101\116"})o.CuT1:AddItem({Name="\086\105\114\116\117\097\108\066\108\111\120\099\111\110\084\111\114\115\111"})o.CuT1:AddItem({Name="\086\105\114\116\117\097\108\066\108\111\120\099\111\110\084\111\114\115\111"})o.CuT1:AddItem({Name="\086\105\114\116\117\097\108\066\108\111\120\099\111\110\072\101\108\109\101\116"})o:AssertTrue(o.CuT1:CanFitInSlot({Name="\085\110\107\110\111\119\110\073\116\101\109"},"\053"),"\085\110\107\110\111\119\110 \105\116\101\109 \099\097\110\'\116 \102\105\116 \105\110 \097 \110\117\109\098\101\114 \115\108\111\116\046")o:AssertTrue(o.CuT1:CanFitInSlot({Name="\085\110\107\110\111\119\110\073\116\101\109"},5),"\085\110\107\110\111\119\110 \105\116\101\109 \099\097\110\'\116 \102\105\116 \105\110 \097 \110\117\109\098\101\114 \115\108\111\116\046")o:AssertFalse(o.CuT1:CanFitInSlot({Name="\085\110\107\110\111\119\110\073\116\101\109"},0),"\085\110\107\110\111\119\110 \105\116\101\109 \099\097\110 \102\105\116 \105\110 \111\117\116 \111\102 \098\111\117\110\100\115 \115\108\111\116\046")o:AssertFalse(o.CuT1:CanFitInSlot({Name="\085\110\107\110\111\119\110\073\116\101\109"},106),"\085\110\107\110\111\119\110 \105\116\101\109 \099\097\110 \102\105\116 \105\110 \111\117\116 \111\102 \098\111\117\110\100\115 \115\108\111\116\046")o:AssertFalse(o.CuT1:CanFitInSlot({Name="\085\110\107\110\111\119\110\073\116\101\109"},5.4),"\085\110\107\110\111\119\110 \105\116\101\109 \099\097\110 \102\105\116 \105\110 \100\101\099\105\109\097\108 \115\108\111\116\046")o:AssertFalse(o.CuT1:CanFitInSlot({Name="\085\110\107\110\111\119\110\073\116\101\109"},"\080\108\097\121\101\114\072\097\116"),"\085\110\107\110\111\119\110 \105\116\101\109 \099\097\110 \102\105\116 \105\110 \115\112\101\099\105\097\108 \115\108\111\116\046")o:AssertFalse(o.CuT1:CanFitInSlot({Name="\085\110\107\110\111\119\110\073\116\101\109"},"\080\108\097\121\101\114\084\111\114\115\111"),"\085\110\107\110\111\119\110 \105\116\101\109 \099\097\110 \102\105\116 \105\110 \115\112\101\099\105\097\108 \115\108\111\116\046")o:AssertTrue(o.CuT1:CanFitInSlot({Name="\086\105\114\116\117\097\108\066\108\111\120\099\111\110\072\101\108\109\101\116"},"\053"),"\075\110\111\119\110 \105\116\101\109 \099\097\110\'\116 \102\105\116 \105\110 \097 \110\117\109\098\101\114 \115\108\111\116\046")o:AssertTrue(o.CuT1:CanFitInSlot({Name="\086\105\114\116\117\097\108\066\108\111\120\099\111\110\072\101\108\109\101\116"},5),"\075\110\111\119\110 \105\116\101\109 \099\097\110\'\116 \102\105\116 \105\110 \097 \110\117\109\098\101\114 \115\108\111\116\046")o:AssertFalse(o.CuT1:CanFitInSlot({Name="\086\105\114\116\117\097\108\066\108\111\120\099\111\110\072\101\108\109\101\116"},0),"\075\110\111\119\110 \105\116\101\109 \099\097\110 \102\105\116 \105\110 \111\117\116 \111\102 \098\111\117\110\100\115 \115\108\111\116\046")o:AssertFalse(o.CuT1:CanFitInSlot({Name="\086\105\114\116\117\097\108\066\108\111\120\099\111\110\072\101\108\109\101\116"},106),"\075\110\111\119\110 \105\116\101\109 \099\097\110 \102\105\116 \105\110 \111\117\116 \111\102 \098\111\117\110\100\115 \115\108\111\116\046")o:AssertFalse(o.CuT1:CanFitInSlot({Name="\086\105\114\116\117\097\108\066\108\111\120\099\111\110\072\101\108\109\101\116"},5.4),"\085\110\107\110\111\119\110 \105\116\101\109 \099\097\110 \102\105\116 \105\110 \100\101\099\105\109\097\108 \115\108\111\116\046")o:AssertTrue(o.CuT1:CanFitInSlot({Name="\086\105\114\116\117\097\108\066\108\111\120\099\111\110\072\101\108\109\101\116"},"\080\108\097\121\101\114\072\097\116"),"\075\110\111\119\110 \105\116\101\109 \099\097\110\'\116 \102\105\116 \105\110 \115\112\101\099\105\097\108 \115\108\111\116\046")o:AssertFalse(o.CuT1:CanFitInSlot({Name="\086\105\114\116\117\097\108\066\108\111\120\099\111\110\072\101\108\109\101\116"},"\080\108\097\121\101\114\084\111\114\115\111"),"\075\110\111\119\110 \105\116\101\109 \099\097\110 \102\105\116 \105\110 \115\112\101\099\105\097\108 \115\108\111\116\046")o.CuT1:SwapSlots(2,"\080\108\097\121\101\114\072\097\116")o:AssertTrue(o.CuT1:CanSwap(3,4),"\067\097\110\'\116 \115\119\097\112 \098\101\116\119\101\101\110 \110\117\109\098\101\114\115\046")o:AssertTrue(o.CuT1:CanSwap(3,10),"\067\097\110\'\116 \115\119\097\112 \098\101\116\119\101\101\110 \110\117\109\098\101\114\115 \119\105\116\104 \111\110\101 \101\109\112\116\121\046")o:AssertTrue(o.CuT1:CanSwap(10,3),"\067\097\110\'\116 \115\119\097\112 \098\101\116\119\101\101\110 \110\117\109\098\101\114\115 \119\105\116\104 \111\110\101 \101\109\112\116\121\046")o:AssertTrue(o.CuT1:CanSwap("\080\108\097\121\101\114\072\097\116",5),"\067\097\110\'\116 \115\119\097\112 \098\101\116\119\101\101\110 \115\097\109\101 \116\121\112\101 \097\110\100 \110\117\109\098\101\114\046")o:AssertTrue(o.CuT1:CanSwap(5,"\080\108\097\121\101\114\072\097\116"),"\067\097\110\'\116 \115\119\097\112 \098\101\116\119\101\101\110 \115\097\109\101 \116\121\112\101 \097\110\100 \110\117\109\098\101\114\046")o:AssertFalse(o.CuT1:CanSwap("\080\108\097\121\101\114\072\097\116",3),"\067\097\110 \115\119\097\112 \098\101\116\119\101\101\110 \115\097\109\101 \116\121\112\101 \097\110\100 \110\117\109\098\101\114\046")o:AssertFalse(o.CuT1:CanSwap(3,"\080\108\097\121\101\114\072\097\116"),"\067\097\110 \115\119\097\112 \098\101\116\119\101\101\110 \115\097\109\101 \116\121\112\101 \097\110\100 \110\117\109\098\101\114\046")o:AssertFalse(o.CuT1:CanSwap("\080\108\097\121\101\114\072\097\116","\080\108\097\121\101\114\084\111\114\115\111"),"\067\097\110 \115\119\097\112 \098\101\116\119\101\101\110 \100\105\102\102\101\114\101\110\116 \116\121\112\101\115\046")end))return true
--[[
TheNexusAvenger

Tests the Inventory class.
--]]

local NexusUnitTesting = require("NexusUnitTesting")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local HttpService = game:GetService("HttpService")

local ReplicatedStorageProject = require(ReplicatedStorage:WaitForChild("Project"):WaitForChild("ReplicatedStorage"))
local Inventory = ReplicatedStorageProject:GetResource("State.Inventory")



--[[
Setups up the test.
--]]
local InventoryTest = NexusUnitTesting.UnitTest:Extend()
function InventoryTest:Setup()
    --Create the mock player.
    local MockPlayer = Instance.new("Folder")
    local PlayerData = Instance.new("Folder")
    PlayerData.Name = "PlayerData"
    PlayerData.Parent = MockPlayer
    local InventoryValue = Instance.new("StringValue")
    InventoryValue.Name = "Inventory"
    InventoryValue.Value = "[]"
    InventoryValue.Parent = PlayerData

    --Create the components under testing.
    self.CuT1 = Inventory.new(MockPlayer)
    self.CuT2 = Inventory.new(MockPlayer)
end

--[[
Tests adding items and reading the inventory.
--]]
NexusUnitTesting:RegisterUnitTest(InventoryTest.new("TestAddItem"):SetRun(function(self)
    --Assert the initial state is correct.
    self:AssertEquals(self.CuT1:GetItem(1),nil,"Item exists.")
    self:AssertEquals(self.CuT2:GetItem(1),nil,"Item exists.")
    self:AssertEquals(self.CuT1:GetNextOpenSlot(),1,"First open slot is invalid.")
    self:AssertEquals(self.CuT2:GetNextOpenSlot(),1,"First open slot is invalid.")

    --Add 104 items.
    for i = 1,104 do
        self.CuT1:AddItem({Name="MockItem"..tostring(i)})
        self:AssertEquals(self.CuT1:GetItem(i),{Name="MockItem"..tostring(i)},"Item in slot is invalid.")
        self:AssertEquals(self.CuT2:GetItem(i),{Name="MockItem"..tostring(i)},"Item in slot is invalid.")
        self:AssertEquals(self.CuT1:GetNextOpenSlot(),i + 1,"Next open slot is invalid.")
        self:AssertEquals(self.CuT2:GetNextOpenSlot(),i + 1,"Next open slot is invalid.")
    end

    --Add a 105th item and assert there is no open slot.
    self.CuT1:AddItem({Name="MockItem105"})
    self:AssertEquals(self.CuT1:GetItem(105),{Name="MockItem105"},"Item in slot is invalid.")
    self:AssertEquals(self.CuT2:GetItem(105),{Name="MockItem105"},"Item in slot is invalid.")
    self:AssertEquals(self.CuT1:GetNextOpenSlot(),nil,"Next open slot exists.")
    self:AssertEquals(self.CuT2:GetNextOpenSlot(),nil,"Next open slot exists.")

    --Assert an error is thrown if there is no empty slot.
    self:AssertErrors(function()
        self.CuT1:AddItem({Name="MockItem106"})
    end)
end))

--[[
Tests swapping slots.
--]]
NexusUnitTesting:RegisterUnitTest(InventoryTest.new("TestSwapSlots"):SetRun(function(self)
    --Add 5 items.
    self.CuT1:AddItem({Name="MockItem1"})
    self.CuT1:AddItem({Name="MockItem1"})
    self.CuT1:AddItem({Name="MockItem2"})
    self.CuT1:AddItem({Name="MockItem2"})
    self.CuT1:AddItem({Name="MockItem1"})

    --Swap slots and assert they change.
    self.CuT1:SwapSlots(1,3)
    self:AssertEquals(self.CuT1:GetItem(1),{Name="MockItem2"},"Swapped item is incorrect.")
    self:AssertEquals(self.CuT1:GetItem(3),{Name="MockItem1"},"Swapped item is incorrect.")
    self:AssertEquals(#self.CuT1:GetItemSlots("MockItem1"),3,"Total slots are incorrect.")
    self:AssertEquals(#self.CuT1:GetItemSlots("MockItem2"),2,"Total slots are incorrect.")
end))

--[[
Tests removing items.
--]]
NexusUnitTesting:RegisterUnitTest(InventoryTest.new("TestRemoveSlots"):SetRun(function(self)
    --Add 5 items.
    self.CuT1:AddItem({Name="MockItem1"})
    self.CuT1:AddItem({Name="MockItem1"})
    self.CuT1:AddItem({Name="MockItem2"})
    self.CuT1:AddItem({Name="MockItem2"})
    self.CuT1:AddItem({Name="MockItem1"})

    --Remove 2 slots and assert they are removed.
    self.CuT1:RemoveSlots({2,4})
    self:AssertEquals(self.CuT1:GetItem(2),nil,"Removed item exists.")
    self:AssertEquals(self.CuT1:GetItem(4),nil,"Removed item exists.")
    self:AssertEquals(self.CuT2:GetNextOpenSlot(),2,"Next open slot is invalid.")
    self:AssertEquals(#self.CuT1:GetItemSlots("MockItem1"),2,"Total slots are incorrect.")
    self:AssertEquals(#self.CuT1:GetItemSlots("MockItem2"),1,"Total slots are incorrect.")

    --Remove 1 slot and assert it is removed.
    self.CuT1:RemoveSlot(1)
    self:AssertEquals(self.CuT1:GetItem(1),nil,"Removed item exists.")
    self:AssertEquals(self.CuT2:GetNextOpenSlot(),1,"Next open slot is invalid.")
    self:AssertEquals(#self.CuT1:GetItemSlots("MockItem1"),1,"Total slots are incorrect.")
    self:AssertEquals(#self.CuT1:GetItemSlots("MockItem2"),1,"Total slots are incorrect.")
end))

--[[
Tests validating slots.
--]]
NexusUnitTesting:RegisterUnitTest(InventoryTest.new("TestCanFitInSlot"):SetRun(function(self)
    --Add 5 items.
    self.CuT1:AddItem({Name="VirtualBloxconHelmet"})
    self.CuT1:AddItem({Name="VirtualBloxconHelmet"})
    self.CuT1:AddItem({Name="VirtualBloxconTorso"})
    self.CuT1:AddItem({Name="VirtualBloxconTorso"})
    self.CuT1:AddItem({Name="VirtualBloxconHelmet"})

    --Test the ability for items to be able to be in slots.
    self:AssertTrue(self.CuT1:CanFitInSlot({Name="UnknownItem"},"5"),"Unknown item can't fit in a number slot.")
    self:AssertTrue(self.CuT1:CanFitInSlot({Name="UnknownItem"},5),"Unknown item can't fit in a number slot.")
    self:AssertFalse(self.CuT1:CanFitInSlot({Name="UnknownItem"},0),"Unknown item can fit in out of bounds slot.")
    self:AssertFalse(self.CuT1:CanFitInSlot({Name="UnknownItem"},106),"Unknown item can fit in out of bounds slot.")
    self:AssertFalse(self.CuT1:CanFitInSlot({Name="UnknownItem"},5.4),"Unknown item can fit in decimal slot.")
    self:AssertFalse(self.CuT1:CanFitInSlot({Name="UnknownItem"},"PlayerHat"),"Unknown item can fit in special slot.")
    self:AssertFalse(self.CuT1:CanFitInSlot({Name="UnknownItem"},"PlayerTorso"),"Unknown item can fit in special slot.")

    self:AssertTrue(self.CuT1:CanFitInSlot({Name="VirtualBloxconHelmet"},"5"),"Known item can't fit in a number slot.")
    self:AssertTrue(self.CuT1:CanFitInSlot({Name="VirtualBloxconHelmet"},5),"Known item can't fit in a number slot.")
    self:AssertFalse(self.CuT1:CanFitInSlot({Name="VirtualBloxconHelmet"},0),"Known item can fit in out of bounds slot.")
    self:AssertFalse(self.CuT1:CanFitInSlot({Name="VirtualBloxconHelmet"},106),"Known item can fit in out of bounds slot.")
    self:AssertFalse(self.CuT1:CanFitInSlot({Name="VirtualBloxconHelmet"},5.4),"Unknown item can fit in decimal slot.")
    self:AssertTrue(self.CuT1:CanFitInSlot({Name="VirtualBloxconHelmet"},"PlayerHat"),"Known item can't fit in special slot.")
    self:AssertFalse(self.CuT1:CanFitInSlot({Name="VirtualBloxconHelmet"},"PlayerTorso"),"Known item can fit in special slot.")

    --Swap an item and assert the swapping is valid.
    self.CuT1:SwapSlots(2,"PlayerHat")
    self:AssertTrue(self.CuT1:CanSwap(3,4),"Can't swap between numbers.")
    self:AssertTrue(self.CuT1:CanSwap(3,10),"Can't swap between numbers with one empty.")
    self:AssertTrue(self.CuT1:CanSwap(10,3),"Can't swap between numbers with one empty.")
    self:AssertTrue(self.CuT1:CanSwap("PlayerHat",5),"Can't swap between same type and number.")
    self:AssertTrue(self.CuT1:CanSwap(5,"PlayerHat"),"Can't swap between same type and number.")
    self:AssertFalse(self.CuT1:CanSwap("PlayerHat",3),"Can swap between same type and number.")
    self:AssertFalse(self.CuT1:CanSwap(3,"PlayerHat"),"Can swap between same type and number.")
    self:AssertFalse(self.CuT1:CanSwap("PlayerHat","PlayerTorso"),"Can swap between different types.")
end))



return true