<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Roblox Scripts</title><author><name>Roblox Scripts</name></author><id>https://teletype.in/atom/robloxscripts</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/robloxscripts?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@robloxscripts?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=robloxscripts"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/robloxscripts?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-30T02:42:44.708Z</updated><entry><id>robloxscripts:breakin2story</id><link rel="alternate" type="text/html" href="https://teletype.in/@robloxscripts/breakin2story?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=robloxscripts"></link><title>Скрипт на Break In 2 (Story)</title><published>2025-02-22T20:46:05.796Z</published><updated>2025-02-22T20:46:05.796Z</updated><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/c8/77/c8774ee9-7ea3-45c9-850b-e3ce11747854.png&quot;&gt;Получить скрипт можно бесплатно на сайте https://itzperson.ru/scripts/break-in-2-story/.</summary><content type="html">
  &lt;figure id=&quot;qWGE&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c8/77/c8774ee9-7ea3-45c9-850b-e3ce11747854.png&quot; width=&quot;587&quot; /&gt;
    &lt;figcaption&gt;Break In 2 (Story)&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;nbTF&quot;&gt;&lt;strong&gt;Получить скрипт можно бесплатно на сайте &lt;a href=&quot;https://itzperson.ru/scripts/break-in-2-story/&quot; target=&quot;_blank&quot;&gt;https://itzperson.ru/scripts/break-in-2-story/&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;ul id=&quot;bWi0&quot;&gt;&lt;/ul&gt;
  &lt;p id=&quot;l3Zc&quot;&gt;ОГРОМНЫЙ ФУНКЦИОНАЛ СКРИПТА&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;rHxC&quot;&gt;😍 ОГРОМНЫЙ ФУНКЦИОНАЛ СКРИПТА 😋&lt;/p&gt;
    &lt;ul id=&quot;74di&quot;&gt;
      &lt;li id=&quot;57Qd&quot;&gt;Functions:&lt;/li&gt;
      &lt;li id=&quot;5Mdx&quot;&gt;Game&lt;/li&gt;
      &lt;ul id=&quot;X2v4&quot;&gt;
        &lt;li id=&quot;aJwN&quot;&gt;Accept Uncle Pete’s Quest&lt;/li&gt;
        &lt;li id=&quot;zlnZ&quot;&gt;Unlock Custom NPC&lt;/li&gt;
        &lt;li id=&quot;b6S4&quot;&gt;Unlock All NPCs&lt;/li&gt;
        &lt;li id=&quot;tZlg&quot;&gt;Open Secret Door&lt;/li&gt;
      &lt;/ul&gt;
      &lt;li id=&quot;mQOc&quot;&gt;World&lt;/li&gt;
      &lt;ul id=&quot;1hwx&quot;&gt;
        &lt;li id=&quot;kOLu&quot;&gt;Disable Ice Slip&lt;/li&gt;
        &lt;li id=&quot;tADp&quot;&gt;Fullbright&lt;/li&gt;
        &lt;li id=&quot;RMOr&quot;&gt;Collect Outside Foods&lt;/li&gt;
        &lt;li id=&quot;nFxv&quot;&gt;Global Teleport&lt;/li&gt;
        &lt;li id=&quot;VwSH&quot;&gt;Spoof Indoors&lt;/li&gt;
        &lt;li id=&quot;jUbv&quot;&gt;Teleport to Player&lt;/li&gt;
      &lt;/ul&gt;
      &lt;li id=&quot;SIg7&quot;&gt;Player&lt;/li&gt;
      &lt;ul id=&quot;kSbt&quot;&gt;
        &lt;li id=&quot;du1T&quot;&gt;Heal Player&lt;/li&gt;
        &lt;li id=&quot;VvIk&quot;&gt;Godmode&lt;/li&gt;
        &lt;li id=&quot;n5JL&quot;&gt;Upgrade Duff of Choice&lt;/li&gt;
        &lt;li id=&quot;UI0u&quot;&gt;Max Buffs&lt;/li&gt;
        &lt;li id=&quot;A3dP&quot;&gt;Visually Show Speed&lt;/li&gt;
      &lt;/ul&gt;
      &lt;li id=&quot;XGiD&quot;&gt;Combat&lt;/li&gt;
      &lt;ul id=&quot;NDwF&quot;&gt;
        &lt;li id=&quot;OzpC&quot;&gt;Kill Nearby Enemies&lt;/li&gt;
        &lt;li id=&quot;bW6G&quot;&gt;Kill Aura&lt;/li&gt;
        &lt;li id=&quot;qqKG&quot;&gt;Kill Bosses&lt;/li&gt;
        &lt;li id=&quot;rN4C&quot;&gt;Kill Pizza Boss&lt;/li&gt;
      &lt;/ul&gt;
      &lt;li id=&quot;nMY0&quot;&gt;Utilities&lt;/li&gt;
      &lt;ul id=&quot;bn4c&quot;&gt;
        &lt;li id=&quot;ctsU&quot;&gt;Give Best Weapon&lt;/li&gt;
        &lt;li id=&quot;h57m&quot;&gt;Equip Armor&lt;/li&gt;
        &lt;li id=&quot;AkOX&quot;&gt;Heal Everyone&lt;/li&gt;
        &lt;li id=&quot;Gfos&quot;&gt;Infinite Golden Pizza&lt;/li&gt;
        &lt;li id=&quot;03Db&quot;&gt;Stack on Foods&lt;/li&gt;
      &lt;/ul&gt;
      &lt;li id=&quot;lshx&quot;&gt;Troll&lt;/li&gt;
      &lt;ul id=&quot;8BAP&quot;&gt;
        &lt;li id=&quot;PdmY&quot;&gt;Spin Bad Guys&lt;/li&gt;
        &lt;li id=&quot;DlEQ&quot;&gt;Kick Player&lt;/li&gt;
        &lt;li id=&quot;qLg1&quot;&gt;Kick Everyone&lt;/li&gt;
        &lt;li id=&quot;2vdH&quot;&gt;Delete Entire Map&lt;/li&gt;
        &lt;li id=&quot;ZTzS&quot;&gt;Delete Item&lt;/li&gt;
      &lt;/ul&gt;
      &lt;li id=&quot;UC2Y&quot;&gt;Areas&lt;/li&gt;
      &lt;ul id=&quot;XqM7&quot;&gt;
        &lt;li id=&quot;p6a9&quot;&gt;Squash Player&lt;/li&gt;
        &lt;li id=&quot;4XpC&quot;&gt;Slip on Ice&lt;/li&gt;
        &lt;li id=&quot;4P31&quot;&gt;Give Area Item.&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;p id=&quot;qPVQ&quot;&gt;&lt;/p&gt;
  &lt;ul id=&quot;9hUo&quot;&gt;&lt;/ul&gt;
  &lt;p id=&quot;ILud&quot;&gt;Приготовься к новым приключениям в &lt;a href=&quot;https://www.roblox.com/games/13864661000&quot; target=&quot;_blank&quot;&gt;Break In 2 (Story)&lt;/a&gt; с уникальны&lt;a href=&quot;https://itzperson.ru/scripts/break-in-2-story/&quot; target=&quot;_blank&quot;&gt;м скри&lt;/a&gt;птом от популярного разработчика Starry! &lt;a href=&quot;https://itzperson.ru/scripts/break-in-2-story/&quot; target=&quot;_blank&quot;&gt;ItzPerson&lt;/a&gt; предлагает мощное решение, которое изменит твой подход к игре, ускорит прохождение и откроет новые, скрытые возможности. Забудь о монотонных действиях и бесконечных поисках ключей! Этот скрипт позволит тебе:🚀 Перемещаться быстрее – свободно исследуй карту, минуя препятствия и быстро достигая нужных точек. Проводя меньше времени на пути, ты сможешь сосредоточиться на увлекательных аспектах игры!🔍 Исследовать секретные локации – загляни в потаенные уголки карты и открой скрытые комнаты и тайники. В них могут быть ценные ресурсы, делающие твоё приключение ещё более захватывающим.🛠️ Мгновенно взаимодействовать с объектами – подними предметы, открывай двери и решай головоломки без задержек. С этим скриптом процесс игры станет легче и комфортнее!💡 Получить преимущество в сложных ситуациях – забудь о безвыходных ситуациях! Легко обходи препятствия и наслаждайся игрой, не сталкиваясь с ограничениями.⚙️ Настроить под себя – благодаря гибким параметрам ты сможешь адаптировать скрипт под свои предпочтения, что сделает игровой процесс ещё более приятным.&lt;/p&gt;
  &lt;p id=&quot;lVMv&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Bacv&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;TEGl&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;r5OR&quot;&gt;мощное решение, которое изменит твой подход к &lt;a href=&quot;https://www.roblox.com/games/13864661000&quot; target=&quot;_blank&quot;&gt;игре&lt;/a&gt;, у&lt;a href=&quot;https://itzperson.ru/scripts/break-in-2-story/&quot; target=&quot;_blank&quot;&gt;скор&lt;/a&gt;ит прохождение и откроет новые, скрытые возможности. &lt;/p&gt;
  &lt;p id=&quot;dNgF&quot;&gt;Забудь о монотонных действиях и бесконечных поисках ключей! Этот скрипт позволит тебе:&lt;/p&gt;
  &lt;p id=&quot;ij5t&quot;&gt;🚀 Перемещаться быстрее – свободно исследуй карту, минуя препятствия и быстро достигая нужных точек. Проводя меньше времени на пути, ты сможешь сосредоточиться на увлекательных аспектах игры!&lt;/p&gt;

</content></entry><entry><id>robloxscripts:doors</id><link rel="alternate" type="text/html" href="https://teletype.in/@robloxscripts/doors?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=robloxscripts"></link><title>ТОПОВЫЙ СКРИПТ НА DOORS</title><published>2025-02-18T20:14:49.695Z</published><updated>2025-02-18T20:16:03.839Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/9d/49/9d49e23a-d0e1-4c32-a6cd-e592a80662e8.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/f9/d3/f9d3a753-73f7-421d-b7e1-b4bf71759e54.png&quot;&gt;Функции скрипта:</summary><content type="html">
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;aDB2&quot;&gt;&lt;strong&gt;&lt;em&gt;Функции скрипта:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
    &lt;ul id=&quot;3SI3&quot;&gt;
      &lt;li id=&quot;f0Eh&quot;&gt;Seek Gun&lt;/li&gt;
      &lt;li id=&quot;K8yJ&quot;&gt;Crucifix On Anything (press q on keyboard and mouse click to use)&lt;/li&gt;
      &lt;li id=&quot;DZoq&quot;&gt;Black Hole&lt;/li&gt;
      &lt;li id=&quot;7CmL&quot;&gt;Starlight Bottle&lt;/li&gt;
      &lt;li id=&quot;XCHN&quot;&gt;Moonlight Bottle&lt;/li&gt;
      &lt;li id=&quot;zBzV&quot;&gt;Spiral Light Bottle&lt;/li&gt;
      &lt;li id=&quot;U6Tl&quot;&gt;Golden Flashlight&lt;/li&gt;
      &lt;li id=&quot;ASvc&quot;&gt;Purple Flashlight&lt;/li&gt;
      &lt;li id=&quot;7i8V&quot;&gt;Guilding Candle&lt;/li&gt;
      &lt;li id=&quot;uFDO&quot;&gt;И ещё очень много полезных функций&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;UCGd&quot;&gt;СКРИПТ:&lt;/p&gt;
    &lt;p id=&quot;dYAV&quot;&gt;Получить скрипт можно на этом сайте: &lt;a href=&quot;https://itzperson.ru/scripts/doors-5/&quot; target=&quot;_blank&quot;&gt;https://itzperson.ru/scripts/doors-5/&lt;/a&gt;&lt;/p&gt;
    &lt;p id=&quot;eenU&quot;&gt;PS: не реклама, но там есть куча скриптов для Roblox&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;8uNj&quot;&gt;▎Откройте новые горизонты в &lt;a href=&quot;https://www.roblox.com/games/6516141723&quot; target=&quot;_blank&quot;&gt;Roblox&lt;/a&gt; &lt;a href=&quot;https://www.roblox.com/games/6516141723&quot; target=&quot;_blank&quot;&gt;DOORS&lt;/a&gt; с эксклюзивным скриптом от ItzPerson!&lt;/p&gt;
  &lt;p id=&quot;08aF&quot;&gt;Готовы ли вы столкнуться с кошмарами Roblox &lt;a href=&quot;https://www.roblox.com/games/6516141723&quot; target=&quot;_blank&quot;&gt;DOORS&lt;/a&gt;? Теперь у вас есть уникальное преимущество, которое сделает ваше приключение более увлекательным и безопасным! Познакомьтесь с инновационным скриптом от ItzPerson, разработанным талантливым Kodbol – мастером создания скриптов для &lt;a href=&quot;https://www.roblox.com/games/6516141723&quot; target=&quot;_blank&quot;&gt;Roblox&lt;/a&gt;. Этот инструмент позволит вам исследовать загадочные коридоры без лишних трудностей и страха.&lt;/p&gt;
  &lt;p id=&quot;ifnE&quot;&gt;▎Что может предложить этот скрипт?&lt;/p&gt;
  &lt;p id=&quot;Oc0Z&quot;&gt;🚀 Мгновенное перемещение&lt;/p&gt;
  &lt;p id=&quot;usZG&quot;&gt;Забудьте о медленных и пугающих прогулках по темным комнатам! С помощью этого скрипта вы сможете мгновенно находить выходы и ускользать от угроз. Ваше время на исследование станет более продуктивным, а страх перед неожиданными встречами с монстрами уйдет в прошлое.&lt;/p&gt;
  &lt;p id=&quot;t4Bf&quot;&gt;👀 Рентген-зрение&lt;/p&gt;
  &lt;p id=&quot;JDMB&quot;&gt;Теперь вы сможете заглядывать сквозь стены и двери, заранее зная, что вас ждет за углом. Это значит, что больше не будет неожиданных встреч с ужасными существами, которые могут испортить ваше настроение и игру.&lt;/p&gt;
  &lt;p id=&quot;b2BT&quot;&gt;⚠️ Игнорирование ловушек&lt;/p&gt;
  &lt;p id=&quot;sfLS&quot;&gt;Скрипт поможет вам обойти самые коварные ловушки, позволяя сосредоточиться на исследовании окружающего мира, а не на выживании. Вы сможете наслаждаться игрой без лишних стрессов!&lt;/p&gt;
  &lt;p id=&quot;9Rk4&quot;&gt;💡 Подсказки и важная информация&lt;/p&gt;
  &lt;p id=&quot;Hy1q&quot;&gt;Получайте полезные подсказки о расположении комнат, монстров и головоломок. Это поможет вам действовать максимально эффективно и избегать ненужных проблем.&lt;/p&gt;
  &lt;p id=&quot;7Y6V&quot;&gt;🤖 Автоматизация рутинных действий&lt;/p&gt;
  &lt;p id=&quot;sfUi&quot;&gt;Скрипт автоматически собирает предметы и выполняет базовые действия, что позволяет вам полностью сосредоточиться на игре и получать удовольствие от процесса.&lt;/p&gt;
  &lt;p id=&quot;rgQf&quot;&gt;⚙️ Полная персонализация&lt;/p&gt;
  &lt;p id=&quot;Vr3V&quot;&gt;Настройте скрипт так, чтобы он идеально соответствовал вашему стилю игры. Выберите те функции, которые вам наиболее интересны, и создайте уникальный игровой опыт.&lt;/p&gt;
  &lt;p id=&quot;xDtq&quot;&gt;▎Почему стоит попробовать этот скрипт?&lt;/p&gt;
  &lt;p id=&quot;DBVA&quot;&gt;Этот инструмент был создан Kodbol – известным автором на платформе ScriptBlox, который зарекомендовал себя как надежный разработчик скриптов для Roblox. Скрипт стабилен, безопасен и протестирован, так что вы можете наслаждаться игрой без каких-либо опасений.&lt;/p&gt;
  &lt;p id=&quot;dwg1&quot;&gt;▎Что входит в комплект?&lt;/p&gt;
  &lt;p id=&quot;Erhz&quot;&gt;✔️ Скрипт – проверенный и безопасный, готовый к использованию (вы можете скопировать его выше).&lt;/p&gt;
  &lt;p id=&quot;sBaj&quot;&gt;✔️ Техническая поддержка – если у вас возникнут вопросы или понадобится помощь, мы всегда готовы помочь вам в нашем Telegram-чате!&lt;/p&gt;
  &lt;p id=&quot;F0O4&quot;&gt;Не упустите возможность сделать свое прохождение в &lt;a href=&quot;https://www.roblox.com/games/6516141723&quot; target=&quot;_blank&quot;&gt;Roblox&lt;/a&gt; &lt;a href=&quot;https://www.roblox.com/games/6516141723&quot; target=&quot;_blank&quot;&gt;DOORS&lt;/a&gt; более интересным и комфортным! Присоединяйтесь к тысячам игроков, которые уже оценили преимущества этого уникального инструмента! 🚪🔦&lt;/p&gt;
  &lt;p id=&quot;HTI9&quot;&gt;Теги: roblox scripts, doors script, hack roblox.&lt;/p&gt;

</content></entry><entry><id>robloxscripts:unc</id><link rel="alternate" type="text/html" href="https://teletype.in/@robloxscripts/unc?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=robloxscripts"></link><title>UNC Test</title><published>2024-05-17T21:05:45.428Z</published><updated>2024-05-17T21:05:45.428Z</updated><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/d7/29/d7295b5c-9b51-4c27-bb6e-3c88ccc1e3a8.png&quot;&gt;</summary><content type="html">
  &lt;ul id=&quot;a5pp&quot;&gt;
    &lt;li id=&quot;5U91&quot;&gt;The Updated UNC Test, Since the old UNC test checks for getfenv(0) and not getgenv(), I&amp;#x27;ve updated it to check for getgenv() functions.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;grLI&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;tMdM&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d7/29/d7295b5c-9b51-4c27-bb6e-3c88ccc1e3a8.png&quot; width=&quot;480&quot; /&gt;
  &lt;/figure&gt;
  &lt;pre id=&quot;RQ62&quot; data-lang=&quot;makefile&quot;&gt;local passes, fails, undefined = 0, 0, 0
local running = 0

getGlobal = getgenv

local function test(name, aliases, callback)
	running = running + 1

	task.spawn(function()
		if not callback then
			print(&amp;quot;⏺️ &amp;quot; .. name)
		elseif not getGlobal(name) then
			fails = fails + 1
			warn(&amp;quot;⛔ &amp;quot; .. name)
		else
			local success, message = pcall(callback)
	        name = tostring(name)
			message = tostring(message)
			if success then
				passes = passes + 1
				print(&amp;quot;✅ &amp;quot; .. tostring(name) .. (tostring(message) and &amp;quot; • &amp;quot; .. tostring(message) or &amp;quot;&amp;quot;))
			else
				fails = fails + 1
				warn(&amp;quot;⛔ &amp;quot; .. name .. &amp;quot; failed: &amp;quot; .. message)
			end
		end
	
		local undefinedAliases = {}
	
		for _, alias in ipairs(aliases) do
			if getGlobal(alias) == nil then
				table.insert(undefinedAliases, alias)
			end
		end
	
		if #undefinedAliases &amp;gt; 0 then
			undefined = undefined + 1
			warn(&amp;quot;⚠️ &amp;quot; .. table.concat(undefinedAliases, &amp;quot;, &amp;quot;))
		end

		running = running - 1
	end)
end

-- Header and summary

print(&amp;quot;\n&amp;quot;)

print(&amp;quot;UNC Environment Check&amp;quot;)
print(&amp;quot;✅ - Pass, ⛔ - Fail, ⏺️ - No test, ⚠️ - Missing aliases\n&amp;quot;)

task.defer(function()
	repeat task.wait() until running == 0

	local rate = math.round(passes / (passes + fails) * 100)
	local outOf = passes .. &amp;quot; out of &amp;quot; .. (passes + fails)

	print(&amp;quot;\n&amp;quot;)

	print(&amp;quot;UNC Summary&amp;quot;)
	print(&amp;quot;✅ Tested with a &amp;quot; .. rate .. &amp;quot;% success rate (&amp;quot; .. outOf .. &amp;quot;)&amp;quot;)
	print(&amp;quot;⛔ &amp;quot; .. fails .. &amp;quot; tests failed&amp;quot;)
	print(&amp;quot;⚠️ &amp;quot; .. undefined .. &amp;quot; globals are missing aliases&amp;quot;)
end)

-- Cache

test(&amp;quot;cache.invalidate&amp;quot;, {}, function()
	local container = Instance.new(&amp;quot;Folder&amp;quot;)
	local part = Instance.new(&amp;quot;Part&amp;quot;, container)
	cache.invalidate(container:FindFirstChild(&amp;quot;Part&amp;quot;))
	assert(part ~= container:FindFirstChild(&amp;quot;Part&amp;quot;), &amp;quot;Reference &amp;#x60;part&amp;#x60; could not be invalidated&amp;quot;)
end)

test(&amp;quot;cache.iscached&amp;quot;, {}, function()
	local part = Instance.new(&amp;quot;Part&amp;quot;)
	assert(cache.iscached(part), &amp;quot;Part should be cached&amp;quot;)
	cache.invalidate(part)
	assert(not cache.iscached(part), &amp;quot;Part should not be cached&amp;quot;)
end)

test(&amp;quot;cache.replace&amp;quot;, {}, function()
	local part = Instance.new(&amp;quot;Part&amp;quot;)
	local fire = Instance.new(&amp;quot;Fire&amp;quot;)
	cache.replace(part, fire)
	assert(part ~= fire, &amp;quot;Part was not replaced with Fire&amp;quot;)
end)

test(&amp;quot;cloneref&amp;quot;, {}, function()
	local part = Instance.new(&amp;quot;Part&amp;quot;)
	local clone = cloneref(part)
	assert(part ~= clone, &amp;quot;Clone should not be equal to original&amp;quot;)
	clone.Name = &amp;quot;Test&amp;quot;
	assert(part.Name == &amp;quot;Test&amp;quot;, &amp;quot;Clone should have updated the original&amp;quot;)
end)

test(&amp;quot;compareinstances&amp;quot;, {}, function()
	local part = Instance.new(&amp;quot;Part&amp;quot;)
	local clone = cloneref(part)
	assert(part ~= clone, &amp;quot;Clone should not be equal to original&amp;quot;)
	assert(compareinstances(part, clone), &amp;quot;Clone should be equal to original when using compareinstances()&amp;quot;)
end)

-- Closures

local function shallowEqual(t1, t2)
	if t1 == t2 then
		return true
	end

	local UNIQUE_TYPES = {
		[&amp;quot;function&amp;quot;] = true,
		[&amp;quot;table&amp;quot;] = true,
		[&amp;quot;userdata&amp;quot;] = true,
		[&amp;quot;thread&amp;quot;] = true,
	}

	for k, v in pairs(t1) do
		if UNIQUE_TYPES[type(v)] then
			if type(t2[k]) ~= type(v) then
				return false
			end
		elseif t2[k] ~= v then
			return false
		end
	end

	for k, v in pairs(t2) do
		if UNIQUE_TYPES[type(v)] then
			if type(t2[k]) ~= type(v) then
				return false
			end
		elseif t1[k] ~= v then
			return false
		end
	end

	return true
end

test(&amp;quot;checkcaller&amp;quot;, {}, function()
	assert(checkcaller(), &amp;quot;Main scope should return true&amp;quot;)
end)

test(&amp;quot;clonefunction&amp;quot;, {}, function()
	local function test()
		return &amp;quot;success&amp;quot;
	end
	local copy = clonefunction(test)
	assert(test() == copy(), &amp;quot;The clone should return the same value as the original&amp;quot;)
	assert(test ~= copy, &amp;quot;The clone should not be equal to the original&amp;quot;)
end)

test(&amp;quot;getcallingscript&amp;quot;, {})

test(&amp;quot;getscriptclosure&amp;quot;, {&amp;quot;getscriptfunction&amp;quot;}, function()
	local module = game:GetService(&amp;quot;CoreGui&amp;quot;).RobloxGui.Modules.Common.Constants
	local constants = getrenv().require(module)
	local generated = getscriptclosure(module)()
	assert(constants ~= generated, &amp;quot;Generated module should not match the original&amp;quot;)
	assert(shallowEqual(constants, generated), &amp;quot;Generated constant table should be shallow equal to the original&amp;quot;)
end)

test(&amp;quot;hookfunction&amp;quot;, {&amp;quot;replaceclosure&amp;quot;}, function()
	local function test()
		return true
	end
	local ref = hookfunction(test, function()
		return false
	end)
	assert(test() == false, &amp;quot;Function should return false&amp;quot;)
	assert(ref() == true, &amp;quot;Original function should return true&amp;quot;)
	assert(test ~= ref, &amp;quot;Original function should not be same as the reference&amp;quot;)
end)

test(&amp;quot;iscclosure&amp;quot;, {}, function()
	assert(iscclosure(print) == true, &amp;quot;Function &amp;#x27;print&amp;#x27; should be a C closure&amp;quot;)
	assert(iscclosure(function() end) == false, &amp;quot;Executor function should not be a C closure&amp;quot;)
end)

test(&amp;quot;islclosure&amp;quot;, {}, function()
	assert(islclosure(print) == false, &amp;quot;Function &amp;#x27;print&amp;#x27; should not be a Lua closure&amp;quot;)
	assert(islclosure(function() end) == true, &amp;quot;Executor function should be a Lua closure&amp;quot;)
end)

test(&amp;quot;isexecutorclosure&amp;quot;, {&amp;quot;checkclosure&amp;quot;, &amp;quot;isourclosure&amp;quot;}, function()
	assert(isexecutorclosure(isexecutorclosure) == true, &amp;quot;Did not return true for an executor global&amp;quot;)
	assert(isexecutorclosure(newcclosure(function() end)) == true, &amp;quot;Did not return true for an executor C closure&amp;quot;)
	assert(isexecutorclosure(function() end) == true, &amp;quot;Did not return true for an executor Luau closure&amp;quot;)
	assert(isexecutorclosure(print) == false, &amp;quot;Did not return false for a Roblox global&amp;quot;)
end)

test(&amp;quot;loadstring&amp;quot;, {}, function()
	local animate = game:GetService(&amp;quot;Players&amp;quot;).LocalPlayer.Character.Animate
	local bytecode = getscriptbytecode(animate)
	local func = loadstring(bytecode)
	assert(type(func) ~= &amp;quot;function&amp;quot;, &amp;quot;Luau bytecode should not be loadable!&amp;quot;)
	assert(assert(loadstring(&amp;quot;return ... + 1&amp;quot;))(1) == 2, &amp;quot;Failed to do simple math&amp;quot;)
	assert(type(select(2, loadstring(&amp;quot;f&amp;quot;))) == &amp;quot;string&amp;quot;, &amp;quot;Loadstring did not return anything for a compiler error&amp;quot;)
end)

test(&amp;quot;newcclosure&amp;quot;, {}, function()
	local function test()
		return true
	end
	local testC = newcclosure(test)
	assert(test() == testC(), &amp;quot;New C closure should return the same value as the original&amp;quot;)
	assert(test ~= testC, &amp;quot;New C closure should not be same as the original&amp;quot;)
	assert(iscclosure(testC), &amp;quot;New C closure should be a C closure&amp;quot;)
end)

-- Console

test(&amp;quot;rconsoleclear&amp;quot;, {&amp;quot;consoleclear&amp;quot;})

test(&amp;quot;rconsolecreate&amp;quot;, {&amp;quot;consolecreate&amp;quot;})

test(&amp;quot;rconsoledestroy&amp;quot;, {&amp;quot;consoledestroy&amp;quot;})

test(&amp;quot;rconsoleinput&amp;quot;, {&amp;quot;consoleinput&amp;quot;})

test(&amp;quot;rconsoleprint&amp;quot;, {&amp;quot;consoleprint&amp;quot;})

test(&amp;quot;rconsolesettitle&amp;quot;, {&amp;quot;rconsolename&amp;quot;, &amp;quot;consolesettitle&amp;quot;})

-- Crypt

test(&amp;quot;crypt.base64encode&amp;quot;, {&amp;quot;crypt.base64.encode&amp;quot;, &amp;quot;crypt.base64_encode&amp;quot;, &amp;quot;base64.encode&amp;quot;, &amp;quot;base64_encode&amp;quot;}, function()
	assert(crypt.base64encode(&amp;quot;test&amp;quot;) == &amp;quot;dGVzdA==&amp;quot;, &amp;quot;Base64 encoding failed&amp;quot;)
end)

test(&amp;quot;crypt.base64decode&amp;quot;, {&amp;quot;crypt.base64.decode&amp;quot;, &amp;quot;crypt.base64_decode&amp;quot;, &amp;quot;base64.decode&amp;quot;, &amp;quot;base64_decode&amp;quot;}, function()
	assert(crypt.base64decode(&amp;quot;dGVzdA==&amp;quot;) == &amp;quot;test&amp;quot;, &amp;quot;Base64 decoding failed&amp;quot;)
end)

test(&amp;quot;crypt.encrypt&amp;quot;, {}, function()
	local key = crypt.generatekey()
	local encrypted, iv = crypt.encrypt(&amp;quot;test&amp;quot;, key, nil, &amp;quot;CBC&amp;quot;)
	assert(iv, &amp;quot;crypt.encrypt should return an IV&amp;quot;)
	local decrypted = crypt.decrypt(encrypted, key, iv, &amp;quot;CBC&amp;quot;)
	assert(decrypted == &amp;quot;test&amp;quot;, &amp;quot;Failed to decrypt raw string from encrypted data&amp;quot;)
end)

test(&amp;quot;crypt.decrypt&amp;quot;, {}, function()
	local key, iv = crypt.generatekey(), crypt.generatekey()
	local encrypted = crypt.encrypt(&amp;quot;test&amp;quot;, key, iv, &amp;quot;CBC&amp;quot;)
	local decrypted = crypt.decrypt(encrypted, key, iv, &amp;quot;CBC&amp;quot;)
	assert(decrypted == &amp;quot;test&amp;quot;, &amp;quot;Failed to decrypt raw string from encrypted data&amp;quot;)
end)

test(&amp;quot;crypt.generatebytes&amp;quot;, {}, function()
	local size = math.random(10, 100)
	local bytes = crypt.generatebytes(size)
	assert(#crypt.base64decode(bytes) == size, &amp;quot;The decoded result should be &amp;quot; .. size .. &amp;quot; bytes long (got &amp;quot; .. #crypt.base64decode(bytes) .. &amp;quot; decoded, &amp;quot; .. #bytes .. &amp;quot; raw)&amp;quot;)
end)

test(&amp;quot;crypt.generatekey&amp;quot;, {}, function()
	local key = crypt.generatekey()
	assert(#crypt.base64decode(key) == 32, &amp;quot;Generated key should be 32 bytes long when decoded&amp;quot;)
end)

test(&amp;quot;crypt.hash&amp;quot;, {}, function()
	local algorithms = {&amp;#x27;sha1&amp;#x27;, &amp;#x27;sha384&amp;#x27;, &amp;#x27;sha512&amp;#x27;, &amp;#x27;md5&amp;#x27;, &amp;#x27;sha256&amp;#x27;, &amp;#x27;sha3-224&amp;#x27;, &amp;#x27;sha3-256&amp;#x27;, &amp;#x27;sha3-512&amp;#x27;}
	for _, algorithm in ipairs(algorithms) do
		local hash = crypt.hash(&amp;quot;test&amp;quot;, algorithm)
		assert(hash, &amp;quot;crypt.hash on algorithm &amp;#x27;&amp;quot; .. algorithm .. &amp;quot;&amp;#x27; should return a hash&amp;quot;)
	end
end)

--- Debug

test(&amp;quot;debug.getconstant&amp;quot;, {}, function()
	local function test()
		print(&amp;quot;Hello, world!&amp;quot;)
	end
	assert(debug.getconstant(test, 1) == &amp;quot;print&amp;quot;, &amp;quot;First constant must be print&amp;quot;)
	assert(debug.getconstant(test, 2) == nil, &amp;quot;Second constant must be nil&amp;quot;)
	assert(debug.getconstant(test, 3) == &amp;quot;Hello, world!&amp;quot;, &amp;quot;Third constant must be &amp;#x27;Hello, world!&amp;#x27;&amp;quot;)
end)

test(&amp;quot;debug.getconstants&amp;quot;, {}, function()
	local function test()
		local num = 5000 .. 50000
		print(&amp;quot;Hello, world!&amp;quot;, num, warn)
	end
	local constants = debug.getconstants(test)
	assert(constants[1] == 50000, &amp;quot;First constant must be 50000&amp;quot;)
	assert(constants[2] == &amp;quot;print&amp;quot;, &amp;quot;Second constant must be print&amp;quot;)
	assert(constants[3] == nil, &amp;quot;Third constant must be nil&amp;quot;)
	assert(constants[4] == &amp;quot;Hello, world!&amp;quot;, &amp;quot;Fourth constant must be &amp;#x27;Hello, world!&amp;#x27;&amp;quot;)
	assert(constants[5] == &amp;quot;warn&amp;quot;, &amp;quot;Fifth constant must be warn&amp;quot;)
end)

test(&amp;quot;debug.getinfo&amp;quot;, {}, function()
	local types = {
		source = &amp;quot;string&amp;quot;,
		short_src = &amp;quot;string&amp;quot;,
		func = &amp;quot;function&amp;quot;,
		what = &amp;quot;string&amp;quot;,
		currentline = &amp;quot;number&amp;quot;,
		name = &amp;quot;string&amp;quot;,
		nups = &amp;quot;number&amp;quot;,
		numparams = &amp;quot;number&amp;quot;,
		is_vararg = &amp;quot;number&amp;quot;,
	}
	local function test(...)
		print(...)
	end
	local info = debug.getinfo(test)
	for k, v in pairs(types) do
		assert(info[k] ~= nil, &amp;quot;Did not return a table with a &amp;#x27;&amp;quot; .. k .. &amp;quot;&amp;#x27; field&amp;quot;)
		assert(type(info[k]) == v, &amp;quot;Did not return a table with &amp;quot; .. k .. &amp;quot; as a &amp;quot; .. v .. &amp;quot; (got &amp;quot; .. type(info[k]) .. &amp;quot;)&amp;quot;)
	end
end)

test(&amp;quot;debug.getproto&amp;quot;, {}, function()
	local function test()
		local function proto()
			return true
		end
	end
	local proto = debug.getproto(test, 1, true)[1]
	local realproto = debug.getproto(test, 1)
	assert(proto, &amp;quot;Failed to get the inner function&amp;quot;)
	assert(proto() == true, &amp;quot;The inner function did not return anything&amp;quot;)
	if not realproto() then
		return &amp;quot;Proto return values are disabled on this executor&amp;quot;
	end
end)

test(&amp;quot;debug.getprotos&amp;quot;, {}, function()
	local function test()
		local function _1()
			return true
		end
		local function _2()
			return true
		end
		local function _3()
			return true
		end
	end
	for i in ipairs(debug.getprotos(test)) do
		local proto = debug.getproto(test, i, true)[1]
		local realproto = debug.getproto(test, i)
		assert(proto(), &amp;quot;Failed to get inner function &amp;quot; .. i)
		if not realproto() then
			return &amp;quot;Proto return values are disabled on this executor&amp;quot;
		end
	end
end)

test(&amp;quot;debug.getstack&amp;quot;, {}, function()
	local _ = &amp;quot;a&amp;quot; .. &amp;quot;b&amp;quot;
	assert(debug.getstack(1, 1) == &amp;quot;ab&amp;quot;, &amp;quot;The first item in the stack should be &amp;#x27;ab&amp;#x27;&amp;quot;)
	assert(debug.getstack(1)[1] == &amp;quot;ab&amp;quot;, &amp;quot;The first item in the stack table should be &amp;#x27;ab&amp;#x27;&amp;quot;)
end)

test(&amp;quot;debug.getupvalue&amp;quot;, {}, function()
	local upvalue = function() end
	local function test()
		print(upvalue)
	end
	assert(debug.getupvalue(test, 1) == upvalue, &amp;quot;Unexpected value returned from debug.getupvalue&amp;quot;)
end)

test(&amp;quot;debug.getupvalues&amp;quot;, {}, function()
	local upvalue = function() end
	local function test()
		print(upvalue)
	end
	local upvalues = debug.getupvalues(test)
	assert(upvalues[1] == upvalue, &amp;quot;Unexpected value returned from debug.getupvalues&amp;quot;)
end)

test(&amp;quot;debug.setconstant&amp;quot;, {}, function()
	local function test()
		return &amp;quot;fail&amp;quot;
	end
	debug.setconstant(test, 1, &amp;quot;success&amp;quot;)
	assert(test() == &amp;quot;success&amp;quot;, &amp;quot;debug.setconstant did not set the first constant&amp;quot;)
end)

test(&amp;quot;debug.setstack&amp;quot;, {}, function()
	local function test()
		return &amp;quot;fail&amp;quot;, debug.setstack(1, 1, &amp;quot;success&amp;quot;)
	end
	assert(test() == &amp;quot;success&amp;quot;, &amp;quot;debug.setstack did not set the first stack item&amp;quot;)
end)

test(&amp;quot;debug.setupvalue&amp;quot;, {}, function()
	local function upvalue()
		return &amp;quot;fail&amp;quot;
	end
	local function test()
		return upvalue()
	end
	debug.setupvalue(test, 1, function()
		return &amp;quot;success&amp;quot;
	end)
	assert(test() == &amp;quot;success&amp;quot;, &amp;quot;debug.setupvalue did not set the first upvalue&amp;quot;)
end)

-- Filesystem

if isfolder and makefolder and delfolder then
	if isfolder(&amp;quot;.tests&amp;quot;) then
		delfolder(&amp;quot;.tests&amp;quot;)
	end
	makefolder(&amp;quot;.tests&amp;quot;)
end

test(&amp;quot;readfile&amp;quot;, {}, function()
	writefile(&amp;quot;.tests/readfile.txt&amp;quot;, &amp;quot;success&amp;quot;)
	assert(readfile(&amp;quot;.tests/readfile.txt&amp;quot;) == &amp;quot;success&amp;quot;, &amp;quot;Did not return the contents of the file&amp;quot;)
end)

test(&amp;quot;listfiles&amp;quot;, {}, function()
	makefolder(&amp;quot;.tests/listfiles&amp;quot;)
	writefile(&amp;quot;.tests/listfiles/test_1.txt&amp;quot;, &amp;quot;success&amp;quot;)
	writefile(&amp;quot;.tests/listfiles/test_2.txt&amp;quot;, &amp;quot;success&amp;quot;)
	local files = listfiles(&amp;quot;.tests/listfiles&amp;quot;)
	assert(#files == 2, &amp;quot;Did not return the correct number of files&amp;quot;)
	assert(isfile(files[1]), &amp;quot;Did not return a file path&amp;quot;)
	assert(readfile(files[1]) == &amp;quot;success&amp;quot;, &amp;quot;Did not return the correct files&amp;quot;)
	makefolder(&amp;quot;.tests/listfiles_2&amp;quot;)
	makefolder(&amp;quot;.tests/listfiles_2/test_1&amp;quot;)
	makefolder(&amp;quot;.tests/listfiles_2/test_2&amp;quot;)
	local folders = listfiles(&amp;quot;.tests/listfiles_2&amp;quot;)
	assert(#folders == 2, &amp;quot;Did not return the correct number of folders&amp;quot;)
	assert(isfolder(folders[1]), &amp;quot;Did not return a folder path&amp;quot;)
end)

test(&amp;quot;writefile&amp;quot;, {}, function()
	writefile(&amp;quot;.tests/writefile.txt&amp;quot;, &amp;quot;success&amp;quot;)
	assert(readfile(&amp;quot;.tests/writefile.txt&amp;quot;) == &amp;quot;success&amp;quot;, &amp;quot;Did not write the file&amp;quot;)
	local requiresFileExt = pcall(function()
		writefile(&amp;quot;.tests/writefile&amp;quot;, &amp;quot;success&amp;quot;)
		assert(isfile(&amp;quot;.tests/writefile.txt&amp;quot;))
	end)
	if not requiresFileExt then
		return &amp;quot;This executor requires a file extension in writefile&amp;quot;
	end
end)

test(&amp;quot;makefolder&amp;quot;, {}, function()
	makefolder(&amp;quot;.tests/makefolder&amp;quot;)
	assert(isfolder(&amp;quot;.tests/makefolder&amp;quot;), &amp;quot;Did not create the folder&amp;quot;)
end)

test(&amp;quot;appendfile&amp;quot;, {}, function()
	writefile(&amp;quot;.tests/appendfile.txt&amp;quot;, &amp;quot;su&amp;quot;)
	appendfile(&amp;quot;.tests/appendfile.txt&amp;quot;, &amp;quot;cce&amp;quot;)
	appendfile(&amp;quot;.tests/appendfile.txt&amp;quot;, &amp;quot;ss&amp;quot;)
	assert(readfile(&amp;quot;.tests/appendfile.txt&amp;quot;) == &amp;quot;success&amp;quot;, &amp;quot;Did not append the file&amp;quot;)
end)

test(&amp;quot;isfile&amp;quot;, {}, function()
	writefile(&amp;quot;.tests/isfile.txt&amp;quot;, &amp;quot;success&amp;quot;)
	assert(isfile(&amp;quot;.tests/isfile.txt&amp;quot;) == true, &amp;quot;Did not return true for a file&amp;quot;)
	assert(isfile(&amp;quot;.tests&amp;quot;) == false, &amp;quot;Did not return false for a folder&amp;quot;)
	assert(isfile(&amp;quot;.tests/doesnotexist.exe&amp;quot;) == false, &amp;quot;Did not return false for a nonexistent path (got &amp;quot; .. tostring(isfile(&amp;quot;.tests/doesnotexist.exe&amp;quot;)) .. &amp;quot;)&amp;quot;)
end)

test(&amp;quot;isfolder&amp;quot;, {}, function()
	assert(isfolder(&amp;quot;.tests&amp;quot;) == true, &amp;quot;Did not return false for a folder&amp;quot;)
	assert(isfolder(&amp;quot;.tests/doesnotexist.exe&amp;quot;) == false, &amp;quot;Did not return false for a nonexistent path (got &amp;quot; .. tostring(isfolder(&amp;quot;.tests/doesnotexist.exe&amp;quot;)) .. &amp;quot;)&amp;quot;)
end)

test(&amp;quot;delfolder&amp;quot;, {}, function()
	makefolder(&amp;quot;.tests/delfolder&amp;quot;)
	delfolder(&amp;quot;.tests/delfolder&amp;quot;)
	assert(isfolder(&amp;quot;.tests/delfolder&amp;quot;) == false, &amp;quot;Failed to delete folder (isfolder = &amp;quot; .. tostring(isfolder(&amp;quot;.tests/delfolder&amp;quot;)) .. &amp;quot;)&amp;quot;)
end)

test(&amp;quot;delfile&amp;quot;, {}, function()
	writefile(&amp;quot;.tests/delfile.txt&amp;quot;, &amp;quot;Hello, world!&amp;quot;)
	delfile(&amp;quot;.tests/delfile.txt&amp;quot;)
	assert(isfile(&amp;quot;.tests/delfile.txt&amp;quot;) == false, &amp;quot;Failed to delete file (isfile = &amp;quot; .. tostring(isfile(&amp;quot;.tests/delfile.txt&amp;quot;)) .. &amp;quot;)&amp;quot;)
end)

test(&amp;quot;loadfile&amp;quot;, {}, function()
	writefile(&amp;quot;.tests/loadfile.txt&amp;quot;, &amp;quot;return ... + 1&amp;quot;)
	assert(assert(loadfile(&amp;quot;.tests/loadfile.txt&amp;quot;))(1) == 2, &amp;quot;Failed to load a file with arguments&amp;quot;)
	writefile(&amp;quot;.tests/loadfile.txt&amp;quot;, &amp;quot;f&amp;quot;)
	local callback, err = loadfile(&amp;quot;.tests/loadfile.txt&amp;quot;)
	assert(err and not callback, &amp;quot;Did not return an error message for a compiler error&amp;quot;)
end)

test(&amp;quot;dofile&amp;quot;, {})

-- Input

test(&amp;quot;isrbxactive&amp;quot;, {&amp;quot;isgameactive&amp;quot;}, function()
	assert(type(isrbxactive()) == &amp;quot;boolean&amp;quot;, &amp;quot;Did not return a boolean value&amp;quot;)
end)

test(&amp;quot;mouse1click&amp;quot;, {})

test(&amp;quot;mouse1press&amp;quot;, {})

test(&amp;quot;mouse1release&amp;quot;, {})

test(&amp;quot;mouse2click&amp;quot;, {})

test(&amp;quot;mouse2press&amp;quot;, {})

test(&amp;quot;mouse2release&amp;quot;, {})

test(&amp;quot;mousemoveabs&amp;quot;, {})

test(&amp;quot;mousemoverel&amp;quot;, {})

test(&amp;quot;mousescroll&amp;quot;, {})

-- Instances

test(&amp;quot;fireclickdetector&amp;quot;, {}, function()
	local detector = Instance.new(&amp;quot;ClickDetector&amp;quot;)
	fireclickdetector(detector, 50, &amp;quot;MouseHoverEnter&amp;quot;)
end)

test(&amp;quot;getcallbackvalue&amp;quot;, {}, function()
	local bindable = Instance.new(&amp;quot;BindableFunction&amp;quot;)
	local function test()
	end
	bindable.OnInvoke = test
	assert(getcallbackvalue(bindable, &amp;quot;OnInvoke&amp;quot;) == test, &amp;quot;Did not return the correct value&amp;quot;)
end)

test(&amp;quot;getconnections&amp;quot;, {}, function()
	local types = {
		Enabled = &amp;quot;boolean&amp;quot;,
		ForeignState = &amp;quot;boolean&amp;quot;,
		LuaConnection = &amp;quot;boolean&amp;quot;,
		Function = &amp;quot;function&amp;quot;,
		Thread = &amp;quot;thread&amp;quot;,
		Fire = &amp;quot;function&amp;quot;,
		Defer = &amp;quot;function&amp;quot;,
		Disconnect = &amp;quot;function&amp;quot;,
		Disable = &amp;quot;function&amp;quot;,
		Enable = &amp;quot;function&amp;quot;,
	}
	local bindable = Instance.new(&amp;quot;BindableEvent&amp;quot;)
	bindable.Event:Connect(function() end)
	local connection = getconnections(bindable.Event)[1]
	for k, v in pairs(types) do
		assert(connection[k] ~= nil, &amp;quot;Did not return a table with a &amp;#x27;&amp;quot; .. k .. &amp;quot;&amp;#x27; field&amp;quot;)
		assert(type(connection[k]) == v, &amp;quot;Did not return a table with &amp;quot; .. k .. &amp;quot; as a &amp;quot; .. v .. &amp;quot; (got &amp;quot; .. type(connection[k]) .. &amp;quot;)&amp;quot;)
	end
end)

test(&amp;quot;getcustomasset&amp;quot;, {}, function()
	writefile(&amp;quot;.tests/getcustomasset.txt&amp;quot;, &amp;quot;success&amp;quot;)
	local contentId = getcustomasset(&amp;quot;.tests/getcustomasset.txt&amp;quot;)
	assert(type(contentId) == &amp;quot;string&amp;quot;, &amp;quot;Did not return a string&amp;quot;)
	assert(#contentId &amp;gt; 0, &amp;quot;Returned an empty string&amp;quot;)
	assert(string.match(contentId, &amp;quot;rbxasset://&amp;quot;) == &amp;quot;rbxasset://&amp;quot;, &amp;quot;Did not return an rbxasset url&amp;quot;)
end)

test(&amp;quot;gethiddenproperty&amp;quot;, {}, function()
	local fire = Instance.new(&amp;quot;Fire&amp;quot;)
	local property, isHidden = gethiddenproperty(fire, &amp;quot;size_xml&amp;quot;)
	assert(property == 5, &amp;quot;Did not return the correct value&amp;quot;)
	assert(isHidden == true, &amp;quot;Did not return whether the property was hidden&amp;quot;)
end)

test(&amp;quot;sethiddenproperty&amp;quot;, {}, function()
	local fire = Instance.new(&amp;quot;Fire&amp;quot;)
	local hidden = sethiddenproperty(fire, &amp;quot;size_xml&amp;quot;, 10)
	assert(hidden, &amp;quot;Did not return true for the hidden property&amp;quot;)
	assert(gethiddenproperty(fire, &amp;quot;size_xml&amp;quot;) == 10, &amp;quot;Did not set the hidden property&amp;quot;)
end)

test(&amp;quot;gethui&amp;quot;, {}, function()
	assert(typeof(gethui()) == &amp;quot;Instance&amp;quot;, &amp;quot;Did not return an Instance&amp;quot;)
end)

test(&amp;quot;getinstances&amp;quot;, {}, function()
	assert(getinstances()[1]:IsA(&amp;quot;Instance&amp;quot;), &amp;quot;The first value is not an Instance&amp;quot;)
end)

test(&amp;quot;getnilinstances&amp;quot;, {}, function()
	assert(getnilinstances()[1]:IsA(&amp;quot;Instance&amp;quot;), &amp;quot;The first value is not an Instance&amp;quot;)
	assert(getnilinstances()[1].Parent == nil, &amp;quot;The first value is not parented to nil&amp;quot;)
end)

test(&amp;quot;isscriptable&amp;quot;, {}, function()
	local fire = Instance.new(&amp;quot;Fire&amp;quot;)
	assert(isscriptable(fire, &amp;quot;size_xml&amp;quot;) == false, &amp;quot;Did not return false for a non-scriptable property (size_xml)&amp;quot;)
	assert(isscriptable(fire, &amp;quot;Size&amp;quot;) == true, &amp;quot;Did not return true for a scriptable property (Size)&amp;quot;)
end)

test(&amp;quot;setscriptable&amp;quot;, {}, function()
	local fire = Instance.new(&amp;quot;Fire&amp;quot;)
	local wasScriptable = setscriptable(fire, &amp;quot;size_xml&amp;quot;, true)
	assert(wasScriptable == false, &amp;quot;Did not return false for a non-scriptable property (size_xml)&amp;quot;)
	assert(isscriptable(fire, &amp;quot;size_xml&amp;quot;) == true, &amp;quot;Did not set the scriptable property&amp;quot;)
	fire = Instance.new(&amp;quot;Fire&amp;quot;)
	assert(isscriptable(fire, &amp;quot;size_xml&amp;quot;) == false, &amp;quot;⚠️⚠️ setscriptable persists between unique instances ⚠️⚠️&amp;quot;)
end)

test(&amp;quot;setrbxclipboard&amp;quot;, {})

-- Metatable

test(&amp;quot;getrawmetatable&amp;quot;, {}, function()
	local metatable = { __metatable = &amp;quot;Locked!&amp;quot; }
	local object = setmetatable({}, metatable)
	assert(getrawmetatable(object) == metatable, &amp;quot;Did not return the metatable&amp;quot;)
end)

test(&amp;quot;hookmetamethod&amp;quot;, {}, function()
	local object = setmetatable({}, { __index = newcclosure(function() return false end), __metatable = &amp;quot;Locked!&amp;quot; })
	local ref = hookmetamethod(object, &amp;quot;__index&amp;quot;, function() return true end)
	assert(object.test == true, &amp;quot;Failed to hook a metamethod and change the return value&amp;quot;)
	assert(ref() == false, &amp;quot;Did not return the original function&amp;quot;)
end)

test(&amp;quot;getnamecallmethod&amp;quot;, {}, function()
	local method
	local ref
	ref = hookmetamethod(game, &amp;quot;__namecall&amp;quot;, function(...)
		if not method then
			method = getnamecallmethod()
		end
		return ref(...)
	end)
	game:GetService(&amp;quot;Lighting&amp;quot;)
	assert(method == &amp;quot;GetService&amp;quot;, &amp;quot;Did not get the correct method (GetService)&amp;quot;)
end)

test(&amp;quot;isreadonly&amp;quot;, {}, function()
	local object = {}
	table.freeze(object)
	assert(isreadonly(object), &amp;quot;Did not return true for a read-only table&amp;quot;)
end)

test(&amp;quot;setrawmetatable&amp;quot;, {}, function()
	local object = setmetatable({}, { __index = function() return false end, __metatable = &amp;quot;Locked!&amp;quot; })
	local objectReturned = setrawmetatable(object, { __index = function() return true end })
	assert(object, &amp;quot;Did not return the original object&amp;quot;)
	assert(object.test == true, &amp;quot;Failed to change the metatable&amp;quot;)
	if objectReturned then
		return objectReturned == object and &amp;quot;Returned the original object&amp;quot; or &amp;quot;Did not return the original object&amp;quot;
	end
end)

test(&amp;quot;setreadonly&amp;quot;, {}, function()
	local object = { success = false }
	table.freeze(object)
	setreadonly(object, false)
	object.success = true
	assert(object.success, &amp;quot;Did not allow the table to be modified&amp;quot;)
end)

-- Miscellaneous

test(&amp;quot;identifyexecutor&amp;quot;, {&amp;quot;getexecutorname&amp;quot;}, function()
	local name, version = identifyexecutor()
	assert(type(name) == &amp;quot;string&amp;quot;, &amp;quot;Did not return a string for the name&amp;quot;)
	return type(version) == &amp;quot;string&amp;quot; and &amp;quot;Returns version as a string&amp;quot; or &amp;quot;Does not return version&amp;quot;
end)

test(&amp;quot;lz4compress&amp;quot;, {}, function()
	local raw = &amp;quot;Hello, world!&amp;quot;
	local compressed = lz4compress(raw)
	assert(type(compressed) == &amp;quot;string&amp;quot;, &amp;quot;Compression did not return a string&amp;quot;)
	assert(lz4decompress(compressed, #raw) == raw, &amp;quot;Decompression did not return the original string&amp;quot;)
end)

test(&amp;quot;lz4decompress&amp;quot;, {}, function()
	local raw = &amp;quot;Hello, world!&amp;quot;
	local compressed = lz4compress(raw)
	assert(type(compressed) == &amp;quot;string&amp;quot;, &amp;quot;Compression did not return a string&amp;quot;)
	assert(lz4decompress(compressed, #raw) == raw, &amp;quot;Decompression did not return the original string&amp;quot;)
end)

test(&amp;quot;messagebox&amp;quot;, {})

test(&amp;quot;queue_on_teleport&amp;quot;, {&amp;quot;queueonteleport&amp;quot;})

test(&amp;quot;request&amp;quot;, {&amp;quot;http.request&amp;quot;, &amp;quot;http_request&amp;quot;}, function()
	local response = request({
		Url = &amp;quot;https://httpbin.org/user-agent&amp;quot;,
		Method = &amp;quot;GET&amp;quot;,
	})
	assert(type(response) == &amp;quot;table&amp;quot;, &amp;quot;Response must be a table&amp;quot;)
	assert(response.StatusCode == 200, &amp;quot;Did not return a 200 status code&amp;quot;)
	local data = game:GetService(&amp;quot;HttpService&amp;quot;):JSONDecode(response.Body)
	assert(type(data) == &amp;quot;table&amp;quot; and type(data[&amp;quot;user-agent&amp;quot;]) == &amp;quot;string&amp;quot;, &amp;quot;Did not return a table with a user-agent key&amp;quot;)
	return &amp;quot;User-Agent: &amp;quot; .. data[&amp;quot;user-agent&amp;quot;]
end)

test(&amp;quot;setclipboard&amp;quot;, {&amp;quot;toclipboard&amp;quot;})

test(&amp;quot;setfpscap&amp;quot;, {}, function()
	local renderStepped = game:GetService(&amp;quot;RunService&amp;quot;).RenderStepped
	local function step()
		renderStepped:Wait()
		local sum = 0
		for _ = 1, 5 do
			sum = sum + 1 / renderStepped:Wait()
		end
		return math.round(sum / 5)
	end
	setfpscap(60)
	local step60 = step()
	setfpscap(0)
	local step0 = step()
	return step60 .. &amp;quot;fps @60 • &amp;quot; .. step0 .. &amp;quot;fps @0&amp;quot;
end)

-- Scripts

test(&amp;quot;getgc&amp;quot;, {}, function()
	local gc = getgc()
	assert(type(gc) == &amp;quot;table&amp;quot;, &amp;quot;Did not return a table&amp;quot;)
	assert(#gc &amp;gt; 0, &amp;quot;Did not return a table with any values&amp;quot;)
end)

test(&amp;quot;getgenv&amp;quot;, {}, function()
	getgenv().__TEST_GLOBAL = true
	assert(__TEST_GLOBAL, &amp;quot;Failed to set a global variable&amp;quot;)
	getgenv().__TEST_GLOBAL = nil
end)

test(&amp;quot;getloadedmodules&amp;quot;, {}, function()
	local modules = getloadedmodules()
	assert(type(modules) == &amp;quot;table&amp;quot;, &amp;quot;Did not return a table&amp;quot;)
	assert(#modules &amp;gt; 0, &amp;quot;Did not return a table with any values&amp;quot;)
	assert(typeof(modules[1]) == &amp;quot;Instance&amp;quot;, &amp;quot;First value is not an Instance&amp;quot;)
	assert(modules[1]:IsA(&amp;quot;ModuleScript&amp;quot;), &amp;quot;First value is not a ModuleScript&amp;quot;)
end)

test(&amp;quot;getrenv&amp;quot;, {}, function()
	assert(_G ~= getrenv()._G, &amp;quot;The variable _G in the executor is identical to _G in the game&amp;quot;)
end)

test(&amp;quot;getrunningscripts&amp;quot;, {}, function()
	local scripts = getrunningscripts()
	assert(type(scripts) == &amp;quot;table&amp;quot;, &amp;quot;Did not return a table&amp;quot;)
	assert(#scripts &amp;gt; 0, &amp;quot;Did not return a table with any values&amp;quot;)
	assert(typeof(scripts[1]) == &amp;quot;Instance&amp;quot;, &amp;quot;First value is not an Instance&amp;quot;)
	assert(scripts[1]:IsA(&amp;quot;ModuleScript&amp;quot;) or scripts[1]:IsA(&amp;quot;LocalScript&amp;quot;), &amp;quot;First value is not a ModuleScript or LocalScript&amp;quot;)
end)

test(&amp;quot;getscriptbytecode&amp;quot;, {&amp;quot;dumpstring&amp;quot;}, function()
	local animate = game:GetService(&amp;quot;Players&amp;quot;).LocalPlayer.Character.Animate
	local bytecode = getscriptbytecode(animate)
	assert(type(bytecode) == &amp;quot;string&amp;quot;, &amp;quot;Did not return a string for Character.Animate (a &amp;quot; .. animate.ClassName .. &amp;quot;)&amp;quot;)
end)

test(&amp;quot;getscripthash&amp;quot;, {}, function()
	local animate = game:GetService(&amp;quot;Players&amp;quot;).LocalPlayer.Character.Animate:Clone()
	local hash = getscripthash(animate)
	local source = animate.Source
	animate.Source = &amp;quot;print(&amp;#x27;Hello, world!&amp;#x27;)&amp;quot;
	task.defer(function()
		animate.Source = source
	end)
	local newHash = getscripthash(animate)
	assert(hash ~= newHash, &amp;quot;Did not return a different hash for a modified script&amp;quot;)
	assert(newHash == getscripthash(animate), &amp;quot;Did not return the same hash for a script with the same source&amp;quot;)
end)

test(&amp;quot;getscripts&amp;quot;, {}, function()
	local scripts = getscripts()
	assert(type(scripts) == &amp;quot;table&amp;quot;, &amp;quot;Did not return a table&amp;quot;)
	assert(#scripts &amp;gt; 0, &amp;quot;Did not return a table with any values&amp;quot;)
	assert(typeof(scripts[1]) == &amp;quot;Instance&amp;quot;, &amp;quot;First value is not an Instance&amp;quot;)
	assert(scripts[1]:IsA(&amp;quot;ModuleScript&amp;quot;) or scripts[1]:IsA(&amp;quot;LocalScript&amp;quot;), &amp;quot;First value is not a ModuleScript or LocalScript&amp;quot;)
end)

test(&amp;quot;getsenv&amp;quot;, {}, function()
	local animate = game:GetService(&amp;quot;Players&amp;quot;).LocalPlayer.Character.Animate
	local env = getsenv(animate)
	assert(type(env) == &amp;quot;table&amp;quot;, &amp;quot;Did not return a table for Character.Animate (a &amp;quot; .. animate.ClassName .. &amp;quot;)&amp;quot;)
	assert(env.script == animate, &amp;quot;The script global is not identical to Character.Animate&amp;quot;)
end)

test(&amp;quot;getthreadidentity&amp;quot;, {&amp;quot;getidentity&amp;quot;, &amp;quot;getthreadcontext&amp;quot;}, function()
	assert(type(getthreadidentity()) == &amp;quot;number&amp;quot;, &amp;quot;Did not return a number&amp;quot;)
end)

test(&amp;quot;setthreadidentity&amp;quot;, {&amp;quot;setidentity&amp;quot;, &amp;quot;setthreadcontext&amp;quot;}, function()
	setthreadidentity(3)
	assert(getthreadidentity() == 3, &amp;quot;Did not set the thread identity&amp;quot;)
end)

-- Drawing

test(&amp;quot;Drawing&amp;quot;, {})

test(&amp;quot;Drawing.new&amp;quot;, {}, function()
	local drawing = Drawing.new(&amp;quot;Square&amp;quot;)
	drawing.Visible = false
	local canDestroy = pcall(function()
		drawing:Destroy()
	end)
	assert(canDestroy, &amp;quot;Drawing:Destroy() should not throw an error&amp;quot;)
end)

test(&amp;quot;Drawing.Fonts&amp;quot;, {}, function()
	assert(Drawing.Fonts.UI == 0, &amp;quot;Did not return the correct id for UI&amp;quot;)
	assert(Drawing.Fonts.System == 1, &amp;quot;Did not return the correct id for System&amp;quot;)
	assert(Drawing.Fonts.Plex == 2, &amp;quot;Did not return the correct id for Plex&amp;quot;)
	assert(Drawing.Fonts.Monospace == 3, &amp;quot;Did not return the correct id for Monospace&amp;quot;)
end)

test(&amp;quot;isrenderobj&amp;quot;, {}, function()
	local drawing = Drawing.new(&amp;quot;Image&amp;quot;)
	drawing.Visible = true
	assert(isrenderobj(drawing) == true, &amp;quot;Did not return true for an Image&amp;quot;)
	assert(isrenderobj(newproxy()) == false, &amp;quot;Did not return false for a blank table&amp;quot;)
end)

test(&amp;quot;getrenderproperty&amp;quot;, {}, function()
	local drawing = Drawing.new(&amp;quot;Image&amp;quot;)
	drawing.Visible = true
	assert(type(getrenderproperty(drawing, &amp;quot;Visible&amp;quot;)) == &amp;quot;boolean&amp;quot;, &amp;quot;Did not return a boolean value for Image.Visible&amp;quot;)
	local success, result = pcall(function()
		return getrenderproperty(drawing, &amp;quot;Color&amp;quot;)
	end)
	if not success or not result then
		return &amp;quot;Image.Color is not supported&amp;quot;
	end
end)

test(&amp;quot;setrenderproperty&amp;quot;, {}, function()
	local drawing = Drawing.new(&amp;quot;Square&amp;quot;)
	drawing.Visible = true
	setrenderproperty(drawing, &amp;quot;Visible&amp;quot;, false)
	assert(drawing.Visible == false, &amp;quot;Did not set the value for Square.Visible&amp;quot;)
end)

test(&amp;quot;cleardrawcache&amp;quot;, {}, function()
	cleardrawcache()
end)

-- WebSocket

test(&amp;quot;WebSocket&amp;quot;, {})

test(&amp;quot;WebSocket.connect&amp;quot;, {}, function()
	local types = {
		Send = &amp;quot;function&amp;quot;,
		Close = &amp;quot;function&amp;quot;,
		OnMessage = {&amp;quot;table&amp;quot;, &amp;quot;userdata&amp;quot;},
		OnClose = {&amp;quot;table&amp;quot;, &amp;quot;userdata&amp;quot;},
	}
	local ws = WebSocket.connect(&amp;quot;ws://echo.websocket.events&amp;quot;)
	assert(type(ws) == &amp;quot;table&amp;quot; or type(ws) == &amp;quot;userdata&amp;quot;, &amp;quot;Did not return a table or userdata&amp;quot;)
	for k, v in pairs(types) do
		if type(v) == &amp;quot;table&amp;quot; then
			assert(table.find(v, type(ws[k])), &amp;quot;Did not return a &amp;quot; .. table.concat(v, &amp;quot;, &amp;quot;) .. &amp;quot; for &amp;quot; .. k .. &amp;quot; (a &amp;quot; .. type(ws[k]) .. &amp;quot;)&amp;quot;)
		else
			assert(type(ws[k]) == v, &amp;quot;Did not return a &amp;quot; .. v .. &amp;quot; for &amp;quot; .. k .. &amp;quot; (a &amp;quot; .. type(ws[k]) .. &amp;quot;)&amp;quot;)
		end
	end
	ws:Close()
end)
local str = (&amp;quot;Executed with %d fails, %d passes, %d undefineds&amp;quot;):format(fails, passes, undefined)
print(str)&lt;/pre&gt;

</content></entry></feed>