Module:TableTools/testcases
Appearance
![]() | This is the test cases page for the module Module:TableTools. Results of the test cases. |
-- Unit tests for [[Module:TableTools]]. Click talk page to run tests.
local tt = require('Module:TableTools') -- the module to be tested
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
------------------------------------------------------------------------
-- Sparse array variables
------------------------------------------------------------------------
local sparseArray = {1, nil, 2, nil, 3, nil, [math.huge] = math.huge, foo = 'bar', [1.5] = 1.5, ['4'] = 'four_string'}
local sparseArrayConcatenated = '123'
local numKeysConcatenated = '135'
------------------------------------------------------------------------
-- Helper functions
------------------------------------------------------------------------
function suite.concatIpairs(t)
local ret = ''
for i, v in ipairs(t) do
ret = ret .. tostring(v)
end
return ret
end
function suite.concatAffixVals(t, nums, prefix, suffix)
local ret = ''
for i, num in ipairs(nums) do
ret = ret .. t[prefix or '' .. tostring(num) .. suffix or '']
end
return ret
end
------------------------------------------------------------------------
-- Test isPositiveInteger
------------------------------------------------------------------------
function suite:testIsPositiveInteger()
self:assertTrue(tt.isPositiveInteger(1))
self:assertTrue(tt.isPositiveInteger(2))
self:assertTrue(tt.isPositiveInteger(2323874623))
self:assertFalse(tt.isPositiveInteger(0))
self:assertFalse(tt.isPositiveInteger(-1))
self:assertFalse(tt.isPositiveInteger(0.5))
self:assertFalse(tt.isPositiveInteger(1.5))
self:assertFalse(tt.isPositiveInteger('1'))
self:assertFalse(tt.isPositiveInteger(math.huge))
self:assertFalse(tt.isPositiveInteger('foo'))
end
------------------------------------------------------------------------
-- Test getNumKeys
------------------------------------------------------------------------
function suite:testGetNumKeys()
local numKeys = tt.getNumKeys(sparseArray)
self:assertEquals(numKeysConcatenated, suite.concatIpairs(numKeys))
end
------------------------------------------------------------------------
-- Test getAffixNums
------------------------------------------------------------------------
local affixArray = {1, a0 = 'a0', a001 = 'a001', a1 = 'a1', b2 = 'b2', a3 = 'a3', c4d = 'c4d', b5 = 'b5', B6 = 'B6', f7 = 'f7', c8d = 'c8d', a9 = nil, a10 = 'a10', [11] = 11}
local aNumsConcatenated = '1310'
local aValsConcatenated = 'a1a3a10'
local bNumsConcatenated = '25'
local bValsConcatenated = 'b2b5'
local cdNumsConcatenated = '48'
local cdValsConcatenated = 'c4dc8d'
function suite:testGetAffixNums()
local aNums = tt.getAffixNums(affixArray, 'a')
local bNums = tt.getAffixNums(affixArray, 'b')
local cdNums = tt.getAffixNums(affixArray, 'cd')
self:assertEquals(aNumsConcatenated, suite.concatIpairs(aNums))
self:assertEquals(aValsConcatenated, suite.concatAffixVals(affixArray, aNums, 'a'))
self:assertEquals(bNumsConcatenated, suite.concatIpairs(bNums))
self:assertEquals(bValsConcatenated, suite.concatAffixVals(affixArray, bNums, 'b'))
self:assertEquals(cdNumsConcatenated, suite.concatIpairs(cdNums))
self:assertEquals(cdValsConcatenated, suite.concatAffixVals(affixArray, cdNums, 'c', 'd'))
end
------------------------------------------------------------------------
-- Test sparse array functions
------------------------------------------------------------------------
function suite:testCompressSparseArray()
local compressedArray = tt.compressSparseArray(sparseArray)
self:assertEquals(sparseArrayConcatenated, suite.concatIpairs(compressedArray))
end
function suite:testSparseIpairs()
local arrayText = ''
for i, v in tt.sparseIpairs(sparseArray) do
arrayText = arrayText .. tostring(v)
end
self:assertEquals(sparseArrayConcatenated, arrayText)
end
return suite