diff --git a/tests/testnative.nim b/tests/testnative.nim index 2f3fdfbc3e..9c6b2dc0e7 100644 --- a/tests/testnative.nim +++ b/tests/testnative.nim @@ -56,4 +56,5 @@ import testtcptransport, testautonatservice, testautorelay, testdcutr, - testhpservice + testhpservice, + testutility diff --git a/tests/testutility.nim b/tests/testutility.nim new file mode 100644 index 0000000000..18c8ce141c --- /dev/null +++ b/tests/testutility.nim @@ -0,0 +1,76 @@ +{.used.} + +# Nim-Libp2p +# Copyright (c) 2023 Status Research & Development GmbH +# Licensed under either of +# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE)) +# * MIT license ([LICENSE-MIT](LICENSE-MIT)) +# at your option. +# This file may not be copied, modified, or distributed except according to +# those terms. + +import strformat +import ./helpers +import ../libp2p/utility + +suite "Utility": + + test "successful safeConvert from int8 to int16": + var result: int16 = safeConvert[int16, int8](-128) + assert result == -128, fmt"Expected -128 but got {result}" + + test "unsuccessful safeConvert from int16 to int8": + doAssert not (compiles do: + var result: int8 = safeConvert[int8, int16](32767)) + + test "successful safeConvert from uint8 to uint16": + var result: uint16 = safeConvert[uint16, uint8](255) + assert result == 255, fmt"Expected 255 but got {result}" + + test "unsuccessful safeConvert from uint16 to uint8": + doAssert not (compiles do: + var result: uint8 = safeConvert[uint8, uint16](256)) + + test "successful safeConvert from char to int": + var result: int = safeConvert[int, char]('A') + assert result == 65, fmt"Expected 65 but got {result}" + + test "unsuccessful safeConvert from int to char": + doAssert not (compiles do: + var result: char = safeConvert[char, int](128)) + + test "successful safeConvert from bool to int": + var result: int = safeConvert[int, bool](true) + assert result == 1, fmt"Expected 1 but got {result}" + + test "unsuccessful safeConvert from int to bool": + doAssert not (compiles do: + var result: bool = safeConvert[bool, int](2)) + + test "successful safeConvert from enum to int": + type Color = enum red, green, blue + var result: int = safeConvert[int, Color](green) + assert result == 1, fmt"Expected 1 but got {result}" + + test "unsuccessful safeConvert from int to enum": + type Color = enum red, green, blue + doAssert not (compiles do: + var result: Color = safeConvert[Color, int](3)) + + test "successful safeConvert from range to int": + var result: int = safeConvert[int, range[1..10]](5) + assert result == 5, fmt"Expected 5 but got {result}" + + test "unsuccessful safeConvert from int to range": + doAssert not (compiles do: + var result: range[1..10] = safeConvert[range[1..10], int](11)) + + test "unsuccessful safeConvert from int to uint": + doAssert not (compiles do: + var result: uint = safeConvert[uint, int](11)) + + test "unsuccessful safeConvert from uint to int": + doAssert not (compiles do: + var result: uint = safeConvert[int, uint](11)) + +