summaryrefslogtreecommitdiff
path: root/Data/Libraries/Penlight/tests/test-stringio.lua
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-10-30 11:32:16 +0800
committerchai <chaifix@163.com>2021-10-30 11:32:16 +0800
commit42ec7286b2d36a9ba22925f816a17cb1cc2aa5ce (patch)
tree24bc7009457a8d7500f264e89946dc20d069294f /Data/Libraries/Penlight/tests/test-stringio.lua
parent164885fd98d48703bd771f802d79557b7db97431 (diff)
+ Penlight
Diffstat (limited to 'Data/Libraries/Penlight/tests/test-stringio.lua')
-rw-r--r--Data/Libraries/Penlight/tests/test-stringio.lua72
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)
+
+
+
+