Module:Storm categories/testcases

local ScribuntoUnit = require('Module:ScribuntoUnit') local sc = require('Module:Storm categories/sandbox') -- the module to be tested local suite = ScribuntoUnit:new

function suite:testColors self:assertEquals('c0c0c0', string.lower(sc._color)) self:assertEquals('c0c0c0', string.lower(sc._color(nil))) -- Ensure that none of the global scale colors are falling back to default. self:assertFalse('c0c0c0' == string.lower(sc._color('disturbance'))) self:assertFalse('c0c0c0' == string.lower(sc._color('depression'))) self:assertFalse('c0c0c0' == string.lower(sc._color('storm'))) self:assertFalse('c0c0c0' == string.lower(sc._color('sts'))) -- Ensure that none of the SSHWS scale colors are falling back to default. self:assertFalse('c0c0c0' == string.lower(sc._color('cat1'))) self:assertFalse('c0c0c0' == string.lower(sc._color('cat2'))) self:assertFalse('c0c0c0' == string.lower(sc._color('cat3'))) self:assertFalse('c0c0c0' == string.lower(sc._color('cat4'))) self:assertFalse('c0c0c0' == string.lower(sc._color('cat5'))) -- nullIfMissing self:assertEquals(nil, sc._color('not-an-actual-category', true)) self:assertFalse(nil == sc._color('cat1', true)) end

function suite:testNames self:assertEquals('Unknown-strength storm', sc._name) self:assertEquals('Unknown-strength storm', sc._name(nil)) -- Ensure that none of the global scale colors are falling back to default. self:assertFalse('Unknown-strength storm' == sc._name('disturbance')) self:assertFalse('Unknown-strength storm' == sc._name('depression')) self:assertFalse('Unknown-strength storm' == sc._name('storm')) self:assertFalse('Unknown-strength storm' == sc._name('sts')) -- Ensure that none of the SSHWS scale colors are falling back to default. self:assertFalse('Unknown-strength storm' == sc._name('cat1')) self:assertFalse('Unknown-strength storm' == sc._name('cat2')) self:assertFalse('Unknown-strength storm' == sc._name('cat3')) self:assertFalse('Unknown-strength storm' == sc._name('cat4')) self:assertFalse('Unknown-strength storm' == sc._name('cat5')) -- Basin differences self:assertFalse(sc._name('cat1') == sc._name('cat1', 'atl')) self:assertFalse(sc._name('cat1') == sc._name('cat1', 'wpac')) -- Default fallback self:assertEquals(sc._name('cat1', 'default'), sc._name('cat1', 'basin-that-does-not-exist')) -- nullIfMissing self:assertEquals(nil, sc._name('not-an-actual-category', nil, true)) self:assertFalse(nil == sc._name('cat1', nil, true)) self:assertFalse(nil == sc._name('cat1', 'atl', true)) self:assertFalse(nil == sc._name('cat1', 'wpac', true)) end

function suite:testSortkey self:assertEquals(0, sc._sortkey) self:assertEquals(0, sc._sortkey(nil)) -- Ensure that none of the global scale colors are falling back to default. self:assertFalse(0 == sc._sortkey('disturbance')) self:assertFalse(0 == sc._sortkey('depression')) self:assertFalse(0 == sc._sortkey('storm')) self:assertFalse(0 == sc._sortkey('sts')) -- Ensure that none of the SSHWS scale colors are falling back to default. self:assertFalse(0 == sc._sortkey('cat1')) self:assertFalse(0 == sc._sortkey('cat2')) self:assertFalse(0 == sc._sortkey('cat3')) self:assertFalse(0 == sc._sortkey('cat4')) self:assertFalse(0 == sc._sortkey('cat5')) -- Ensure that sortkeys are following the proper order. self:assertTrue(sc._sortkey('cat4') < sc._sortkey('cat5')) self:assertTrue(sc._sortkey('cat3') < sc._sortkey('cat4')) self:assertTrue(sc._sortkey('cat2') < sc._sortkey('cat3')) self:assertTrue(sc._sortkey('cat1') < sc._sortkey('cat2')) self:assertTrue(sc._sortkey('sts') < sc._sortkey('cat1')) self:assertTrue(sc._sortkey('storm') < sc._sortkey('sts')) self:assertTrue(sc._sortkey('depression') < sc._sortkey('storm')) self:assertTrue(sc._sortkey('disturbance') < sc._sortkey('depression')) self:assertTrue(sc._sortkey('unknown') < sc._sortkey('disturbance')) -- nullIfMissing self:assertEquals(nil, sc._sortkey('not-an-actual-category', true)) self:assertFalse(nil == sc._sortkey('cat1', true)) end

function suite:testIcons self:assertEquals("?", sc._icon) self:assertEquals("?", sc._icon(nil)) -- Ensure that none of the global scale colors are falling back to default. self:assertFalse("?" == sc._icon('disturbance')) self:assertFalse("?" == sc._icon('depression')) self:assertFalse("?" == sc._icon('storm')) self:assertFalse("?" == sc._icon('sts')) -- Ensure that none of the SSHWS scale colors are falling back to default. self:assertFalse("?" == sc._icon('cat1')) self:assertFalse("?" == sc._icon('cat2')) self:assertFalse("?" == sc._icon('cat3')) self:assertFalse("?" == sc._icon('cat4')) self:assertFalse("?" == sc._icon('cat5')) -- nullIfMissing self:assertEquals(nil, sc._icon('not-an-actual-category', true)) self:assertFalse(nil == sc._icon('cat1', true)) end

function suite:testIsEqual -- Equal existing categories self:assertTrue(sc._isEqual("depression", "depression")) -- Equal aliases self:assertTrue(sc._isEqual("depression", "td")) self:assertTrue(sc._isEqual("severets", "severe")) self:assertTrue(sc._isEqual("shdepression", "depression")) -- Not equal existing categories self:assertFalse(sc._isEqual("depression", "unknown")) self:assertFalse(sc._isEqual("depression", "cat5")) self:assertFalse(sc._isEqual("unknown", "cat5")) -- '5' is a generic ID that only has a color and an	self:assertFalse(sc._isEqual("5", "cat5")) self:assertFalse(sc._isEqual("a5", "aus5")) self:assertFalse(sc._isEqual("aus5", "cat5")) --== EDGE CASES -- Only one category exists self:assertFalse(sc._isEqual("depression", "not-an-actual-category")) -- None of the categories exist self:assertFalse(sc._isEqual("not-an-actual-category", "also-not-an-actual-category")) -- None of the categories exist but the IDs are equal self:assertTrue(sc._isEqual("not-an-actual-category", "not-an-actual-category")) -- Nil argument 1 self:assertFalse(sc._isEqual(nil, "not-an-actual-category")) -- Nil argument 2 self:assertFalse(sc._isEqual("not-an-actual-category", nil)) -- Nil arguments (but equal) self:assertFalse(sc._isEqual(nil, nil)) -- Missing argument 2 self:assertFalse(sc._isEqual("not-an-actual-category")) -- Missing arguments self:assertFalse(sc._isEqual) end

return suite