* Bug 16522 fixed: bitget(x,pos) and bitset(..) with pos as encoded integer
[scilab.git] / scilab / modules / elementary_functions / tests / nonreg_tests / bug_16522.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2020 - Samuel GOUGEON
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- CLI SHELL MODE -->
9 // <-- NO CHECK REF -->
10 //
11 // <-- Non-regression test for bug 16522 -->
12 //
13 // <-- Bugzilla URL -->
14 // http://bugzilla.scilab.org/16522
15 //
16 // <-- Short Description -->
17 // bitget(x,pos) and bitset(x,pos) results could be wrong when pos is an
18 // encoded integer.
19 // Ex: bitget(2^(n*8-1), uint8(n*8)) with n in [1 2 4 8] returned 0 instead of 1
20
21 for cast = list(int8, int16, int32, int64, uint8, uint16, uint32, uint64)
22     assert_checkequal(bitget(255,  cast(8)), 1);
23     assert_checkequal(bitget(2^15, cast(16)), 1);
24     assert_checkequal(bitset(0,  cast(8)), 2^7);
25     assert_checkequal(bitset(0, cast(16)), 2^15);
26 end