local K=game:GetService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")local H=require(K.Packages.Dex.Symbols.Symbol)return function()it("\099\114\101\097\116\101\115 \097 \115\121\109\098\111\108 \119\105\116\104 \116\104\101 \112\114\111\118\105\100\101\100 \110\097\109\101",function()local K=H.new("\084\101\115\116\083\121\109\098\111\108");(expect(K._name)).to.equal("\084\101\115\116\083\121\109\098\111\108")end)it("\099\114\101\097\116\101\115 \097 \115\121\109\098\111\108 \119\105\116\104 \116\104\101 \112\114\111\118\105\100\101\100 \110\097\109\101 \097\110\100 \117\115\097\103\101",function()local K=H.new("\084\101\115\116\083\121\109\098\111\108","\084\104\105\115 \105\115 \097 \116\101\115\116 \115\121\109\098\111\108");(expect(K._name)).to.equal("\084\101\115\116\083\121\109\098\111\108");(expect(K._usage)).to.equal("\084\104\105\115 \105\115 \097 \116\101\115\116 \115\121\109\098\111\108")end)it("\104\097\115 \097 \099\117\115\116\111\109 \095\095\116\111\115\116\114\105\110\103 \109\101\116\104\111\100",function()local K=H.new("\084\101\115\116\083\121\109\098\111\108");(expect(tostring(K))).to.equal("\084\101\115\116\083\121\109\098\111\108")end)it("\104\097\115 \097 \099\117\115\116\111\109 \095\095\116\111\115\116\114\105\110\103 \109\101\116\104\111\100 \119\105\116\104 \117\115\097\103\101",function()local K=H.new("\084\101\115\116\083\121\109\098\111\108","\084\104\105\115 \105\115 \097 \116\101\115\116 \115\121\109\098\111\108");(expect(tostring(K))).to.equal("\084\101\115\116\083\121\109\098\111\108\n\040\085\115\097\103\101\058 \084\104\105\115 \105\115 \097 \116\101\115\116 \115\121\109\098\111\108\041")end)it("\104\097\115 \116\104\101 \099\111\114\114\101\099\116 \095\100\101\099\116\121\112\101 \118\097\108\117\101",function()local K=H.new("\084\101\115\116\083\121\109\098\111\108");(expect(K._dectype)).to.equal("\083\121\109\098\111\108")end)it("\073\109\112\108\101\109\101\110\116\115 \095\095\101\113 \119\104\105\099\104 \099\111\109\112\097\114\101\115 \115\121\109\098\111\108 \110\097\109\101 \097\110\100 \100\101\099\116\121\112\101 \111\110\108\121",function()local K=H.new("\084\101\115\116\083\121\109\098\111\108")local x=H.new("\084\101\115\116\083\121\109\098\111\108");(expect(K)).to.equal(x)end)end
--!strict
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Symbol = require(ReplicatedStorage.Packages.Dex.Symbols.Symbol)

return function()
    it("creates a symbol with the provided name", function()
        local symbol = Symbol.new("TestSymbol")
        expect(symbol._name).to.equal("TestSymbol")
    end)

    it("creates a symbol with the provided name and usage", function()
        local symbol = Symbol.new("TestSymbol", "This is a test symbol")
        expect(symbol._name).to.equal("TestSymbol")
        expect(symbol._usage).to.equal("This is a test symbol")
    end)

    it("has a custom __tostring method", function()
        local symbol = Symbol.new("TestSymbol")
        expect(tostring(symbol)).to.equal("TestSymbol")
    end)

    it("has a custom __tostring method with usage", function()
        local symbol = Symbol.new("TestSymbol", "This is a test symbol")
        expect(tostring(symbol)).to.equal(
            "TestSymbol\n(Usage: This is a test symbol)")
    end)

    it("has the correct _dectype value", function()
        local symbol = Symbol.new("TestSymbol")
        expect(symbol._dectype).to.equal("Symbol")
    end)

    it("Implements __eq which compares symbol name and dectype only", function()
        local symbol1 = Symbol.new("TestSymbol")
        local symbol2 = Symbol.new("TestSymbol")
        expect(symbol1).to.equal(symbol2)
    end)
end