local Vector3 = require("worldeditadditions_core.utils.vector3") describe("Vector3.clamp", function() it("should work by not changing values if it's already clamped", function() local a = Vector3.new(5, 6, 7) local pos1 = Vector3.new(0, 0, 0) local pos2 = Vector3.new(10, 10, 10) local result = Vector3.clamp(a, pos1, pos2) assert.are.same( Vector3.new(5, 6, 7), result ) result.z = 999 assert.are.same(Vector3.new(5, 6, 7), a) assert.are.same(Vector3.new(0, 0, 0), pos1) assert.are.same(Vector3.new(10, 10, 10), pos2) end) it("should work with positive vectors", function() local a = Vector3.new(30, 3, 3) local pos1 = Vector3.new(0, 0, 0) local pos2 = Vector3.new(10, 10, 10) assert.are.same( Vector3.new(10, 3, 3), Vector3.clamp(a, pos1, pos2) ) end) it("should work with multiple positive vectors", function() local a = Vector3.new(30, 99, 88) local pos1 = Vector3.new(4, 4, 4) local pos2 = Vector3.new(13, 13, 13) assert.are.same( Vector3.new(13, 13, 13), Vector3.clamp(a, pos1, pos2) ) end) it("should work with multiple positive vectors with an irregular defined region", function() local a = Vector3.new(30, 99, 88) local pos1 = Vector3.new(1, 5, 3) local pos2 = Vector3.new(10, 15, 8) assert.are.same( Vector3.new(10, 15, 8), Vector3.clamp(a, pos1, pos2) ) end) it("should work with multiple negative vectors", function() local a = Vector3.new(-30, -99, -88) local pos1 = Vector3.new(4, 4, 4) local pos2 = Vector3.new(13, 13, 13) assert.are.same( Vector3.new(4, 4, 4), Vector3.clamp(a, pos1, pos2) ) end) it("should work with multiple negative vectors with an irregular defined region", function() local a = Vector3.new(-30, -99, -88) local pos1 = Vector3.new(1, 5, 3) local pos2 = Vector3.new(10, 15, 8) assert.are.same( Vector3.new(1, 5, 3), Vector3.clamp(a, pos1, pos2) ) end) it("should work with multiple negative vectors with an irregular defined region with mixed signs", function() local a = Vector3.new(-30, -99, -88) local pos1 = Vector3.new(-1, 5, 3) local pos2 = Vector3.new(10, 15, 8) assert.are.same( Vector3.new(-1, 5, 3), Vector3.clamp(a, pos1, pos2) ) end) it("should return new Vector3 instances", function() local a = Vector3.new(30, 3, 3) local pos1 = Vector3.new(0, 0, 0) local pos2 = Vector3.new(10, 10, 10) local result = Vector3.clamp(a, pos1, pos2) assert.are.same(Vector3.new(10, 3, 3), result) result.y = 999 assert.are.same(Vector3.new(30, 3, 3), a) assert.are.same(Vector3.new(0, 0, 0), pos1) assert.are.same(Vector3.new(10, 10, 10), pos2) end) end)