summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/luazlib/test_zlib.lua
blob: e5a18da8175469bdcbf13c87c298b54273a2b932 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
-- $Id: test_zlib.lua,v 1.3 2004/07/22 19:10:47 tngd Exp $
-- zlib = loadlib("./lzlib.so", "luaopen_zlib")()


local function line(header, c)
    header = header or ''
    c = c or '-'
    print(string.rep(string.sub(c, 1, 1), 78 - string.len(header))..header)
end

local function ipart(value)
    return value - math.mod(value, 1)
end

local function bitvalues(value, bstart, num)
    value = ipart(value / 2^bstart)
    return math.mod(value, 2^num)
end

line(' zlib '..zlib.version(), '=')

line(' adler32')
local adler = zlib.adler32()
print('adler32 init : '..adler)
adler = zlib.adler32(adler, 'some text')
print('updated adler: '..adler)
adler = zlib.adler32(adler, 'some text')
print('updated adler: '..adler)
adler = zlib.adler32(adler, 'some text')
print('updated adler: '..adler)
adler = zlib.adler32(adler, 'some text')
print('updated adler: '..adler)
adler = zlib.adler32(adler, 'some text')
print('updated adler: '..adler)
adler = zlib.adler32(adler, 'some textd')
print('updated adler: '..adler)

line(' crc32')
local crc = zlib.crc32()
print('crc32 init : '..crc)
crc = zlib.crc32(crc, 'some text')
print('updated crc: '..crc)
crc = zlib.crc32(crc, 'some text')
print('updated crc: '..crc)
crc = zlib.crc32(crc, 'some text')
print('updated crc: '..crc)
crc = zlib.crc32(crc, 'some text')
print('updated crc: '..crc)
crc = zlib.crc32(crc, 'some text')
print('updated crc: '..crc)
crc = zlib.crc32(crc, 'some textd')
print('updated crc: '..crc)


line(' deflate/inflate')
local us
f = io.open('test_zlib.lua') -- f = io.open('../all.tar')
us = f:read('*a')
f:close()

do -- local block

local f, cs, zd, zi, aux_res, res, ret, count

print('file length              : '..string.len(us))

cs = ''
zd = zlib.compressobj(1)
print('deflate stream           : '..tostring(zd))

cs = cs .. zd:compress(string.sub(us, 1, string.len(us)/2))
cs = cs .. zd:compress(string.sub(us, string.len(us)/2+1))
cs = cs .. zd:flush()

print('compressed length        : '..string.len(cs))
print('compressed adler         : '..tostring(zd:adler()))
zd:close()

zi = zlib.decompressobj()
print('inflate stream           : '..tostring(zi))
res = ''
res = res .. zi:decompress(string.sub(cs, 1, 10))
res = res .. zi:decompress(string.sub(cs, 11))
res = res .. zi:flush()
print('uncompressed length      : '..string.len(res))
print('uncompressed adler       : '..tostring(zi:adler()))
zi:close()
print('result == uncompressed   : '..tostring(res == us))
print('compression ratio        : '..tostring(string.len(us)/string.len(cs)))

end -- local block
collectgarbage()

line(' compress/uncompress')
do -- local block
local cs, res
print('file length              : '..string.len(us))
cs = zlib.compress(us,1)
print('compressed length        : '..string.len(cs))
res = zlib.decompress(cs)
print('compressed length        : '..string.len(res))
print('result == uncompressed   : '..tostring(res == us))
print('compression ratio        : '..tostring(string.len(us)/string.len(cs)))
end -- local block

line(' zlib '..zlib.version(), '=')