mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 01:14:41 +00:00
* fix =#13790 ptr char (+friends) should not implicitly convert to cstring * Apply suggestions from code review * first round; compiles on windows * nimPreviewSlimSystem * conversion is unsafe, cast needed * fixes more tests * fixes asyncnet * another try another error * last one * true * one more * why bugs didn't show at once * add `nimPreviewCstringConversion` switch * typo * fixes ptr to cstring warnings[backport] * add fixes Co-authored-by: xflywind <43030857+xflywind@users.noreply.github.com>
52 lines
1.3 KiB
Nim
52 lines
1.3 KiB
Nim
discard """
|
|
action: run
|
|
output: '''
|
|
|
|
[Suite] inet_ntop tests
|
|
'''
|
|
"""
|
|
|
|
when defined(windows):
|
|
import winlean
|
|
elif defined(posix):
|
|
import posix
|
|
else:
|
|
{.error: "Unsupported OS".}
|
|
|
|
import unittest, strutils
|
|
|
|
suite "inet_ntop tests":
|
|
|
|
setup:
|
|
when defined(windows):
|
|
var wsa: WSAData
|
|
discard wsaStartup(0x101'i16, wsa.addr)
|
|
|
|
test "IP V4":
|
|
# regular
|
|
var ip4 = InAddr()
|
|
ip4.s_addr = 0x10111213'u32
|
|
check: ip4.s_addr == 0x10111213'u32
|
|
|
|
var buff: array[0..255, char]
|
|
let r = inet_ntop(AF_INET, cast[pointer](ip4.s_addr.addr), cast[cstring](buff[0].addr), buff.len.int32)
|
|
let res = if r == nil: "" else: $r
|
|
check: res == "19.18.17.16"
|
|
|
|
test "IP V6":
|
|
when defined(windows):
|
|
let ipv6Support = (getVersion() and 0xff) > 0x5
|
|
else:
|
|
let ipv6Support = true
|
|
|
|
var ip6 = [0x1000'u16, 0x1001, 0x2000, 0x2001, 0x3000, 0x3001, 0x4000, 0x4001]
|
|
var buff: array[0..255, char]
|
|
let r = inet_ntop(AF_INET6, cast[pointer](ip6[0].addr), cast[cstring](buff[0].addr), buff.len.int32)
|
|
let res = if r == nil: "" else: $r
|
|
check: not ipv6Support or res == "10:110:20:120:30:130:40:140"
|
|
|
|
test "InAddr":
|
|
# issue 19244
|
|
var ip4 = InAddr(s_addr: 0x10111213'u32)
|
|
check: ip4.s_addr == 0x10111213'u32
|