diff options
author | chai <chaifix@163.com> | 2021-10-30 11:32:16 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-10-30 11:32:16 +0800 |
commit | 42ec7286b2d36a9ba22925f816a17cb1cc2aa5ce (patch) | |
tree | 24bc7009457a8d7500f264e89946dc20d069294f /Data/Libraries/Penlight/tests/test-stringio.lua | |
parent | 164885fd98d48703bd771f802d79557b7db97431 (diff) |
+ Penlight
Diffstat (limited to 'Data/Libraries/Penlight/tests/test-stringio.lua')
-rw-r--r-- | Data/Libraries/Penlight/tests/test-stringio.lua | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Data/Libraries/Penlight/tests/test-stringio.lua b/Data/Libraries/Penlight/tests/test-stringio.lua new file mode 100644 index 0000000..93a1990 --- /dev/null +++ b/Data/Libraries/Penlight/tests/test-stringio.lua @@ -0,0 +1,72 @@ +local stringio = require 'pl.stringio' +local test = require 'pl.test' +local asserteq = test.asserteq +local T = test.tuple + +function fprintf(f,fmt,...) + f:write(fmt:format(...)) +end + +fs = stringio.create() +for i = 1,100 do + fs:write('hello','\n','dolly','\n') +end +asserteq(#fs:value(),1200) + +fs = stringio.create() +fs:writef("%s %d",'answer',42) -- note writef() extension method +asserteq(fs:value(),"answer 42") + +inf = stringio.open('10 20 30') +asserteq(T(inf:read('*n','*n','*n')),T(10,20,30)) + +local txt = [[ +Some lines +here are they +not for other +english? + +]] + +inf = stringio.open (txt) +fs = stringio.create() +for l in inf:lines() do + fs:write(l,'\n') +end +asserteq(txt,fs:value()) + +inf = stringio.open '1234567890ABCDEF' +asserteq(T(inf:read(3), inf:read(5), inf:read()),T('123','45678','90ABCDEF')) + +s = stringio.open 'one\ntwo' +asserteq(s:read() , 'one') +asserteq(s:read() , 'two') +asserteq(s:read() , nil) +s = stringio.open 'one\ntwo' +iter = s:lines() +asserteq(iter() , 'one') +asserteq(iter() , 'two') +asserteq(iter() , nil) +s = stringio.open 'ABC' +iter = s:lines(1) +asserteq(iter() , 'A') +asserteq(iter() , 'B') +asserteq(iter() , 'C') +asserteq(iter() , nil) + +s = stringio.open '20 5.2e-2 52.3' +x,y,z = s:read('*n','*n','*n') +out = stringio.create() +fprintf(out,"%5.2f %5.2f %5.2f!",x,y,z) +asserteq(out:value(),"20.00 0.05 52.30!") + +s = stringio.open 'one\ntwo\n\n' +iter = s:lines '*L' +asserteq(iter(),'one\n') +asserteq(iter(),'two\n') +asserteq(iter(),'\n') +asserteq(iter(),nil) + + + + |