From 42ec7286b2d36a9ba22925f816a17cb1cc2aa5ce Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 30 Oct 2021 11:32:16 +0800 Subject: + Penlight --- Data/Libraries/Penlight/tests/test-stringio.lua | 72 +++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 Data/Libraries/Penlight/tests/test-stringio.lua (limited to 'Data/Libraries/Penlight/tests/test-stringio.lua') 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) + + + + -- cgit v1.1-26-g67d0