Christopher Smith on 3 Oct 2003 19:08:29 -0000


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [ALACPP] Why won't g++ tell me I'm dumb?


On Tue, 2003-09-30 at 12:07, Kevin Scaldeferri wrote:
> We had a bit of a puzzle at lunch today, trying to figure out why my 
> simple test case for my simple test function was dying a horrible 
> death.  Here's the distilled version of the code:

So, I was able to fix my stupid setup problem with icc, and then compile
this code again, to discover that the Intel compiler magically did the
right thing. BTW, I found a couple of off-by-one type errors in the
code, here's a corrected version (still won't work with g++ until you
make copies of the strings, but it will work with the Intel compiler).

-- 
Christopher Smith <x@xxxxxxxx>
#include <string.h>

#include <boost/test/included/unit_test_framework.hpp>
//#include <boost/test/unit_test.hpp>
using namespace boost::unit_test_framework;

void strrev(char* s) {
  int l = strlen(s);
  char tmp;
  int i;

  for ( i = 0 ; i < (l / 2)   ; ++i ) {
    tmp = s[i];
    s[i] = s[l - 1 - i];
    s[l - 1 - i] = tmp;
  }
}


void strawman() {
  BOOST_CHECK( 2 == 1 );
}

void strrevtest() {
  char* t;
  t = ""; strrev(t);BOOST_CHECK_EQUAL( std::strcmp(t,""), 0);
  t = "a"; strrev(t);BOOST_CHECK_EQUAL( std::strcmp(t,"a"), 0);
  t = "ab"; strrev(t);BOOST_CHECK_EQUAL( std::strcmp(t,"ba"), 0);
  t = "asdf"; strrev(t);BOOST_CHECK_EQUAL( std::strcmp(t,"fdsa"), 0);
  t = "asdfg"; strrev(t);BOOST_CHECK_EQUAL( std::strcmp(t,"gfdsa"), 0);

  char a[2049];
  char b[2049];
  memset(a, 0, 2049);
  memset(a, 0, 2049);
  int i;

  for ( i = 0 ; i < 2048 ; ++i ) {
    a[i] = 'a' + (i % 16);
    b[i] = 'a' + 15 - (i % 16);
  }
  strrev(a);
  BOOST_CHECK_EQUAL( std::strcmp(a,b), 0);
}

test_suite*
init_unit_test_suite ( int argc, char** argv) {

  test_suite* test = BOOST_TEST_SUITE( "strrev test");

  /*test->add( BOOST_TEST_CASE( &strawman ));*/
  test->add( BOOST_TEST_CASE( &strrevtest ));

  return test;

}
             
_______________________________________________
alacpp mailing list
alacpp@xxxxxxxxxxx
http://lists.ellipsis.cx/mailman/listinfo/alacpp