Note: This website is archived. For up-to-date information about D projects and development, please visit wiki.dlang.org.

Changeset 800

Show
Ignore:
Timestamp:
12/12/10 07:36:48 (14 years ago)
Author:
braddr
Message:

Fix bitops tests to look at the right bits since they differ between 32 and 64 bits.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/test/runnable/bitops.d

    r574 r800  
    11// PERMUTE_ARGS: 
    22 
    33import std.c.stdio; 
    44import std.intrinsic; 
    55 
    66/*****************************************************/ 
    77 
    88void test1() 
    99{    
    10     uint array[2]; 
     10    size_t array[2]; 
    1111    uint x; 
     12version (X86) 
     13    size_t bitToUse = 35; 
     14else version (X86_64) 
     15    size_t bitToUse = 67; 
     16else 
     17    static assert(0); 
    1218 
    1319    array[0] = 2; 
    1420    array[1] = 0x100; 
     21    printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]); 
    1522 
    16     x = btc(array.ptr, 35); 
    17     printf("btc(array, 35) = %d\n", x); 
     23    x = btc(array.ptr, bitToUse); 
     24    printf("btc(array, %d) = %d\n", bitToUse, x); 
     25    printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]); 
     26    assert(x == 0); 
     27    assert(array[0] == 0x2 && array[1] == 0x108); 
     28 
     29    x = btc(array.ptr, bitToUse); 
     30    printf("btc(array, %d) = %d\n", bitToUse, x); 
     31    printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]); 
     32    assert(x != 0); 
     33    assert(array[0] == 2 && array[1] == 0x100); 
     34 
     35    x = bts(array.ptr, bitToUse); 
     36    printf("bts(array, %d) = %d\n", bitToUse, x); 
    1837    printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]); 
    1938    assert(x == 0); 
    2039    assert(array[0] == 2 && array[1] == 0x108); 
    2140 
    22  
    23     x = btc(array.ptr, 35); 
    24     printf("btc(array, 35) = %d\n", x); 
    25     printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]); 
    26     assert(x != 0); 
    27     assert(array[0] == 2 && array[1] == 0x100); 
    28  
    29     x = bts(array.ptr, 35); 
    30     printf("bts(array, 35) = %d\n", x); 
    31     printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]); 
    32     assert(x == 0); 
    33     assert(array[0] == 2 && array[1] == 0x108); 
    34  
    35     x = btr(array.ptr, 35); 
    36     printf("btr(array, 35) = %d\n", x); 
     41    x = btr(array.ptr, bitToUse); 
     42    printf("btr(array, %d) = %d\n", bitToUse, x); 
    3743    printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]); 
    3844    assert(x != 0); 
    3945    assert(array[0] == 2 && array[1] == 0x100); 
    4046 
    4147    x = bt(array.ptr, 1); 
    4248    printf("bt(array, 1) = %d\n", x); 
    4349    printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]); 
    4450    assert(x != 0); 
    4551    assert(array[0] == 2 && array[1] == 0x100); 
    4652}  
    4753 
    4854/*****************************************************/ 
    4955 
    5056void test2() 
    5157{    
    5258    uint v; 
    5359    int x; 
    5460 
    5561    v = 0x21; 
    5662    x = bsf(v); 
     
    7379    b = inpl(b); 
    7480 
    7581    b = outp(v, cast(ubyte)b); 
    7682    b = outpw(v, cast(ushort)b); 
    7783    b = outpl(v, b); 
    7884} 
    7985 
    8086/*****************************************************/ 
    8187 
    8288void test4() 
    8389{ 
    8490    uint i = 0x12_34_56_78; 
    8591    i = bswap(i); 
    8692    assert(i == 0x78_56_34_12); 
    8793} 
    8894 
    8995/*****************************************************/ 
    9096     
    9197void test5() 
    9298{    
    93     uint array[2]; 
     99    size_t array[2]; 
    94100 
    95101    array[0] = 2; 
    96102    array[1] = 0x100; 
    97103 
    98104    printf("btc(array, 35) = %d\n", btc(array.ptr, 35)); 
    99105    printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]); 
    100106 
    101107    printf("btc(array, 35) = %d\n", btc(array.ptr, 35)); 
    102108    printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]); 
    103109 
    104110    printf("bts(array, 35) = %d\n", bts(array.ptr, 35)); 
    105111    printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]); 
    106112 
    107113    printf("btr(array, 35) = %d\n", btr(array.ptr, 35)); 
    108114    printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]); 
    109115 
    110116    printf("bt(array, 1) = %d\n", bt(array.ptr, 1)); 
    111117    printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]); 
    112118}  
    113119