mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 21:21:48 +03:00
64 lines
1 KiB
D
64 lines
1 KiB
D
/*
|
|
REQUIRED_ARGS: -betterC
|
|
RUN_OUTPUT:
|
|
---
|
|
Success
|
|
---
|
|
*/
|
|
import core.stdc.stdio;
|
|
|
|
void test1()
|
|
{
|
|
enum real Two = 2.0;
|
|
static assert(Two^^3 == 8.0);
|
|
}
|
|
|
|
void test2()
|
|
{
|
|
double x = 5.0;
|
|
assert(x^^-1 == 1/x);
|
|
x = -1.0;
|
|
assert(x^^1 == x);
|
|
assert((x += 3) ^^ 2.0 == 4.0);
|
|
assert((x) ^^ 2.0 == 4.0);
|
|
assert((x *= 5) ^^ 2.0 == (x * x));
|
|
assert(x^^-1 == 1.0 / x);
|
|
assert((x^^-1) ^^ 0.0 == 1.0);
|
|
}
|
|
|
|
void test3()
|
|
{
|
|
int x = 6;
|
|
assert(x ^^ 0 == 1);
|
|
assert((x += 3) ^^ 2 == 81);
|
|
assert(x ^^ 2 == (x ^^ 1) * (x ^^ 1));
|
|
static assert(4.0 ^^ -1 == 0.25);
|
|
}
|
|
|
|
void test4()
|
|
{
|
|
// Test that LHS side effects are evaluated.
|
|
int count = 0;
|
|
double x()
|
|
{
|
|
count++;
|
|
return 8.0;
|
|
}
|
|
assert(x ^^ -1 == 1.0 / 8.0);
|
|
assert(count == 1);
|
|
assert(x ^^ 0 == 1.0);
|
|
assert(count == 2);
|
|
assert(x ^^ 1 == 8.0);
|
|
assert(count == 3);
|
|
assert(x ^^ 2 == 64.0);
|
|
assert(count == 4);
|
|
}
|
|
|
|
extern(C) void main()
|
|
{
|
|
test1();
|
|
test2();
|
|
test3();
|
|
test4();
|
|
printf("Success\n");
|
|
}
|