roman.lua
* ami tulajdonképpen csak egy váz valós funkcionalitás nélkül
module(..., package.seeall)
function toRoman(input)
if type(input) ~= "number" then
return nil, "input is not a number"
end
if input <1 or input > 3999 then
return nil, "out of range"
end
return "xiii"
end
És a tesztmodul, roman_testcase.lua:
require "lunit"
require "roman"
module( "roman_testcase", lunit.testcase, package.seeall )
--
-- toRoman input tests
--
function testToRomanInputNonInt()
-- toRoman should fail when given a non-integer number. --
local badInput="klikkklakk"
local result=roman.toRoman(badInput)
assert_nil(result, "[-] Input must be a number")
end
function testToRomanInputRange()
-- toRoman should fail when given an integer outside the range 1 to 3999. --
local outOfRange=9999
local result = roman.toRoman(outOfRange)
assert_nil(result, "[-] Input must be a number between 1 and 3999")
end
--
-- toRoman output tests
--
function testToRomanOutputUppercase()
-- toRoman should always return a Roman numeral using uppercase letters. --
function checkUpper(input)
if string.upper(input) == input then
return true
end
return false
end
result = roman.toRoman(13)
-- assert_true( checkUpper(result), "[-] Output is not uppercase" )
assert_equal( result:upper(), result )
end
Tesztelés:
$ lunit roman_testcase.lua
Loaded testsuite with 3 tests in 1 testcases.
..F
3 Assertions checked.
1) Failure (roman_testcase.testToRomanOutputUppercase):
roman_testcase.lua:39: expected 'XIII' but was 'xiii'
Testsuite finished (2 passed, 1 failed, 0 errors).
Mi is történik itt?
Egy külön modulban helyeztük el a római számokkal foglalkozó függvényeket. Konkrétan a toRoman függvényre írtunk két bemeneti és egy kimeneti tesztet.
A testToRomanInputNonInt teszt függvény ellenőrzi, hogy ha nem számot adunk meg a függvénynek, dob-e hibát.
A testToRomanInputRange tesztfüggvény ellenőrzi, hogy ha a tartományon kívűli értéket adunk meg dob-e megfelelő hibát.
A testToRomanOutputUppercase tesztfüggvény ellenőrzi, hogy a visszakapott érték csak nagybetűből áll.
Windows alól:
lunit.bat
@echo off
lua - %0 %* < starter.lua
Ahol a starter.lua:
local scriptname = ...
local argv = { select(2,...) }
if scriptname ~= "" then
local function force(name)
pcall( function() loadfile(name)() end )
end
force( scriptname..".lua" )
force( scriptname.."-console.lua" )
end
require "lunit"
local stats = lunit.main(argv)
if stats.errors > 0 or stats.failed > 0 then
os.exit(1)
end
Egy hátránya van, hogy nem igazán mobilis megoldás. Azaz a lunit.bat mellé kell másolni a starter.lua-t. :( Ennyire futotta.
- foofighter blogja
- A hozzászóláshoz be kell jelentkezni
- 574 megtekintés