File: hexlit.test.lua

package info (click to toggle)
tarantool 2.6.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 85,364 kB
  • sloc: ansic: 513,760; cpp: 69,489; sh: 25,650; python: 19,190; perl: 14,973; makefile: 4,173; yacc: 1,329; sql: 1,074; pascal: 620; ruby: 190; awk: 18; lisp: 7
file content (128 lines) | stat: -rwxr-xr-x 4,422 bytes parent folder | download | duplicates (3)
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/usr/bin/env tarantool
test = require("sqltester")
test:plan(128)

--!./tcltestrunner.lua
-- 2014-07-23
--
-- The author disclaims copyright to this source code.  In place of
-- a legal notice, here is a blessing:
--
--    May you do good and not evil.
--    May you find forgiveness for yourself and forgive others.
--    May you share freely, never taking more than you give.
--
-------------------------------------------------------------------------
--
-- This file implements tests for hexadecimal literals
-- ["set","testdir",[["file","dirname",["argv0"]]]]
-- ["source",[["testdir"],"\/tester.tcl"]]
local function hexlit1(tnum, val, ans)
    test:do_execsql_test(
        "hexlit-"..tnum,
        "SELECT "..val.."", {
            ans
        })

end

hexlit1(100, "0x0", 0)
hexlit1(101, "0x0000000000000000000000000000000000000000000001", 1)
hexlit1(102, "0x2", 2)
hexlit1(103, "0x4", 4)
hexlit1(104, "0x8", 8)
hexlit1(105, "0x00000000000000000000000000000000000000000000010", 16)
hexlit1(103, "0x20", 32)
hexlit1(106, "0x40", 64)
hexlit1(107, "0x80", 128)
hexlit1(108, "0x100", 256)
hexlit1(109, "0x200", 512)
hexlit1(110, "0X400", 1024)
hexlit1(111, "0x800", 2048)
hexlit1(112, "0x1000", 4096)
hexlit1(113, "0x2000", 8192)
hexlit1(114, "0x4000", 16384)
hexlit1(115, "0x8000", 32768)
hexlit1(116, "0x10000", 65536)
hexlit1(117, "0x20000", 131072)
hexlit1(118, "0x40000", 262144)
hexlit1(119, "0x80000", 524288)
hexlit1(120, "0x100000", 1048576)
hexlit1(121, "0x200000", 2097152)
hexlit1(122, "0x400000", 4194304)
hexlit1(123, "0x800000", 8388608)
hexlit1(124, "0x1000000", 16777216)
hexlit1(125, "0x2000000", 33554432)
hexlit1(126, "0x4000000", 67108864)
hexlit1(127, "0x8000000", 134217728)
hexlit1(128, "0x10000000", 268435456)
hexlit1(129, "0x20000000", 536870912)
hexlit1(130, "0x40000000", 1073741824)
hexlit1(131, "0x80000000", 2147483648)
hexlit1(132, "0x100000000", 4294967296)
hexlit1(133, "0x200000000", 8589934592)
hexlit1(134, "0x400000000", 17179869184)
hexlit1(135, "0x800000000", 34359738368)
hexlit1(136, "0x1000000000", 68719476736)
hexlit1(137, "0x2000000000", 137438953472)
hexlit1(138, "0x4000000000", 274877906944)
hexlit1(139, "0x8000000000", 549755813888)
hexlit1(140, "0x10000000000", 1099511627776)
hexlit1(141, "0x20000000000", 2199023255552)
hexlit1(142, "0x40000000000", 4398046511104)
hexlit1(143, "0x80000000000", 8796093022208)
hexlit1(144, "0x100000000000", 17592186044416)
hexlit1(145, "0x200000000000", 35184372088832)
hexlit1(146, "0x400000000000", 70368744177664)
hexlit1(147, "0x800000000000", 140737488355328LL)
hexlit1(148, "0x1000000000000", 281474976710656LL)
hexlit1(149, "0x2000000000000", 562949953421312LL)
hexlit1(150, "0x4000000000000", 1125899906842624LL)
hexlit1(151, "0x8000000000000", 2251799813685248LL)
hexlit1(152, "0x10000000000000", 4503599627370496LL)
hexlit1(153, "0x20000000000000", 9007199254740992LL)
hexlit1(154, "0x40000000000000", 18014398509481984LL)
hexlit1(155, "0x80000000000000", 36028797018963968LL)
hexlit1(156, "0x100000000000000", 72057594037927936LL)
hexlit1(157, "0x200000000000000", 144115188075855872LL)
hexlit1(158, "0x400000000000000", 288230376151711744LL)
hexlit1(159, "0x800000000000000", 576460752303423488LL)
hexlit1(160, "0X1000000000000000", 1152921504606846976LL)
hexlit1(161, "0x2000000000000000", 2305843009213693952LL)
hexlit1(162, "0X4000000000000000", 4611686018427387904LL)
hexlit1(163, "0x8000000000000000", -9223372036854775808LL)
hexlit1(164, "0XFFFFFFFFFFFFFFFF", 18446744073709551615LL)
for n = 1, 0x10 -1, 1 do
    hexlit1("200."..n..".1", "0X"..string.format("%03X",n), n)
    hexlit1("200."..n..".2", "0x"..string.format("%03X",n), n)
    hexlit1("200."..n..".3", "0X"..string.format("%03X",n), n)
    hexlit1("200."..n..".4", "0x"..string.format("%03X",n), n)
end

-- Oversized hex literals are rejected
--
test:do_catchsql_test(
    "hexlist-400",
    [[
        SELECT 0x10000000000000000;
    ]], {
        -- <hexlist-400>
        1, "Hex literal 0x10000000000000000 length 17 exceeds the supported limit (16)"
        -- </hexlist-400>
    })

test:do_catchsql_test(
    "hexlist-410",
    [[
        DROP TABLE IF EXISTS t1;
        CREATE TABLE t1(x INT primary key);
        INSERT INTO t1 VALUES(1+0x10000000000000000);
    ]], {
        -- <hexlist-410>
        1, "Hex literal 0x10000000000000000 length 17 exceeds the supported limit (16)"
        -- </hexlist-410>
    })



test:finish_test()