view test/floatcmp.d @ 117:56a21f3e5d3e trunk

[svn r121] Finished ModuleInfo implementation. Static ctors/dtors now work according to spec. Changed class vtable types slightly in some cases. Overridden functions now always take the the type of the first class declaring the method as this parameter. This helps when using headers (w. implementation somewhere else)
author lindquist
date Mon, 26 Nov 2007 04:49:23 +0100
parents c53b6e3fe49a
children d9d5d59873d8
line wrap: on
line source

module floatcmp;

void eq()
{
    float _3 = 3;
    assert(!(_3 == 4));
    assert(!(_3 == 2));
    assert(_3 == 3);
    assert(!(_3 == float.nan));
}

void neq()
{
    float _3 = 3;
    assert(_3 != 4);
    assert(_3 != 2);
    assert(!(_3 != 3));
    assert(_3 != float.nan);
}

void gt()
{
    float _3 = 3;
    assert(_3 > 2);
    assert(!(_3 > 4));
    assert(!(_3 > 3));
    assert(!(_3 > float.nan));
}

void ge()
{
    float _3 = 3;
    assert(_3 >= 2);
    assert(!(_3 >= 4));
    assert(_3 >= 3);
    assert(!(_3 >= float.nan));
}

void lt()
{
    float _3 = 3;
    assert(_3 < 4);
    assert(!(_3 < 2));
    assert(!(_3 < 3));
    assert(!(_3 < float.nan));
}

void le()
{
    float _3 = 3;
    assert(_3 <= 4);
    assert(!(_3 <= 2));
    assert(_3 <= 3);
    assert(!(_3 <= float.nan));
}

void uno()
{
    float _3 = 3;
    assert(!(_3 !<>= 2));
    assert(!(_3 !<>= 3));
    assert(!(_3 !<>= 4));
    assert(_3 !<>= float.nan);
}

void lg()
{
    float _3 = 3;
    assert(_3 <> 4);
    assert(_3 <> 2);
    assert(!(_3 <> 3));
    assert(!(_3 <> float.nan));
}

void lge()
{
    float _3 = 3;
    assert(_3 <>= 4);
    assert(_3 <>= 2);
    assert(_3 <>= 3);
    assert(!(_3 <>= float.nan));
}

void ugt()
{
    float _3 = 3;
    assert(_3 !<= 2);
    assert(!(_3 !<= 4));
    assert(!(_3 !<= 3));
    assert(_3 !<= float.nan);
}

void uge()
{
    float _3 = 3;
    assert(_3 !< 2);
    assert(!(_3 !< 4));
    assert(_3 !< 3);
    assert(_3 !< float.nan);
}

void ult()
{
    float _3 = 3;
    assert(_3 !>= 4);
    assert(!(_3 !>= 2));
    assert(!(_3 !>= 3));
    assert(_3 !>= float.nan);
}

void ule()
{
    float _3 = 3;
    assert(_3 !> 4);
    assert(!(_3 !> 2));
    assert(_3 !> 3);
    assert(_3 !> float.nan);
}

void ueq()
{
    float _3 = 3;
    assert(!(_3 !<> 2));
    assert(!(_3 !<> 4));
    assert(_3 !<> 3);
    assert(_3 !<> float.nan);
}

void main()
{
    printf("floating point comparison test\n");
    
    eq();
    neq();
    gt();
    ge();
    lt();
    le();
    uno();
    lg();
    lge();
    ugt();
    uge();
    ult();
    ule();
    ueq();
    
    printf("  SUCCESS\n");
}

/+
void gt()
{
    float _3 = 3;
    assert();
    assert();
    assert();
    assert();
}
+/