Skip to content

Commit

Permalink
Update old tests and add new test for evaluation order
Browse files Browse the repository at this point in the history
  • Loading branch information
jpf91 committed Apr 1, 2014
1 parent 3517843 commit 161e2dd
Show file tree
Hide file tree
Showing 2 changed files with 1,527 additions and 43 deletions.
73 changes: 30 additions & 43 deletions gcc/testsuite/gdc.test/runnable/arrayop.d
Original file line number Diff line number Diff line change
Expand Up @@ -47,36 +47,36 @@ template Floating(T)

abc = null;
A()[] = B()[] + C()[];
assert(abc == "BCA");
assert(abc == "ABC");
assert(a[0] == 5);
assert(a[1] == 7);
assert(a[2] == 9);

abc = null;
A()[] = B()[] + 4;
assert(abc == "BA");
assert(abc == "AB");
assert(a[0] == 5);
assert(a[1] == 6);
assert(a[2] == 7);

abc = null;
A()[] = 4 + B()[];
assert(abc == "BA");
assert(abc == "AB");
assert(a[0] == 5);
assert(a[1] == 6);
assert(a[2] == 7);

abc = null;
A()[] = D() + B()[];
assert(abc == "DBA");
assert(abc == "ADB");
assert(a[0] == 5);
assert(a[1] == 6);
assert(a[2] == 7);

a = [11, 22, 33];
abc = null;
A()[] += B()[];
assert(abc == "BA");
assert(abc == "AB");
assert(a[0] == 12);
assert(a[1] == 24);
assert(a[2] == 36);
Expand Down Expand Up @@ -114,54 +114,54 @@ template Floating(T)
a = [11, 22, 33];
abc = null;
A()[] += 4 + B()[];
assert(abc == "BA");
assert(abc == "AB");
assert(a[0] == 16);
assert(a[1] == 28);
assert(a[2] == 40);

abc = null;
A()[] = B()[] - C()[];
assert(abc == "BCA");
assert(abc == "ABC");
printf("%Lg, %Lg, %Lg\n", cast(real)a[0], cast(real)a[1], cast(real)a[2]);
assert(a[0] == -3);
assert(a[1] == -3);
assert(a[2] == -3);

abc = null;
A()[] = -B()[] - C()[];
assert(abc == "BCA");
assert(abc == "ABC");
printf("%Lg, %Lg, %Lg\n", cast(real)a[0], cast(real)a[1], cast(real)a[2]);
assert(a[0] == -5);
assert(a[1] == -7);
assert(a[2] == -9);

abc = null;
A()[] = B()[] + C()[] * 4;
assert(abc == "BCA");
assert(abc == "ABC");
printf("%Lg, %Lg, %Lg\n", cast(real)a[0], cast(real)a[1], cast(real)a[2]);
assert(a[0] == 17);
assert(a[1] == 22);
assert(a[2] == 27);

abc = null;
A()[] = B()[] + C()[] * B()[];
assert(abc == "BCBA");
assert(abc == "ABCB");
printf("%Lg, %Lg, %Lg\n", cast(real)a[0], cast(real)a[1], cast(real)a[2]);
assert(a[0] == 5);
assert(a[1] == 12);
assert(a[2] == 21);

abc = null;
A()[] = B()[] + C()[] / 2;
assert(abc == "BCA");
assert(abc == "ABC");
printf("%Lg, %Lg, %Lg\n", cast(real)a[0], cast(real)a[1], cast(real)a[2]);
assert(a[0] == 3);
assert(a[1] == 4.5);
assert(a[2] == 6);

abc = null;
A()[] = B()[] + C()[] % 2;
assert(abc == "BCA");
assert(abc == "ABC");
printf("%Lg, %Lg, %Lg\n", cast(real)a[0], cast(real)a[1], cast(real)a[2]);
assert(a[0] == 1);
assert(a[1] == 3);
Expand Down Expand Up @@ -225,36 +225,36 @@ template Integral(T)

abc = null;
A()[] = B()[] + C()[];
assert(abc == "BCA");
assert(abc == "ABC");
assert(a[0] == 5);
assert(a[1] == 7);
assert(a[2] == 9);

abc = null;
A()[] = B()[] + 4;
assert(abc == "BA");
assert(abc == "AB");
assert(a[0] == 5);
assert(a[1] == 6);
assert(a[2] == 7);

abc = null;
A()[] = 4 + B()[];
assert(abc == "BA");
assert(abc == "AB");
assert(a[0] == 5);
assert(a[1] == 6);
assert(a[2] == 7);

abc = null;
A()[] = D() + B()[];
assert(abc == "DBA");
assert(abc == "ADB");
assert(a[0] == 5);
assert(a[1] == 6);
assert(a[2] == 7);

a = [11, 22, 33];
abc = null;
A()[] += B()[];
assert(abc == "BA");
assert(abc == "AB");
assert(a[0] == 12);
assert(a[1] == 24);
assert(a[2] == 36);
Expand Down Expand Up @@ -310,83 +310,83 @@ template Integral(T)
a = [11, 22, 33];
abc = null;
A()[] += 4 + B()[];
assert(abc == "BA");
assert(abc == "AB");
assert(a[0] == 16);
assert(a[1] == 28);
assert(a[2] == 40);

abc = null;
A()[] = B()[] - C()[];
assert(abc == "BCA");
assert(abc == "ABC");
printf("%lld, %lld, %lld\n", cast(long)a[0], cast(long)a[1], cast(long)a[2]);
assert(a[0] == -3);
assert(a[1] == -3);
assert(a[2] == -3);

abc = null;
A()[] = -B()[] - C()[];
assert(abc == "BCA");
assert(abc == "ABC");
printf("%lld, %lld, %lld\n", cast(long)a[0], cast(long)a[1], cast(long)a[2]);
assert(a[0] == -5);
assert(a[1] == -7);
assert(a[2] == -9);

abc = null;
A()[] = B()[] + C()[] * 4;
assert(abc == "BCA");
assert(abc == "ABC");
printf("%lld, %lld, %lld\n", cast(long)a[0], cast(long)a[1], cast(long)a[2]);
assert(a[0] == 17);
assert(a[1] == 22);
assert(a[2] == 27);

abc = null;
A()[] = B()[] + C()[] * B()[];
assert(abc == "BCBA");
assert(abc == "ABCB");
printf("%lld, %lld, %lld\n", cast(long)a[0], cast(long)a[1], cast(long)a[2]);
assert(a[0] == 5);
assert(a[1] == 12);
assert(a[2] == 21);

abc = null;
A()[] = B()[] + C()[] / 2;
assert(abc == "BCA");
assert(abc == "ABC");
printf("%lld, %lld, %lld\n", cast(long)a[0], cast(long)a[1], cast(long)a[2]);
assert(a[0] == 3);
assert(a[1] == 4);
assert(a[2] == 6);

abc = null;
A()[] = B()[] + C()[] % 2;
assert(abc == "BCA");
assert(abc == "ABC");
printf("%lld, %lld, %lld\n", cast(long)a[0], cast(long)a[1], cast(long)a[2]);
assert(a[0] == 1);
assert(a[1] == 3);
assert(a[2] == 3);

abc = null;
A()[] = ~B()[];
assert(abc == "BA");
assert(abc == "AB");
assert(a[0] == ~cast(T)1);
assert(a[1] == ~cast(T)2);
assert(a[2] == ~cast(T)3);

abc = null;
A()[] = B()[] & 2;
assert(abc == "BA");
assert(abc == "AB");
assert(a[0] == 0);
assert(a[1] == 2);
assert(a[2] == 2);

abc = null;
A()[] = B()[] | 2;
assert(abc == "BA");
assert(abc == "AB");
assert(a[0] == 3);
assert(a[1] == 2);
assert(a[2] == 3);

abc = null;
A()[] = B()[] ^ 2;
assert(abc == "BA");
assert(abc == "AB");
assert(a[0] == 3);
assert(a[1] == 0);
assert(a[2] == 1);
Expand Down Expand Up @@ -700,21 +700,8 @@ void test10684b()

int main()
{
version(X86)
{
test1();
test2();
}
else version(X86_64)
{
test1();
test2();
}
else
{
pragma(msg, "arrayop.d:test1 Test skipped because arrayop evaluation"
" order is ill-defined. See GDC issue #8");
}
test1();
test2();
test3();
test4();
test5();
Expand Down
Loading

0 comments on commit 161e2dd

Please sign in to comment.