|
8 | 8 | +/ |
9 | 9 | module reloadedvibes.utils; |
10 | 10 |
|
11 | | -import std.algorithm : canFind; |
| 11 | +import std.algorithm : canFind, count; |
12 | 12 | import std.ascii : isDigit; |
13 | 13 | import std.conv : to; |
14 | 14 | import std.string : indexOf, isNumeric; |
@@ -56,6 +56,12 @@ bool isIPv6(string address) nothrow @nogc |
56 | 56 | return false; |
57 | 57 | } |
58 | 58 |
|
| 59 | +unittest |
| 60 | +{ |
| 61 | + assert("127.0.0.1".isIPv6 == false); |
| 62 | + assert("::1".isIPv6); |
| 63 | +} |
| 64 | + |
59 | 65 | /++ |
60 | 66 | Tries to parse a socket string |
61 | 67 |
|
@@ -131,3 +137,40 @@ bool tryParseSocket(string s, out Socket socket) |
131 | 137 | socket.port = cast(ushort)(portInt); |
132 | 138 | return true; |
133 | 139 | } |
| 140 | + |
| 141 | +unittest |
| 142 | +{ |
| 143 | + import std.conv : to; |
| 144 | + import std.typecons : tuple; |
| 145 | + |
| 146 | + auto sockets = [ |
| 147 | + // dfmt off |
| 148 | + tuple("127.0.0.1:3001", true, Socket("127.0.0.1", 3001)), |
| 149 | + tuple("1.2.3.4:56", true, Socket("1.2.3.4", 56)), |
| 150 | + tuple("127.0.0.1:123456", false, Socket()), |
| 151 | + tuple("[::1]:80", true, Socket("::1", 80)), |
| 152 | + tuple("[1]]:3001", false, Socket()), |
| 153 | + tuple("10.0.0.1", false, Socket()), |
| 154 | + tuple("[2001:db8:1234:0000:0000:0000:0000:0000]:443", true, Socket("2001:db8:1234:0000:0000:0000:0000:0000", 443)), |
| 155 | + tuple("[2001:db8::1]", false, Socket()), |
| 156 | + tuple(":1", false, Socket()), |
| 157 | + tuple("::11", false, Socket()), |
| 158 | + tuple("12.1:10", false, Socket()), |
| 159 | + tuple("1.2.3.4:-56", false, Socket()), |
| 160 | + // dfmt on |
| 161 | + ]; |
| 162 | + |
| 163 | + foreach (idx, s; sockets) |
| 164 | + { |
| 165 | + Socket x; |
| 166 | + |
| 167 | + immutable r = tryParseSocket(s[0], x); |
| 168 | + |
| 169 | + assert(r == s[1], "Unexpected parser result: [" ~ idx.to!string ~ "] " ~ s[0] ~ " -> " ~ r.to!string); |
| 170 | + |
| 171 | + if (r) |
| 172 | + { |
| 173 | + assert(x == s[2], "Wrongly parsed: [" ~ idx.to!string ~ "] " ~ s[0]); |
| 174 | + } |
| 175 | + } |
| 176 | +} |
0 commit comments