a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
96 lines
1.1 KiB
C#
96 lines
1.1 KiB
C#
//
|
|
// Short-circuit evaluation tests
|
|
//
|
|
using System;
|
|
|
|
class X {
|
|
|
|
static int t_count = 0;
|
|
static int f_count = 0;
|
|
|
|
static bool f ()
|
|
{
|
|
Console.WriteLine ("f");
|
|
f_count++;
|
|
return false;
|
|
}
|
|
|
|
static bool t ()
|
|
{
|
|
Console.WriteLine ("t");
|
|
t_count++;
|
|
return true;
|
|
}
|
|
|
|
public static int Main ()
|
|
{
|
|
if (t () && t ()){
|
|
f_count--;
|
|
}
|
|
|
|
if (t_count != 2)
|
|
return 1;
|
|
|
|
if (f_count != -1)
|
|
return 3;
|
|
|
|
f_count = 0;
|
|
|
|
if (t () && f ())
|
|
if (t_count != 3 && f_count == 1)
|
|
return 2;
|
|
|
|
if (f () && f ())
|
|
return 3;
|
|
|
|
if (f_count != 2)
|
|
return 4;
|
|
|
|
if (f () && t ())
|
|
return 5;
|
|
|
|
if (f_count != 3)
|
|
return 6;
|
|
|
|
if (t_count != 3)
|
|
return 7;
|
|
|
|
//
|
|
// reset
|
|
//
|
|
Console.WriteLine ("or");
|
|
|
|
t_count = f_count = 0;
|
|
|
|
if (t () || t ()){
|
|
if (t_count != 1)
|
|
return 8;
|
|
} else
|
|
return 9;
|
|
|
|
if (t () || f ()){
|
|
if (f_count != 0)
|
|
return 10;
|
|
if (t_count != 2)
|
|
return 16;
|
|
} else
|
|
return 11;
|
|
|
|
if (f () || f ()){
|
|
return 12;
|
|
} else
|
|
if (f_count != 2)
|
|
return 13;
|
|
|
|
if (f () || t ()){
|
|
if (f_count != 3)
|
|
return 15;
|
|
if (t_count != 3)
|
|
return 17;
|
|
} else
|
|
return 14;
|
|
|
|
return 0;
|
|
}
|
|
}
|