This module contains testcases for its parent module, Base64.
See also
local base64 = require('Module:Base64')
local suite = require('Module:ScribuntoUnit'):new()
----------------------
------- encode -------
----------------------
function suite:testEncoder()
-- Empty string
self:assertEquals('', base64.encoder(''), 'Incorrect value')
-- ASCII
self:assertEquals('SGVsbG8gd29ybGQh', base64.encoder('Hello world!'), 'Incorrect value')
self:assertEquals('SGVsbG8sIHdvcmxkIQ==', base64.encoder('Hello, world!'), 'Incorrect value')
-- UTF-8
self:assertEquals('UMWZw61sacWhIMW+bHXFpW91xI1rw70ga8WvxYggw7pwxJtsIMSPw6FiZWxza8OpIMOzZHk=', base64.encoder('Příliš žluťoučký kůň úpěl ďábelské ódy'), 'Incorrect value')
self:assertEquals('0KHRitC10YjRjCDQtdGJ0ZEg0Y3RgtC40YUg0LzRj9Cz0LrQuNGFINGE0YDQsNC90YbRg9C30YHQutC40YUg0LHRg9C70L7Quiwg0LTQsCDQstGL0L/QtdC5INC20LUg0YfQsNGO', base64.encoder('Съешь ещё этих мягких французских булок, да выпей же чаю'), 'Incorrect value')
self:assertEquals('55yf5piv6Zq+5Lul572u5L+h77yB', base64.encoder('真是难以置信!'), 'Incorrect value')
-- Binary data
self:assertEquals('AH+A/w==', base64.encoder(string.char(0, 127, 128, 255)), 'Incorrect value')
end
----------------------
------- decode -------
----------------------
function suite:testDecoder()
-- Empty string
self:assertEquals('', base64.decoder(''), 'Incorrect value')
-- ASCII
self:assertEquals('Hello world!', base64.decoder('SGVsbG8gd29ybGQh'), 'Incorrect value')
self:assertEquals('Hello, world!', base64.decoder('SGVsbG8sIHdvcmxkIQ=='), 'Incorrect value')
-- Strings that should be trimmed
self:assertEquals('Hello world!', base64.decoder(' SGVsbG8gd29ybGQh'), 'Incorrect value')
self:assertEquals('Hello, world!', base64.decoder(' SGVsbG8sIHdvcmxkIQ== '), 'Incorrect value')
-- Missing padding
self:assertEquals('Hello, world!', base64.decoder('SGVsbG8sIHdvcmxkIQ'), 'Incorrect value')
-- UTF-8
self:assertEquals('Příliš žluťoučký kůň úpěl ďábelské ódy', base64.decoder('UMWZw61sacWhIMW+bHXFpW91xI1rw70ga8WvxYggw7pwxJtsIMSPw6FiZWxza8OpIMOzZHk='), 'Incorrect value')
self:assertEquals('Съешь ещё этих мягких французских булок, да выпей же чаю', base64.decoder('0KHRitC10YjRjCDQtdGJ0ZEg0Y3RgtC40YUg0LzRj9Cz0LrQuNGFINGE0YDQsNC90YbRg9C30YHQutC40YUg0LHRg9C70L7Quiwg0LTQsCDQstGL0L/QtdC5INC20LUg0YfQsNGO'), 'Incorrect value')
self:assertEquals('真是难以置信!', base64.decoder('55yf5piv6Zq+5Lul572u5L+h77yB'), 'Incorrect value')
-- Binary data
self:assertEquals(string.char(0, 127, 128, 255), base64.decoder('AH+A/w=='), 'Incorrect value')
end
function suite:testDecoderErrors()
local noError, result
-- Non-ASCII characters in the string
noError, result = pcall(base64.decoder, 'ЯSGVsbG8gd29ybGQh')
result = noError and result or nil
self:assertEquals(nil, result, 'Incorrect value')
noError, result = pcall(base64.decoder, '真SGVsbG8gd信29ybGQh')
result = noError and result or nil
self:assertEquals(nil, result, 'Incorrect value')
-- Incorrect string length
noError, result = pcall(base64.decoder, 'SGVsbG8sIHdvcmxkI')
result = noError and result or nil
self:assertEquals(nil, result, 'Incorrect value')
end
return suite