mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-06 06:15:32 +00:00
Add test to make sure player rotation does not lead to nan
This commit is contained in:
parent
75d9ab4d57
commit
323a8355d5
3 changed files with 42 additions and 0 deletions
|
@ -97,6 +97,30 @@ testing.registerLocalTest('playerPitchAndYawRotation',
|
|||
testing.expectEqualWithDelta(gamma2, math.rad(-16), 0.05, 'Incorrect gamma rotation in ZYX convention')
|
||||
end)
|
||||
|
||||
testing.registerLocalTest('playerRotation',
|
||||
function()
|
||||
local rotation = math.sqrt(2)
|
||||
local endTime = core.getSimulationTime() + 3
|
||||
while core.getSimulationTime() < endTime do
|
||||
self.controls.jump = false
|
||||
self.controls.run = true
|
||||
self.controls.movement = 0
|
||||
self.controls.sideMovement = 0
|
||||
self.controls.pitchChange = rotation
|
||||
self.controls.yawChange = rotation
|
||||
coroutine.yield()
|
||||
|
||||
local alpha1, gamma1 = self.rotation:getAnglesXZ()
|
||||
testing.expectThat(alpha1, testing.isNotNan(), 'Alpha rotation in XZ convention is nan')
|
||||
testing.expectThat(gamma1, testing.isNotNan(), 'Gamma rotation in XZ convention is nan')
|
||||
|
||||
local alpha2, beta2, gamma2 = self.rotation:getAnglesZYX()
|
||||
testing.expectThat(alpha2, testing.isNotNan(), 'Alpha rotation in ZYX convention is nan')
|
||||
testing.expectThat(beta2, testing.isNotNan(), 'Beta rotation in ZYX convention is nan')
|
||||
testing.expectThat(gamma2, testing.isNotNan(), 'Gamma rotation in ZYX convention is nan')
|
||||
end
|
||||
end)
|
||||
|
||||
testing.registerLocalTest('playerForwardRunning',
|
||||
function()
|
||||
local startPos = self.position
|
||||
|
|
|
@ -225,6 +225,10 @@ tests = {
|
|||
initPlayer()
|
||||
testing.runLocalTest(player, 'playerPitchAndYawRotation')
|
||||
end},
|
||||
{'rotating player should not lead to nan rotation', function()
|
||||
initPlayer()
|
||||
testing.runLocalTest(player, 'playerRotation')
|
||||
end},
|
||||
{'playerForwardRunning', function()
|
||||
initPlayer()
|
||||
testing.runLocalTest(player, 'playerForwardRunning')
|
||||
|
|
|
@ -133,6 +133,20 @@ function M.elementsAreArray(expected)
|
|||
end
|
||||
end
|
||||
|
||||
---
|
||||
-- Matcher verifying that given number is not a nan.
|
||||
-- @function isNotNan
|
||||
-- @usage
|
||||
-- expectThat(value, isNotNan())
|
||||
function M.isNotNan(expected)
|
||||
return function(actual)
|
||||
if actual ~= actual then
|
||||
return 'actual value is nan, expected to be not nan'
|
||||
end
|
||||
return ''
|
||||
end
|
||||
end
|
||||
|
||||
---
|
||||
-- Verifies that given value matches provided matcher.
|
||||
-- @function expectThat
|
||||
|
|
Loading…
Reference in a new issue