//980324 bkoz
//test for bool and bitwise ands

#include <assert.h>


void bar ( bool  x ) {};
void bars ( short  x ) {};

#if 0
int andb(){
  bool y;
  bar ( y );
  int blob = ( 27 & int (y) );
  return blob; //expect 1 or 0
}
#endif

int andbtrue(){
  bool y = true;
  bar ( y );
  int blob = ( 27 & int (y) );
  return blob; //expect 1
}

int andbfalse(){
  bool y = false;
  bar ( y );
  int blob = ( 27 & int (y) );
  return blob; //expect 0
}

int andbfalse2(){
  bool y = 0;
  bar ( y );
  int blob = ( 27 & int (y) );
  return blob;  //expect 0
}

int ands(){
  short y = 1;
  bars ( y );
  int blob = ( 27 & int (y) );
  return blob;  //expect 1
}


int main() {
  int tmp;
#if 0
  tmp = andb();
  assert (tmp == 1 || tmp == 0);
#endif
  tmp = andbtrue();
  assert (tmp == 1);
  tmp = andbfalse();
  assert (tmp == 0);
  tmp = andbfalse2();
  assert (tmp == 0);
  tmp = ands();
  assert (tmp == 1);
  return 0;
}
