You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lua-lemock/build/unit/userguide.lua

265 lines
6.2 KiB

-- ../src/doc/userguide/unittests.nw:7
-- ../src/misc.nw:7
------ THIS FILE IS TANGLED FROM LITERATE SOURCE FILES ------
-- Copyright (C) 2009 Tommy Pettersson <ptp@lysator.liu.se>
-- See terms in file COPYRIGHT, or at http://lemock.luaforge.net
-- ../src/doc/userguide/unittests.nw:8
require 'lunit'
module( 'unit.userguide', lunit.testcase, package.seeall )
-- ../src/doc/userguide/section_actions.nw:32
function actions_test ()
-- ../src/doc/userguide/section_actions.nw:20
require 'lemock'
local mc = lemock.controller()
local m = mc:mock()
m.x = 17 -- assignment
r = m.x -- indexing
m.x(1,2,3) -- method call
m:x(1,2,3) -- method call
m(1,2,3) -- self call
-- ../src/doc/userguide/section_actions.nw:34
end
-- ../src/doc/userguide/unittests.nw:13
-- ../src/doc/userguide/section_anyargs.nw:42
function example_anyargs_test ()
package.loaded.foo = nil
package.preload.foo = function ()
foo = {}
function foo.fetch_data (con)
local res = con:poll()
while not res do
con:sleep( 10 )
res = con:poll()
end
con.lasttime = os.time()
return tonumber( res )
end
end
-- ../src/doc/userguide/section_anyargs.nw:24
require 'lemock'
local mc = lemock.controller()
local con = mc:mock()
con:poll() ;mc :returns(nil)
con:sleep(mc.ANYARG)
con:poll() ;mc :returns('123.45')
con.lasttime = mc.ANYARG
mc:replay()
require 'foo'
local res = foo.fetch_data(con)
assert( math.abs(res-123.45) < 0.0005 )
mc:verify()
-- ../src/doc/userguide/section_anyargs.nw:57
end
-- ../src/doc/userguide/unittests.nw:14
-- ../src/doc/userguide/section_close.nw:53
function close_test ()
package.loaded.foo = nil
package.preload.foo = function ()
foo = {}
function foo.dump (xio, name, len)
local f = xio.open( name, 'r' )
f:read( len )
f:close()
end
end
-- ../src/doc/userguide/section_close.nw:31
require 'lemock'
local mc = lemock.controller()
local myio = mc:mock()
local fs = mc:mock()
myio.open('abc', 'r') ;mc :returns(fs)
mc :label('open')
fs:read(mc.ANYARG) ;mc :returns('data')
mc :atleastonce() :label('read') :depend('open')
fs:close() ;mc :returns(true)
mc :depend('open') :close('read')
mc:replay()
require 'foo'
foo.dump(myio, 'abc', 128)
mc:verify()
-- ../src/doc/userguide/section_close.nw:64
end
-- ../src/doc/userguide/unittests.nw:15
-- ../src/doc/userguide/section_label_depend.nw:57
function example_depend_test ()
package.loaded.foo = nil
package.preload.foo = function ()
foo = {}
function foo.draw_square (sq)
sq:botright() sq:topright() sq:rightedge()
sq:botleft() sq:topleft() sq:leftedge()
sq:topedge() sq:botedge()
sq:fill()
end
end
-- ../src/doc/userguide/section_label_depend.nw:35
require 'lemock'
local mc = lemock.controller()
local square = mc:mock()
square:topleft() ;mc :label('tl')
square:topright() ;mc :label('tr')
square:botleft() ;mc :label('bl')
square:botright() ;mc :label('br')
square:leftedge() ;mc :label('edge') :depend('tl', 'bl')
square:rightedge() ;mc :label('edge') :depend('tr', 'br')
square:topedge() ;mc :label('edge') :depend('tl', 'tr')
square:botedge() ;mc :label('edge') :depend('bl', 'br')
square:fill() ;mc :depend('edge')
mc:replay()
require 'foo'
foo.draw_square( square )
mc:verify()
-- ../src/doc/userguide/section_label_depend.nw:69
end
-- ../src/doc/userguide/unittests.nw:16
-- ../src/doc/userguide/chapter_tricks.nw:65
function overloading_test ()
-- ../src/doc/userguide/chapter_tricks.nw:39
require 'lemock'
local mc = lemock.controller()
local m = mc:mock()
do
local function add (a, b)
if type(a) == 'number' then
return m.add_number(a, b)
else
return m.add_string(a, b)
end
end
rawset( m, 'add', add ) -- not recorded
end -- do
m.add_number(1, 2) ;mc :returns(3)
m.add_string('foo', 'bar') ;mc :returns('foobar')
mc:replay()
assert_equal( 3, m.add(1, 2) )
assert_equal( 'foobar', m.add('foo', 'bar') )
mc:verify()
-- ../src/doc/userguide/chapter_tricks.nw:67
end
-- ../src/doc/userguide/unittests.nw:17
-- ../src/doc/userguide/section_returns_error.nw:36
function returns_error_test ()
-- ../src/doc/userguide/section_returns_error.nw:27
require 'lemock'
local mc = lemock.controller()
local m = mc:mock()
m:foo(17) ;mc :returns(nil, "index out of range")
m:bar(-1) ;mc :error("invalid index")
-- ../src/doc/userguide/section_returns_error.nw:38
end
-- ../src/doc/userguide/unittests.nw:18
-- ../src/doc/userguide/chapter_introduction.nw:71
function example_simple_test ()
package.loaded.foo = nil
package.preload.foo = function ()
foo = {}
q = require 'luasql.sqlite3'
function foo.insert_data()
local env = q()
local con = env:connect( '/data/base' )
local ok, err = pcall( con.execute, con, 'insert foo bar' )
con:close()
env:close()
return ok
end
return foo
end
-- ../src/doc/userguide/chapter_introduction.nw:40
-- Setup
require 'lemock'
local mc = lemock.controller()
local sqlite3 = mc:mock()
local env = mc:mock()
local con = mc:mock()
package.loaded.luasql = nil
package.preload['luasql.sqlite3'] = function ()
luasql = {}
luasql.sqlite3 = sqlite3
return sqlite3
end
-- Record
sqlite3() ;mc :returns(env)
env:connect('/data/base') ;mc :returns(con)
con:execute(mc.ANYARGS) ;mc :error('LuaSQL: no such table')
con:close()
env:close()
-- Replay
mc:replay()
require 'foo'
local res = foo.insert_data(17)
assert(res==false)
--Verify
mc:verify()
-- ../src/doc/userguide/chapter_introduction.nw:87
end
-- ../src/doc/userguide/unittests.nw:19
-- ../src/doc/userguide/section_times.nw:52
function example_times_test ()
package.loaded.foo = nil
package.preload.foo = function ()
foo = {}
function foo.mk_watcher ( con )
local o = {}
function o:set ( key, val )
con:update( key, val )
end
return o
end
end
-- ../src/doc/userguide/section_times.nw:36
require 'lemock'
local mc = lemock.controller()
local con = mc:mock()
con:log(mc.ANYARGS) ;mc :anytimes()
con:update('x',3) ;mc :returns(true) :atleastonce()
mc:replay()
require 'foo'
local watcher = foo.mk_watcher( con )
watcher:set( 'x', 3 )
mc:verify()
-- ../src/doc/userguide/section_times.nw:65
end