A new modern house Im making, Im blurring it to prevent spoiler alert!
Not done yet!
Ill do a full post of the completed house version on the day I fully complete it!
Promise it will be without blur!
Ill do a full post of the completed house version on the day I fully complete it!
Promise it will be without blur!
Looks good! I hope to see your work in a game eventually!
I was hoping to ship that by the end of February of last year… and I just didn’t.
Due to some other projects I wanted to work on, I needed to rewrite the system from scratch. Still far from working on the new version of the plugin to make public, but I have made some good progress.
Some new features I have implemented are:
--[[
Tests the Skip method in Setup.
--]]
NexusUnitTesting:RegisterUnitTest("SkipInSetup",function(UnitTest)
--Create the component under testing.
local CuT = UnitTestClass.new("TestName")
--Set up the methods.
local SetupRun,TestRun,TeardownRun = false,false,false
function CuT:Setup()
SetupRun = true
UnitTest:AssertEquals(self.State,NexusUnitTestingProject.TestState.InProgress)
UnitTest:AssertEquals(self.CombinedState,NexusUnitTestingProject.TestState.InProgress)
self:Skip()
error("Test continued")
end
function CuT:Run()
TestRun = true
end
function CuT:Teardown()
TeardownRun = true
end
--Run the test and assert the states are correct.
UnitTest:AssertEquals(CuT.State,NexusUnitTestingProject.TestState.NotRun,"Test initially not run.")
UnitTest:AssertEquals(CuT.CombinedState,NexusUnitTestingProject.TestState.NotRun,"Test initially not run.")
CuT:RunTest()
UnitTest:AssertEquals(CuT.State,NexusUnitTestingProject.TestState.Skipped,"Test not skipped.")
UnitTest:AssertEquals(CuT.CombinedState,NexusUnitTestingProject.TestState.Skipped,"Test not skipped.")
UnitTest:AssertTrue(SetupRun,"Setup not ran.")
UnitTest:AssertFalse(TestRun,"Test ran.")
UnitTest:AssertFalse(TeardownRun,"Teardown ran.")
end)
-Better asserting of errors being thrown.
--[[
Tests the AssertErrors method.
--]]
NexusUnitTesting:RegisterUnitTest("AssertErrors",function(UnitTest)
--Create the component under testing.
local CuT = UnitTestClass.new("TestName")
CuT:SetSetup(function(UnitTest)
UnitTest:AssertErrors(function() error("Test error") end):Contains("Test"):Contains("error"):NotContains("something else"):NotEquals("something else")
end)
--Run the test and assert it passes.
UnitTest:AssertEquals(CuT.State,NexusUnitTestingProject.TestState.NotRun,"Test initially not run.")
UnitTest:AssertEquals(CuT.CombinedState,NexusUnitTestingProject.TestState.NotRun,"Test initially not run.")
CuT:RunTest()
UnitTest:AssertEquals(CuT.State,NexusUnitTestingProject.TestState.Passed,"Test not passed.")
UnitTest:AssertEquals(CuT.CombinedState,NexusUnitTestingProject.TestState.Passed,"Test not passed.")
end)
--[[
Tests the RunSubtests method without a failure.
--]]
NexusUnitTesting:RegisterUnitTest("RunSubtestsNoFailure",function(UnitTest)
--Create the component under testing.
local CuT1 = UnitTestClass.new("TestName1")
local CuT2 = UnitTestClass.new("TestName2"):SetSetup(function() UnitTest:AssertEquals(CuT1.CombinedState,NexusUnitTestingProject.TestState.InProgress) end)
local CuT3 = UnitTestClass.new("TestName3"):SetSetup(function() UnitTest:AssertEquals(CuT1.CombinedState,NexusUnitTestingProject.TestState.InProgress) end)
CuT1:RegisterUnitTest(CuT2)
CuT2:RegisterUnitTest(CuT3)
--Run the subtests and assert the state is correct.
CuT1.State = NexusUnitTestingProject.TestState.Passed
UnitTest:AssertEquals(CuT1.CombinedState,NexusUnitTestingProject.TestState.Passed,"Test state not correct.")
CuT1:RunSubtests()
UnitTest:AssertEquals(CuT1.CombinedState,NexusUnitTestingProject.TestState.Passed,"Test state not correct.")
UnitTest:AssertEquals(CuT2.State,NexusUnitTestingProject.TestState.Passed,"Test state not correct.")
UnitTest:AssertEquals(CuT2.CombinedState,NexusUnitTestingProject.TestState.Passed,"Test state not correct.")
UnitTest:AssertEquals(CuT3.State,NexusUnitTestingProject.TestState.Passed,"Test state not correct.")
UnitTest:AssertEquals(CuT3.CombinedState,NexusUnitTestingProject.TestState.Passed,"Test state not correct.")
end)
--[[
Tests a stack overflow error being thrown.
--]]
NexusUnitTesting:RegisterUnitTest("StackOverflow",function(UnitTest)
--Method that throws stack overflow.
local function StackOverflow()
StackOverflow()
end
--Call yxpcall with arguments.
local CalledError,CalledStackTrace
local Worked = yxpcall(function()
StackOverflow()
end,function(Error,StackTrace)
CalledError,CalledStackTrace = Error,StackTrace
end)
--Assert the results are correct.
UnitTest:AssertFalse(Worked,"Worked result is incorrect.")
UnitTest:AssertNotNil(string.find(CalledError,"stack overflow"),"Error message doesn't contain stack overflow.")
UnitTest:AssertNotNil(string.find(CalledStackTrace,"yxpcallTests"),"Error stack trace doesn't contain the script.")
UnitTest:AssertNotNil(string.find(CalledStackTrace,"StackOverflow"),"Error stack trace doesn't contain the function name.")
UnitTest:AssertTrue(#CalledStackTrace > 50000,"Stack trace isn't \"long\" ("..tostring(#CalledStackTrace).." < 50000 characters).")
end)
All of the code samples from above are tests used to test the new framework. The tests all pass, and should still work with the new version.
No ETA for a release of the plugin. Hoping to get the framework out by the end of next week.
Made a experimental Hole in Gui/Negative GUI thing( don’t know if it’s cool or useful, but why not), it has some issues, but with alot of experimental stuff( at least for me) there is bound to be some :
For those wondering this is made using the Deuluany triangulation algorithm and a couple other methods to go along with it(Point in Polygon(2d “raycasting”) , Clockwise vertex/vector sorting).
(btw it with works with any number of points, not just four, so theoretically circular holes can be made or really any shape)
The triangulation makes triangles that perfectly fit and surround within the bounds in the Hole, then the Centroid of each triangle is found to check whether the triangle is in the hole, indicating that it needs to be hidden
Looking really good, What ligtsabers are you basing on, Star wars, artificial lightsabers or other?
Thank you, I’m basing on Star Wars lightsabers.
Makes me wanna go skiing, very creative , modern, I am kinda curious, what did you use? (ie: Archimedes (ROBLOX Plugin), Blender or other)
Nice, I might have a go making lightsabers in the future when I am capable on blender, I am learning blender, I mostly build with roblox parts!
Same, I am used to roblox parts and most things I make are made from just roblox parts.
Good luck with making lightsabers
Im gonna learn! I am learning 3D modelling slowly, It might take a long time to get the hang of it.
I have finally opened Blender again after many months when I did it for the first time. And I tried to make another hat. This time it’s called Temple Guardian.
Archimedes, Blender and studio xD
I just finished making this dynamic inventory system that is multiplayer compatible and adjusts according to the inventory!
Multiplayer example:
Dragging & Closing:
It can also be “nested” in other UIs for stuff like a machine that needs an input (although I clearly need to change how it does scaling when nested):
I made it for my main personal project, but I wanted to make it as independent as possible so that it can be used in all kinds of projects… maybe I’ll even open source it.