diff options
author | Miran <narimiran@users.noreply.github.com> | 2018-10-16 10:50:10 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-10-16 10:50:10 +0200 |
commit | 749dbce4c69224f5464908d8f714291f17aa60fa (patch) | |
tree | cc91326ef536f15d8d9aa97efab4fc8473d093c7 /tests/range | |
parent | f04c93b5dd1ee5e185f6849ad8116d08a687026d (diff) | |
download | Nim-749dbce4c69224f5464908d8f714291f17aa60fa.tar.gz |
Merge tests into a larger file (part 5 of ∞) (#9368)
* merge magics * merge metatype tests * merge method tests * merge objects tests * change `import future` to `import sugar` Nim in Action tests are left with `import future`, to ensure compatibility. * merge overload tests * merge proc tests * merge procvar tests * merge range tests * merge seq tests * merge sets tests * remove wrong assert from `tsets3` * fix `jsTests` * better fix
Diffstat (limited to 'tests/range')
-rw-r--r-- | tests/range/tbug499771.nim | 14 | ||||
-rw-r--r-- | tests/range/tcolors.nim | 39 | ||||
-rw-r--r-- | tests/range/tmatrix3.nim | 41 | ||||
-rw-r--r-- | tests/range/tn8vsint16.nim | 18 | ||||
-rw-r--r-- | tests/range/trange.nim | 107 |
5 files changed, 107 insertions, 112 deletions
diff --git a/tests/range/tbug499771.nim b/tests/range/tbug499771.nim deleted file mode 100644 index 1504a2ad7..000000000 --- a/tests/range/tbug499771.nim +++ /dev/null @@ -1,14 +0,0 @@ -discard """ - file: "tbug499771.nim" - output: '''TSubRange: 5 from 1 to 10 -true true true''' -""" -type - TSubRange = range[1 .. 10] - TEnum = enum A, B, C -var sr: TSubRange = 5 -echo("TSubRange: " & $sr & " from " & $low(TSubRange) & " to " & - $high(TSubRange)) - -const cset = {A} + {B} -echo A in cset, " ", B in cset, " ", C notin cset diff --git a/tests/range/tcolors.nim b/tests/range/tcolors.nim deleted file mode 100644 index ab5b3e199..000000000 --- a/tests/range/tcolors.nim +++ /dev/null @@ -1,39 +0,0 @@ -import strutils - -type - TColor = distinct int32 - -proc rgb(r, g, b: range[0..255]): TColor = - result = TColor(r or g shl 8 or b shl 16) - -proc `$`(c: TColor): string = - result = "#" & toHex(int32(c), 6) - -echo rgb(34, 55, 255) - -when false: - type - TColor = distinct int32 - TColorComponent = distinct int8 - - proc red(a: TColor): TColorComponent = - result = TColorComponent(int32(a) and 0xff'i32) - - proc green(a: TColor): TColorComponent = - result = TColorComponent(int32(a) shr 8'i32 and 0xff'i32) - - proc blue(a: TColor): TColorComponent = - result = TColorComponent(int32(a) shr 16'i32 and 0xff'i32) - - proc rgb(r, g, b: range[0..255]): TColor = - result = TColor(r or g shl 8 or b shl 8) - - proc `+!` (a, b: TColorComponent): TColorComponent = - ## saturated arithmetic: - result = TColorComponent(min(ze(int8(a)) + ze(int8(b)), 255)) - - proc `+` (a, b: TColor): TColor = - ## saturated arithmetic for colors makes sense, I think: - return rgb(red(a) +! red(b), green(a) +! green(b), blue(a) +! blue(b)) - - rgb(34, 55, 255) diff --git a/tests/range/tmatrix3.nim b/tests/range/tmatrix3.nim deleted file mode 100644 index fe666b0d8..000000000 --- a/tests/range/tmatrix3.nim +++ /dev/null @@ -1,41 +0,0 @@ -discard """ - output: '''0.0 -0.0 -0 -0 -0 -''' -""" - -include compilehelpers - -type - Matrix*[M, N, T] = object - aij*: array[M, array[N, T]] - - Matrix2*[T] = Matrix[range[0..1], range[0..1], T] - - Matrix3*[T] = Matrix[range[0..2], range[0..2], T] - -proc mn(x: Matrix): Matrix.T = x.aij[0][0] - -proc m2(x: Matrix2): Matrix2.T = x.aij[0][0] - -proc m3(x: Matrix3): auto = x.aij[0][0] - -var - matn: Matrix[range[0..3], range[0..2], int] - mat2: Matrix2[int] - mat3: Matrix3[float] - -echo m3(mat3) -echo mn(mat3) -echo m2(mat2) -echo mn(mat2) -echo mn(matn) - -reject m3(mat2) -reject m3(matn) -reject m2(mat3) -reject m2(matn) - diff --git a/tests/range/tn8vsint16.nim b/tests/range/tn8vsint16.nim deleted file mode 100644 index bf4f78e3b..000000000 --- a/tests/range/tn8vsint16.nim +++ /dev/null @@ -1,18 +0,0 @@ -discard """ - output: '''-9''' -""" - -type - n32 = range[0..high(int)] - n8* = range[0'i8..high(int8)] - -proc `+`*(a: n32, b: n32{nkIntLit}): n32 = discard - -proc `-`*(a: n8, b: n8): n8 = n8(system.`-`(a, b)) - -var x, y: n8 -var z: int16 - -# ensure this doesn't call our '-' but system.`-` for int16: -echo z - n8(9) - diff --git a/tests/range/trange.nim b/tests/range/trange.nim new file mode 100644 index 000000000..bc48e9566 --- /dev/null +++ b/tests/range/trange.nim @@ -0,0 +1,107 @@ +discard """ + output: ''' +TSubRange: 5 from 1 to 10 +#FF3722 +''' +""" + + +block tbug499771: + type + TSubRange = range[1 .. 10] + TEnum = enum A, B, C + var sr: TSubRange = 5 + echo("TSubRange: " & $sr & " from " & $low(TSubRange) & " to " & + $high(TSubRange)) + + const cset = {A} + {B} + doAssert A in cset + doAssert B in cset + doAssert C notin cset + + + +include compilehelpers +block tmatrix3: + type + Matrix[M, N, T] = object + aij: array[M, array[N, T]] + + Matrix2[T] = Matrix[range[0..1], range[0..1], T] + + Matrix3[T] = Matrix[range[0..2], range[0..2], T] + + proc mn(x: Matrix): Matrix.T = x.aij[0][0] + + proc m2(x: Matrix2): Matrix2.T = x.aij[0][0] + + proc m3(x: Matrix3): auto = x.aij[0][0] + + var + matn: Matrix[range[0..3], range[0..2], int] + mat2: Matrix2[int] + mat3: Matrix3[float] + + doAssert m3(mat3) == 0.0 + doAssert mn(mat3) == 0.0 + doAssert m2(mat2) == 0 + doAssert mn(mat2) == 0 + doAssert mn(matn) == 0 + + reject m3(mat2) + reject m3(matn) + reject m2(mat3) + reject m2(matn) + + + +block tn8vsint16: + type + n32 = range[0..high(int)] + n8 = range[0'i8..high(int8)] + + proc `+`(a: n32, b: n32{nkIntLit}): n32 = discard + + proc `-`(a: n8, b: n8): n8 = n8(system.`-`(a, b)) + + var x, y: n8 + var z: int16 + + # ensure this doesn't call our '-' but system.`-` for int16: + doAssert z - n8(9) == -9 + + + +import strutils +block tcolors: + type TColor = distinct int32 + + proc rgb(r, g, b: range[0..255]): TColor = + result = TColor(r or g shl 8 or b shl 16) + proc `$`(c: TColor): string = + result = "#" & toHex(int32(c), 6) + echo rgb(34, 55, 255) + + when false: + type + TColor = distinct int32 + TColorComponent = distinct int8 + + proc red(a: TColor): TColorComponent = + result = TColorComponent(int32(a) and 0xff'i32) + proc green(a: TColor): TColorComponent = + result = TColorComponent(int32(a) shr 8'i32 and 0xff'i32) + proc blue(a: TColor): TColorComponent = + result = TColorComponent(int32(a) shr 16'i32 and 0xff'i32) + proc rgb(r, g, b: range[0..255]): TColor = + result = TColor(r or g shl 8 or b shl 8) + + proc `+!` (a, b: TColorComponent): TColorComponent = + ## saturated arithmetic: + result = TColorComponent(min(ze(int8(a)) + ze(int8(b)), 255)) + + proc `+` (a, b: TColor): TColor = + ## saturated arithmetic for colors makes sense, I think: + return rgb(red(a) +! red(b), green(a) +! green(b), blue(a) +! blue(b)) + + rgb(34, 55, 255) |