Skip to content

Commit

Permalink
[Experimental] Expose and fix pretty string shortcomings / corner cases
Browse files Browse the repository at this point in the history
  • Loading branch information
n1tehawk committed Nov 12, 2016
1 parent a1224df commit e0d1d18
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 6 deletions.
18 changes: 18 additions & 0 deletions luaunit.lua
Expand Up @@ -412,6 +412,24 @@ local function prettystr_sub(v, indentLevel, keeponeline, printTableRefs, recurs
--end
return M.private._table_tostring(v, indentLevel, keeponeline,
printTableRefs, recursionTable)

elseif "number" == type_v then
-- eliminate differences in formatting between various Lua versions
if _VERSION == "Lua 5.3" then
local i = math.tointeger(v)
if i then
return tostring(i)
end
end
if v ~= v then
return "#NaN" -- "not a number"
end
if v == math.huge then
return "#Inf" -- "infinite"
end
if v == -math.huge then
return "-#Inf"
end
end

return tostring(v)
Expand Down
12 changes: 6 additions & 6 deletions test/test_luaunit.lua
Expand Up @@ -214,7 +214,11 @@ TestLuaUnitUtilities = { __class__ = 'TestLuaUnitUtilities' }

function TestLuaUnitUtilities:test_prettystr()
lu.assertEquals( lu.prettystr( 1 ), "1" )
lu.assertEquals( lu.prettystr( 1.1 ), "1.1" )
lu.assertEquals( lu.prettystr( 1.0 ), "1" )
lu.assertEquals( lu.prettystr( 1.2 ), "1.2" )
lu.assertEquals( lu.prettystr( 1/0 ), "#Inf" )
lu.assertEquals( lu.prettystr( -1/0 ), "-#Inf" )
lu.assertEquals( lu.prettystr( 0/0 ), "#NaN" )
lu.assertEquals( lu.prettystr( 'abc' ), '"abc"' )
lu.assertEquals( lu.prettystr( 'ab\ncd' ), '"ab\ncd"' )
lu.assertEquals( lu.prettystr( 'ab\ncd', true ), '"ab\\ncd"' )
Expand Down Expand Up @@ -1695,11 +1699,7 @@ TestLuaUnitErrorMsg = { __class__ = 'TestLuaUnitErrorMsg' }
assertFailureEquals( 'expected: "exp"\nactual: "act"', lu.assertEquals, 'act', 'exp' )
assertFailureEquals( 'expected: \n"exp\npxe"\nactual: \n"act\ntca"', lu.assertEquals, 'act\ntca', 'exp\npxe' )
assertFailureEquals( 'expected: true, actual: false', lu.assertEquals, false, true )
if _VERSION == 'Lua 5.3' then
assertFailureEquals( 'expected: 1.2, actual: 1.0', lu.assertEquals, 1.0, 1.2)
else
assertFailureEquals( 'expected: 1.2, actual: 1', lu.assertEquals, 1.0, 1.2)
end
assertFailureEquals( 'expected: 1.2, actual: 1', lu.assertEquals, 1.0, 1.2)
assertFailureMatches( 'expected: {1, 2, 3}\nactual: {3, 2, 1}', lu.assertEquals, {3,2,1}, {1,2,3} )
assertFailureMatches( 'expected: {one=1, two=2}\nactual: {3, 2, 1}', lu.assertEquals, {3,2,1}, {one=1,two=2} )
assertFailureEquals( 'expected: 2, actual: nil', lu.assertEquals, nil, 2 )
Expand Down

0 comments on commit e0d1d18

Please sign in to comment.