Module:Size/testcases

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Lua

CodeDiscussionEditHistoryLinksLink count Subpages:DocumentationTestsResultsSandboxLive code All modules

✓[OK] All tests passed.

Name Expected Actual
✓[OK] test_metadata
✓[OK] test_outer
✓[OK] test_size_from_wikidata
✓[OK] test_size_with_dimension_names
✓[OK] test_size_with_precission
✓[OK] test_size_without_dimension_names

Code

local TUT = mw.title.new(mw.getCurrentFrame():getTitle()).basePageTitle -- the title under test
local p = require(TUT.prefixedText)-- the module to be tested
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()

function suite:test_size_without_dimension_names()
	self:assertEquals( '0,8 × 8 м',                                    p._size_old({0.8, 8},     'm', nil, 'ru'))
	local dims = {0.8, 8, 80}
	self:assertEquals( '0.8 × 8 × 80 cm (0.3 × 3.1 × 31.4 in)',        p._size_old(dims,'cm', nil, 'en'))
	self:assertEquals( '0.8 × 8 × 80 in (2 × 20.3 × 203.2 cm)',        p._size_old(dims,'in', nil, 'en'))
	self:assertEquals( '0,8 × 8 × 80 фут (24,3 × 243,8 × 2438,4 см)',  p._size_old(dims,'ft', nil, 'ru'))
	self:assertEquals( '0,8 × 8 × 80 stóp (24,3 × 243,8 × 2438,4 cm)', p._size_old(dims,'ft', nil, 'pl'))
	self:assertEquals( '0.8×8×80厘米',                                 p._size_old(dims,'cm', nil, 'zh-hans'))
	self:assertEquals( '0.8 × 8 × 80 in (2 × 20.3 × 203.2 cm)',        p._size_old({'0.8', '8', '80'}, 'in', nil, 'en'))
	self:assertEquals( '0.8 × 8 × 80 in (2 × 20.3 × 203.2 cm)',        p._size_old({'0,8', '8', '80'}, 'in', nil, 'en'))
	
	local dims = {1001, 1034}
	self:assertEquals( '1.001 × 1.034 mm',                     p._size_old(dims,'mm', nil, 'de'))
	self:assertEquals( '1001 × 1034 mm',                       p._size_old(dims,'mm', nil, 'pl'))
	self:assertEquals( '1,001 × 1,034 mm (39.40 × 40.70 in)',  p._size_old(dims,'mm', nil, 'en'))
--	self:assertEquals( '',                                     p._size_old(dims,'', nil, 'en'))
end

function suite:test_size_with_precission()
	local dims = {0.33333, 3.3333, 33.333}
	self:assertEquals( '0,3 × 3,3 × 33,3 cm',        p._size_old(dims,'cm', 1, 'de'))
	self:assertEquals( '0,33 × 3,33 × 33,33 cm',     p._size_old(dims,'cm', 2, 'de'))
	self:assertEquals( '0,333 × 3,333 × 33,333 cm',  p._size_old(dims,'cm', 3, 'de'))
end


function suite:test_size_with_dimension_names()
	local prec = nil
	self:assertEquals( 'wysokość: 8 stóp (243,8 cm); szerokość: 0,8 stóp (24,3 cm)', p._size({width=0.8, height=8, tagqs=false}, 'ft', prec, 'pl'))
	self:assertEquals( 'Höhe: 1.234 mm; Breite: 1.000 mm', p._size({width=1000, height=1234, tagqs=false}, 'mm', prec, 'de'))
	
	local dims = {width=0.8, height=8, length=11, thickness=11, diameter=133, tagqs=false}
	local str  = 'length: 11 m (12 yd); height: 8 m (26.2 ft); width: 0.8 m (31.4 in); thickness: 11 m (12 yd); diameter: 133 m (145.4 yd)'
	self:assertEquals( str, p._size(dims, 'm', prec, 'en'))

	local str  = 'długość: 11 m; wysokość: 8 m; szerokość: 0,8 m; grubość: 11 m; średnica: 133 m'
	self:assertEquals( str, p._size(dims, 'm', prec, 'pl'))

	local str  = '长度:11m;高度:8m;宽度:0.8m;厚度:11m;直径:133m'
--	self:assertEquals( str, p._size(dims, 'm', prec, 'zh-hans'))
end

function suite:test_size_from_wikidata()
	local prec, lang = nil, 'en'
	self:assertEquals('height: 426 cm (13.9 ft); width: 987 cm (10.7 yd)', p._size({wikidata='Q2636368',  noicon=true, tagqs=false}, '', prec, lang))
	self:assertEquals('height: 77 cm (30.3 in); width: 53 cm (20.8 in)',   p._size({wikidata='Q12418',    noicon=true, tagqs=false}, '', prec, lang))
	self:assertEquals('diameter: 9.7 cm (3.8 in); mass: 184.7 g (6.5 oz)', p._size({wikidata='Q27783250', noicon=true, tagqs=false}, '', prec, lang))
	self:assertEquals('mass: 163.4 ct',                                    p._size({wikidata='Q29727315', noicon=true, tagqs=false}, '', prec, lang))
end

function suite:test_outer()
	local mod = '{{#invoke:' .. TUT.text .. '|size| '
	self:assertSameResult( mod..'1000|1234|lang=de}}', '')
	self:assertSameResult( mod..'cm|0.8|8|80|lang=en}}', '0.8 × 8 × 80 cm (0.3 × 3.1 × 31.4 in)')
	self:assertSameResult( '{{#invoke:Size/sandbox|size|cm|0.8|8|80|lang=en}}', '0.8 × 8 × 80 cm (0.3 × 3.1 × 31.4 in)')
	self:assertSameResult( mod..'units=mm|width=1000|height=1234|lang=de|tagQS=false}}', 'Höhe: 1.234 mm; Breite: 1.000 mm')
	self:assertSameResult( mod..'units=ft|width=0.8|height=8|lang=pl|tagQS=false}}', 'wysokość: 8 stóp (243,8 cm); szerokość: 0,8 stóp (24,3 cm)')
end

function suite:test_metadata()
	local frame = mw.getCurrentFrame()
	local mod = '{{#invoke:' .. TUT.text .. '|size| '
	-- QuickStatements codes	
	local text = 'Höhe: 1.234 mm; Breite: 1.000 mm<div style="display: none;">dimensions QS:P2048,1234U174789</div><div style="display: none;">dimensions QS:P2049,1000U174789</div>'
	local code = frame:preprocess( mod..'units=mm|width=1000|height=1234|lang=de}}' )
	self:assertEquals(  string.gsub(code, "[\r\n]", ""), text)  -- strip end-of-line characters as they mess up the comparison

	text = 'wysokość: 8 stóp (243,8 cm); szerokość: 0,8 stóp (24,3 cm)<div style="display: none;">dimensions QS:P2048,8U3710</div><div style="display: none;">dimensions QS:P2049,0.8U3710</div>'
	local code = frame:preprocess( mod..'units=ft|width=0.8|height=8|lang=pl|tagQS=true}}' )
	self:assertEquals(  string.gsub(code, "[\r\n]", ""), text)  -- strip end-of-line characters as they mess up the comparison

	-- wikidata icon
	text = "mass: 163.4 ct&nbsp;[[File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=Edit this at Wikidata|link=https://www.wikidata.org/wiki/Q29727315#P2067|Edit this at Wikidata]]"
	self:assertSameResult( mod..'wikidata=Q29727315|lang=en|tagQS=false}}', text)
end

return suite