return function()local E=(game:GetService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")).Packages.Monolith local p=require(E)local R=require(E.Enumerable)local g=require(E.Collection)local B=require(E.List)local h=require(E.AbstractList)local W=require(E.ArrayList)local H=require(E.LinkedList)local k=require(E.Queue)local i=require(E.LinkedQueue)local K=require(E.Deque)local j=require(E.LinkedDeque)local M=require(E.Stack)local o=require(E.ArrayStack)local Y=require(E.Set)local a=require(E.HashSet)local n=require(E.Map)local G=require(E.HashMap)describe("\077\111\110\111\108\105\116\104",function()it("\115\104\111\117\108\100 \098\101 \097\098\108\101 \116\111 \098\101 \105\110\115\116\097\110\116\105\097\116\101\100",function()local E=p.new();(expect(E)).to.be.ok()end)it("\115\104\111\117\108\100 \098\101 \097 \115\105\110\103\108\101\116\111\110",function()local E=p.new();(expect(E)).to.equal(p)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \069\110\117\109\101\114\097\098\108\101 \105\110\116\101\114\102\097\099\101",function()(expect(p.Enumerable)).to.equal(R)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \067\111\108\108\101\099\116\105\111\110 \105\110\116\101\114\102\097\099\101",function()(expect(p.Collection)).to.equal(g)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \076\105\115\116 \105\110\116\101\114\102\097\099\101",function()(expect(p.List)).to.equal(B)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \065\098\115\116\114\097\099\116\076\105\115\116 \097\098\115\116\114\097\099\116 \099\108\097\115\115",function()(expect(p.AbstractList)).to.equal(h)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \065\114\114\097\121\076\105\115\116 \099\108\097\115\115",function()(expect(p.ArrayList)).to.equal(W)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \076\105\110\107\101\100\076\105\115\116 \099\108\097\115\115",function()(expect(p.LinkedList)).to.equal(H)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \081\117\101\117\101 \105\110\116\101\114\102\097\099\101",function()(expect(p.Queue)).to.equal(k)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \076\105\110\107\101\100\081\117\101\117\101 \099\108\097\115\115",function()(expect(p.LinkedQueue)).to.equal(i)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \068\101\113\117\101 \105\110\116\101\114\102\097\099\101",function()(expect(p.Deque)).to.equal(K)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \076\105\110\107\101\100\068\101\113\117\101 \099\108\097\115\115",function()(expect(p.LinkedDeque)).to.equal(j)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \083\116\097\099\107 \105\110\116\101\114\102\097\099\101",function()(expect(p.Stack)).to.equal(M)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \065\114\114\097\121\083\116\097\099\107 \099\108\097\115\115",function()(expect(p.ArrayStack)).to.equal(o)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \083\101\116 \105\110\116\101\114\102\097\099\101",function()(expect(p.Set)).to.equal(Y)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \072\097\115\104\083\101\116 \099\108\097\115\115",function()(expect(p.HashSet)).to.equal(a)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \077\097\112 \105\110\116\101\114\102\097\099\101",function()(expect(p.Map)).to.equal(n)end)it("\115\104\111\117\108\100 \101\120\112\111\115\101 \116\104\101 \072\097\115\104\077\097\112 \099\108\097\115\115",function()(expect(p.HashMap)).to.equal(G)end)end)end
--- Tests for the @{Monolith} API.

return function()
	local module = game:GetService("ReplicatedStorage").Packages.Monolith
	local Monolith = require(module)
	local Enumerable = require(module.Enumerable)
	local Collection = require(module.Collection)
	local List = require(module.List)
	local AbstractList = require(module.AbstractList)
	local ArrayList = require(module.ArrayList)
	local LinkedList = require(module.LinkedList)
	local Queue = require(module.Queue)
	local LinkedQueue = require(module.LinkedQueue)
	local Deque = require(module.Deque)
	local LinkedDeque = require(module.LinkedDeque)
	local Stack = require(module.Stack)
	local ArrayStack = require(module.ArrayStack)
	local Set = require(module.Set)
	local HashSet = require(module.HashSet)
	local Map = require(module.Map)
	local HashMap = require(module.HashMap)

	describe("Monolith", function()
		it("should be able to be instantiated", function()
			local monolith = Monolith.new()
			expect(monolith).to.be.ok()
		end)

		it("should be a singleton", function()
			local monolith = Monolith.new()
			expect(monolith).to.equal(Monolith)
		end)

		it("should expose the Enumerable interface", function()
			expect(Monolith.Enumerable).to.equal(Enumerable)
		end)

		it("should expose the Collection interface", function()
			expect(Monolith.Collection).to.equal(Collection)
		end)

		it("should expose the List interface", function()
			expect(Monolith.List).to.equal(List)
		end)

		it("should expose the AbstractList abstract class", function()
			expect(Monolith.AbstractList).to.equal(AbstractList)
		end)

		it("should expose the ArrayList class", function()
			expect(Monolith.ArrayList).to.equal(ArrayList)
		end)

		it("should expose the LinkedList class", function()
			expect(Monolith.LinkedList).to.equal(LinkedList)
		end)

		it("should expose the Queue interface", function()
			expect(Monolith.Queue).to.equal(Queue)
		end)

		it("should expose the LinkedQueue class", function()
			expect(Monolith.LinkedQueue).to.equal(LinkedQueue)
		end)

		it("should expose the Deque interface", function()
			expect(Monolith.Deque).to.equal(Deque)
		end)

		it("should expose the LinkedDeque class", function()
			expect(Monolith.LinkedDeque).to.equal(LinkedDeque)
		end)

		it("should expose the Stack interface", function()
			expect(Monolith.Stack).to.equal(Stack)
		end)

		it("should expose the ArrayStack class", function()
			expect(Monolith.ArrayStack).to.equal(ArrayStack)
		end)

		it("should expose the Set interface", function()
			expect(Monolith.Set).to.equal(Set)
		end)

		it("should expose the HashSet class", function()
			expect(Monolith.HashSet).to.equal(HashSet)
		end)

		it("should expose the Map interface", function()
			expect(Monolith.Map).to.equal(Map)
		end)

		it("should expose the HashMap class", function()
			expect(Monolith.HashMap).to.equal(HashMap)
		end)
	end)
end
