delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2004/02/23/15:34:56

X-Authentication-Warning: delorie.com: mail set sender to djgpp-workers-bounces using -f
Date: Mon, 23 Feb 2004 15:34:52 -0500
Message-Id: <200402232034.i1NKYqrt024366@envy.delorie.com>
From: DJ Delorie <dj AT delorie DOT com>
To: djgpp-workers AT delorie DOT com
In-reply-to: <403A5F55.7E608910@yahoo.com> (message from CBFalconer on Mon, 23
Feb 2004 15:15:17 -0500)
Subject: Re: strtoul bug (was Re: Fibonacci number)
References: <d7c3a0b2 DOT 0402220759 DOT 34d6435d AT posting DOT google DOT com> <4038E8CA DOT 6491815E AT virginia DOT edu> <4039DD96 DOT 3F36F3B7 AT yahoo DOT com> <200402231458 DOT i1NEwKwm020904 AT envy DOT delorie DOT com> <403A301C DOT E8F5FE65 AT yahoo DOT com> <200402231751 DOT i1NHp5lv022894 AT envy DOT delorie DOT com> <403A5F55 DOT 7E608910 AT yahoo DOT com>
Reply-To: djgpp-workers AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: djgpp-workers AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

I'm thinking something table-driven would be better; no user input
should be needed for a test case.  How about a table like this?

struct {
  char *input_string;
  int base; /* 
  int expected_endp; /* index into string */
  unsigned char expected_value[8];
  int expected_errno;
} tests[] = {
  { "0", 0, 1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 },
  { "10x", 8, 2, { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 0 },
  /* etc */
  { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 }, 0 }
}

We could have one table for each function (strtol, strtoul, strtoll,
strtoull) and pass the table, function, and size of result (4 or 8) to
a common "test this" function.

The function should print nothing and exit(0) if they all pass, else
print a diagnostic and exit(1) if any fail.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019