summary refs log tree commit diff stats
path: root/tests/stdlib/tparseipv6.nim
blob: dd9abc511b3c9069a9b8f553b028af621da437b1 (plain) (blame)
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
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
/*
** $Id: lualib.h,v 1.36.1.1 2007/12/27 13:02:25 roberto Exp $
discard """
  output: "all ok"
"""

import net

const
  positives = [
    "::f:8:a8f:218.17.235.229",
    "::b:228.19.241.2",
    "::8:c:a:f:8.35.8.96",
    "::3:e:a:bc:4.19.2.9",
    "::2:212.242.248.19",
    "::df:a5f:3.250.208.9",
    "::8:c:5:e63:250.208.249.0",
    "::b:f:181.12.9.98",
    "::a:f8:77.8.243.232",
    "::a:b:85:e4d9:252.9.229.56",
    "941:c:8a:c:e::917",
    "e8:7a:e:ad:88a:8:203.235.225.46",
    "139c:9e::f8:254.8.21.249",
    "b38:f0:e::f9:89.6.12.18",
    "ef::8",
    "5::ab",
    "a::8:255.247.96.253",
    "b:c0::c:254.248.95.254",
    "::8c:2:99.251.24.3",
    "98::c:247.240.249.57",
    "9::9",
    "628::f1ed:f",
    "c::cca8",
    "2::3:c",
    "fde::8fcc:92:e",
    "f::3",
    "e85::7",
    "8::b:f6",
    "0::6:8ca",
    "c8::6e:be8",
    "87::e",
    "6:9::a7:9",
    "c::5",
    "49::1:62",
    "df:c0::f:9",
    "a09a:8::21:887a",
    "2:f::c",
    "8bf5:5::2a6e:f8f",
    "a:9e::bc:a",
    "f:60::c:fd",
    "59::52f:0:fa7",
    "8268:6cf::f:9",
    "c:abb::f",
    "a:ff8d::9:7",
    "05:c87::9c:9a",
    "e:f::c:9a:1",
    "ff6:8::962:e",
    "9::bd",
    "68:ec::6",
    "3b8:f::94:3e9:9952",
    "49b4:ae::899:b4",
    "cb9:8e8:af::f4",
    "8::10:9ae6:f9",
    "b9::2:57",
    "ff:fba9::d",
    "4::a:8",
    "caa:c:85a::2:3",
    "5::a5:9",
    "c:ad::a",
    "9a:f:f65::b",
    "f:df::9:0",
    "c:b9::8de",
    "d:f::a",
    "ab88:d4:0::fc:8d",
    "8f:ee2::3",
    "f:f8::bf2:8c8",
    "8::efc",
    "e:5a::b",
    "c:48::94",
    "a:b:5::8",
    "f:88f::f0a6",
    "9:f:e::3",
    "b::fedd",
    "7b:f::c",
    "edf4:7d::88",
    "89::d",
    "c0:a:62::ac",
    "7:f::b",
    "8::a2",
    "0f::1",
    "::",
    "b:8::",
    "44:a::",
    "ef8f::",
    "b:4:d::",
    "a::",
    "5a:8::",
    "ddaf:ecbf::",
    "f:bb:a1::",
    "f8:f::",
    "::e:38:ab:f8",
    "::cd:c",
    "::aa3:eb",
    "::bf:9f9",
    "::7ef:bf8a",
    "::9",
    "::a:9af",
    "::315",
    "::a:a",
    "::aed3:a",
    "f0eb:0:e8:b:c:a:254.98.233.17",
    "bfa:7fc:c66d:15:e9a:ded:254.119.9.9",
    "d:ffa8:9:a:879:3:202.39.8.245",
    "8e:2:8:fa8a:f1d1:1aa8:252.254.245.81",
    "5:d4:a:e9:8:8:6.38.98.253",
    "9c5:4:a5c:f:a6:8c9d:5.250.8.2",
    "d19a:2:f808:be:f:c:98.86.197.249",
    "8:26ac:8:8:cb:f:242.0.254.85",
    "38:e:1:0b88:f:0:8.89.248.92",
    "e7:ff96:a:f:f:b:253.91.52.195",
    "d:8:2:5:894:5:254.0.240.199",
    "2:98:9:8aa:9c8f:fa:252.98.248.17",
    "e9:d4f:890:ccbe:5:8:88.200.228.216",
    "3:3:9:5:6a:df5:255.251.8.12",
    "0280:3:8:8:4:9:255.0.251.249",
    "8:af7:db:aa:0:9:238.248.250.255",
    "ff:ee:9a:9252:a:289:59.83.18.255",
    "9f6:5:fc9:b:a89:a:142.1.250.254",
    "e:981a:da:bf94:9:f8:254.242.18.95",
    "3c:1:4:f2:89:f:8.91.255.14",
    "e::9a2:c:9.50.80.8",
    "9::4a:07:fb:211.241.254.228",
    "9be::2:e:215.189.48.188",
    "f::f:d:69.148.99.168",
    "f::a:97.18.240.47",
    "c::a98e:1:251.253.252.254",
    "668::82:214.87.208.9",
    "9c0::cf0:ecb:253.208.238.255",
    "a::0:f1:210.240.238.49",
    "8::a:1:251.238.34.9",
    "81:dfe::b8:8.255.249.248",
    "d3::7:b:9:83.189.8.244",
    "8::9:8:8:0.7.11.252",
    "2:8::c:a8:250.221.9.249",
    "2::f:99.8.249.247",
    "c:22f5::5:2c:243.15.79.89",
    "e:8e::da:251.243.255.2",
    "f15f:9::a:255.70.247.218",
    "f:b::9f38:31.220.94.22",
    "9::9a48:3.98.249.119",
    "d:d:9b87::2d:a:249.253.38.8",
    "d86d:99b::a9b:5:242.236.8.244",
    "eb:3::f:9cf:1.253.1.228",
    "b::ba2:255.247.114.64",
    "2f:ec:bcb::9:219.254.250.94",
    "da8a:f6::a:e0:19.251.241.251",
    "5e:c1::a:21.250.8.254",
    "c:9::8c9b:248.219.212.252",
    "2:a::8d4a:216.255.198.223",
    "1f::66:255.30.8.150",
    "bc2b:8f::2ff9:6.245.99.230",
    "a:8::a8:9.251.246.255",
    "f:7:7::98:6.14.1.208",
    "e:2::9:218.249.255.254",
    "79:f::6:250.255.98.246",
    "47:9:fb9f::9:38.136.17.251",
    "ed::a:247.9.23.239",
    "6f::f1:88.254.119.9",
    "a::d:218.199.236.0",
    "fc88::9:203.196.4.95",
    "::8.48.255.85",
    "::253.7.255.36",
    "9:d::253.7.178.229",
    "::250.84.158.253",
    "::8.55.204.248",
    "2d:c::253.18.18.252",
    "df9:88ca::248.255.108.17",
    "8e9b::250.206.0.82",
    "::209.8.254.209",
    "::247.88.8.8",
    "::cb:f:ba41:250.208.19.249",
    "::fe:0e8:243.240.229.5",
    "::c:223.251.5.226",
    "::8:8.3.8.250",
    "::f:8.88.11.255",
    "::fda:48:aa:5.189.7.2",
    "::8:c3f:f:240.6.212.255",
    "::f:0aa:244.123.99.16",
    "::c9b5:c:34.8.90.196",
    "::98:c9:254.14.241.81"
  ]
  negatives = ["foo.bar",
    "::::::::::::",
    "yet another failure",
    "de:6:c:ab5:6a::9:252.6.6.249",
    "f9:5f7:fa38:9:b::b6:9.255.248.252",
    "97:c:5b:81:8a::f5dd:144.252.250.9",
    "9:8:cd:8:a9::f:247.255.9.255",
    "18:1:8c:2:3::9:8.254.252.139",
    "e:c298:3:e:a::bb12:254.246.5.250",
    "e:e:c:8e:fd::8:253.8.49.231",
    "9:97f:f:e929:8a::c9:0.8.252.10",
    "0df:b24:7:89:c::2b:16.249.240.92",
    "b:8f5f:485:c:9a::84c:178.7.249.34",
    "::3:e:a:bc:091.19.2.9",
    "::a:f8:77.08.243.232",
    "::8c:2:99.251.029.3",
    "::8:c:a:f:8.35.8.096",
    "d:ffa8:9:a:879:3:0202.39.8.245",
    "139c:9e::f8:254.07.21.249",
    "f0eb:0:e8:b:c:a:254.233.043.17",
    "::a:b:85:e4d9:252.9.229.056",
  ]

proc ok(pos: openarray[string]) =
  for p in pos:
    if not isIpAddress(p):
      echo "failure ", p

proc notok(neg: openarray[string]) =
  for n in neg:
    if isIpAddress(n):
      echo "failure ", n

ok(positives)
notok(negatives)
echo "all ok"