/* unit-str.c - test str.c
*
****************************************************************
* Copyright (C) 2000, 2003 Thomas Lord
* Copyright (C) 2002 Scott Parish
*
* See the file "COPYING" for further information about
* the copyright and warranty status of this work.
*/
#include "hackerlab/bugs/panic.h"
#include "hackerlab/char/str.h"
#include "hackerlab/cmd/main.h"
static t_uchar * program_name = "unit-str";
static t_uchar * usage = "[options]";
static t_uchar * version_string = "1.0";
#define OPTS(OP, OP2) \
OP (opt_help_msg, "h", "help", 0, \
"Display a help message and exit.") \
OP (opt_version, "V", "version", 0, \
"Display a release identifier string") \
OP2 (opt_version, 0, 0, 0, "and exit.")
enum options
{
OPTS (OPT_ENUM, OPT_IGN)
};
struct opt_desc opts[] =
{
OPTS (OPT_DESC, OPT_DESC)
{-1, 0, 0, 0, 0}
};
int
main (int argc, char * argv[])
{
int o;
struct opt_parsed * option;
option = 0;
while (1)
{
o = opt_standard (lim_use_must_malloc, &option, opts, &argc, argv, program_name, usage, version_string, 0, opt_help_msg, opt_none, opt_version);
if (o == opt_none)
break;
switch (o)
{
default:
safe_printfmt (2, "unhandled option `%s'\n", option->opt_string);
panic ("internal error parsing arguments");
}
}
{
static t_uchar alnum[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
static t_uchar lcalnum[] = "0123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
t_uchar buffer[1024];
int x;
invariant (str_length (0) == 0);
invariant (str_length ("") == 0);
invariant (str_length ("a") == 1);
invariant (str_length ("abc") == 3);
invariant (str_length ("abcd") == 4);
invariant (str_length ("abcde") == 5);
invariant (str_length ("abcdefg") == 7);
invariant (str_length ("abcdefgh") == 8);
invariant (str_length ("abcdefghi") == 9);
invariant (str_length ("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") == 62);
invariant (str_length_n (0, 5) == 0);
invariant (str_length_n ("", 5) == 0);
invariant (str_length_n ("a", 5) == 1);
invariant (str_length_n ("abc", 5) == 3);
invariant (str_length_n ("abcd", 5) == 4);
invariant (str_length_n ("abcde", 5) == 5);
invariant (str_length_n ("abcdefg", 5) == 5);
invariant (str_length_n ("abcdefgh", 5) == 5);
invariant (str_length_n ("abcdefghi", 5) == 5);
invariant (str_length_n ("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", 5) == 5);
for (x = 'a'; x <= 'z'; ++x)
{
invariant (str_chr_index (lcalnum, x) == (lcalnum + 10 + (x - 'a')));
invariant (str_chr_rindex (lcalnum, x) == (lcalnum + 36 + (x - 'a')));
invariant (str_chr_index_n (lcalnum, 62, x) == (lcalnum + 10 + (x - 'a')));
invariant (str_chr_rindex_n (lcalnum, 62, x) == (lcalnum + 36 + (x - 'a')));
}
{
t_uchar * buffer2;
invariant (!str_cmp (0, ""));
invariant (!str_cmp ("", 0));
invariant (str_cmp ("", "a") == -1);
invariant (str_cmp (0, "a") == -1);
invariant (str_cmp ("a", "") == 1);
invariant (str_cmp ("a", 0) == 1);
invariant (!str_cmp ("a", "a"));
invariant (str_cmp ("abcdefg", "abcdefh") == -1);
invariant (str_cmp ("abcdefh", "abcdefg") == 1);
invariant (str_cmp ("abcdefg", "abcdefg") == 0);
invariant (!str_cmp (alnum, alnum));
invariant (!str_cmp (lcalnum, lcalnum));
invariant (str_cmp (alnum, lcalnum) == -1);
invariant (str_cmp (lcalnum, alnum) == 1);
invariant (str_cmp_n ("", sizeof ("") - 1, "a", sizeof ("a") - 1) == -1);
invariant (str_cmp_n (0, 0, "a", sizeof ("a") - 1) == -1);
invariant (str_cmp_n ("a", sizeof ("a") - 1, "", sizeof ("") - 1) == 1);
invariant (str_cmp_n ("a", sizeof ("a") - 1, 0, 0) == 1);
invariant (!str_cmp_n ("a", sizeof ("a") - 1, "a", sizeof ("a") - 1));
invariant (str_cmp_n ("abcdefg", sizeof ("abcdefg") - 1, "abcdefh", sizeof ("abcdefh") - 1) == -1);
invariant (str_cmp_n ("abcdefh", sizeof ("abcdefh") - 1, "abcdefg", sizeof ("abcdefg") - 1) == 1);
invariant (str_cmp_n ("abcdefg", sizeof ("abcdefg") - 1, "abcdefg", sizeof ("abcdefg") - 1) == 0);
invariant (!str_cmp_n (alnum, sizeof (alnum) - 1, alnum, sizeof (alnum) - 1));
invariant (!str_cmp_n (lcalnum, sizeof (lcalnum) - 1, lcalnum, sizeof (lcalnum) - 1));
invariant (str_cmp_n (alnum, sizeof (alnum) - 1, lcalnum, sizeof (lcalnum) - 1) == -1);
invariant (str_cmp_n (lcalnum, sizeof (lcalnum) - 1, alnum, sizeof (alnum) - 1) == 1);
invariant (str_casecmp ("", "a") == -1);
invariant (str_casecmp (0, "a") == -1);
invariant (str_casecmp ("a", "") == 1);
invariant (str_casecmp ("a", 0) == 1);
invariant (!str_casecmp ("a", "a"));
invariant (str_casecmp ("abcdefg", "abcdefh") == -1);
invariant (str_casecmp ("abcdefh", "abcdefg") == 1);
invariant (str_casecmp ("abcdefg", "abcdefg") == 0);
invariant (!str_casecmp (alnum, alnum));
invariant (!str_casecmp (lcalnum, lcalnum));
invariant (!str_casecmp (alnum, lcalnum));
invariant (!str_casecmp (lcalnum, alnum));
invariant (str_casecmp_n ("", sizeof ("") - 1, "a", sizeof ("a") - 1) == -1);
invariant (str_casecmp_n (0, 0, "a", sizeof ("a") - 1) == -1);
invariant (str_casecmp_n ("a", sizeof ("a") - 1, "", sizeof ("") - 1) == 1);
invariant (str_casecmp_n ("a", sizeof ("a") - 1, 0, 0) == 1);
invariant (!str_casecmp_n ("a", sizeof ("a") - 1, "a", sizeof ("a") - 1));
invariant (str_casecmp_n ("abcdefg", sizeof ("abcdefg") - 1, "abcdefh", sizeof ("abcdefh") - 1) == -1);
invariant (str_casecmp_n ("abcdefh", sizeof ("abcdefh") - 1, "abcdefg", sizeof ("abcdefg") - 1) == 1);
invariant (str_casecmp_n ("abcdefg", sizeof ("abcdefg") - 1, "abcdefg", sizeof ("abcdefg") - 1) == 0);
invariant (!str_casecmp_n (alnum, sizeof (alnum) - 1, alnum, sizeof (alnum) - 1));
invariant (!str_casecmp_n (lcalnum, sizeof (lcalnum) - 1, lcalnum, sizeof (lcalnum) - 1));
invariant (!str_casecmp_n (alnum, sizeof (alnum) - 1, lcalnum, sizeof (lcalnum) - 1));
invariant (!str_casecmp_n (lcalnum, sizeof (lcalnum) - 1, alnum, sizeof (alnum) - 1));
invariant (!str_cmp_prefix ("01234", alnum));
invariant (str_cmp_prefix ("abc", "ABCDEFGHIJKL") == 1);
invariant (str_cmp_prefix ("ABC", "ABCDEFGHIJKL") == 0);
invariant (str_cmp_prefix ("ABB", "ABCDEFGHIJKL") == -1);
invariant (str_cmp_prefix ("", "ABCDEFGHIJKL") == 0);
invariant (str_cmp_prefix (0, "ABCDEFGHIJKL") == 0);
invariant (str_cmp_prefix ("abc", "a") == 1);
invariant (str_cmp_prefix ("abc", "") == 1);
invariant (str_cmp_prefix ("abc", 0) == 1);
invariant (str_cmp_prefix_n ("01234", (size_t)5, alnum, str_length (alnum)) == 0);
invariant (str_cmp_prefix_n ("abcxyzzy", (size_t)3, "ABCDEFGHIJKL", (size_t)12) == 1);
invariant (str_cmp_prefix_n ("ABC", (size_t)3, "ABCDEFGHIJKL", (size_t)12) == 0);
invariant (str_cmp_prefix_n ("ABBfoo", (size_t)3, "ABCDEFGHIJKL", (size_t)12) == -1);
invariant (str_cmp_prefix_n ("", (size_t)0, "ABCDEFGHIJKL", (size_t)12) == 0);
invariant (str_cmp_prefix_n (0, (size_t)0, "ABCDEFGHIJKL", (size_t)12) == 0);
invariant (str_cmp_prefix_n ("abc", (size_t)3, "abc", (size_t)1) == 1);
invariant (str_cmp_prefix_n ("abcxyz", (size_t)3, "", (size_t)0) == 1);
invariant (str_cmp_prefix_n ("abc", (size_t)3, 0, (size_t)0) == 1);
invariant (str_casecmp_prefix ("01234", alnum) == 0);
invariant (str_casecmp_prefix ("abc", "ABCDEFGHIJKL") == 0);
invariant (str_casecmp_prefix ("ABC", "ABCDEFGHIJKL") == 0);
invariant (str_casecmp_prefix ("ABB", "ABCDEFGHIJKL") == -1);
invariant (str_casecmp_prefix ("", "ABCDEFGHIJKL") == 0);
invariant (str_casecmp_prefix (0, "ABCDEFGHIJKL") == 0);
invariant (str_casecmp_prefix ("abc", "a") == 1);
invariant (str_casecmp_prefix ("abc", "") == 1);
invariant (str_casecmp_prefix ("abc", 0) == 1);
invariant (str_casecmp_prefix_n ("01234", (size_t)5, alnum, str_length (alnum)) == 0);
invariant (str_casecmp_prefix_n ("abcxyzzy", (size_t)3, "ABCDEFGHIJKL", (size_t)12) == 0);
invariant (str_casecmp_prefix_n ("ABC", (size_t)3, "ABCDEFGHIJKL", (size_t)12) == 0);
invariant (str_casecmp_prefix_n ("ABBfoo", (size_t)3, "ABCDEFGHIJKL", (size_t)12) == -1);
invariant (str_casecmp_prefix_n ("", (size_t)0, "ABCDEFGHIJKL", (size_t)12) == 0);
invariant (str_casecmp_prefix_n (0, (size_t)0, "ABCDEFGHIJKL", (size_t)12) == 0);
invariant (str_casecmp_prefix_n ("abc", (size_t)3, "abc", (size_t)1) == 1);
invariant (str_casecmp_prefix_n ("abcxyz", (size_t)3, "", (size_t)0) == 1);
invariant (str_casecmp_prefix_n ("abc", (size_t)3, 0, (size_t)0) == 1);
buffer[0] = 1;
str_cpy (buffer, 0);
invariant (str_length (buffer) == 0);
str_cpy (buffer, "abc");
invariant (str_cmp (buffer, "abc") == 0);
str_cpy (buffer, "abcd");
invariant (str_cmp (buffer, "abcd") == 0);
str_cpy (buffer, "abcde");
invariant (str_cmp (buffer, "abcde") == 0);
str_cpy (buffer, "abcdefg");
invariant (str_cmp (buffer, "abcdefg") == 0);
str_cpy (buffer, "abcdefgh");
invariant (str_cmp (buffer, "abcdefgh") == 0);
str_cpy (buffer, "abcdefghi");
invariant (str_cmp (buffer, "abcdefghi") == 0);
str_cpy (buffer, alnum);
invariant (str_cmp (buffer, alnum) == 0);
buffer[0] = 1;
str_cpy_n (buffer, 0, 1);
invariant (str_length (buffer) == 0);
str_cpy_n (buffer, "abc", sizeof ("abc") - 1);
invariant (str_cmp (buffer, "abc") == 0);
str_cpy_n (buffer, "abc", 100 + sizeof ("abc") - 1);
invariant (str_cmp (buffer, "abc") == 0);
str_cpy_n (buffer, "abcd", sizeof ("abcd") - 1);
invariant (str_cmp (buffer, "abcd") == 0);
str_cpy_n (buffer, "abcde", sizeof ("abcde") - 1);
invariant (str_cmp (buffer, "abcde") == 0);
str_cpy_n (buffer, "abcdefg", sizeof ("abcdefg") - 1);
invariant (str_cmp (buffer, "abcdefg") == 0);
str_cpy_n (buffer, "abcdefgh", sizeof ("abcdefgh") - 1);
invariant (str_cmp (buffer, "abcdefgh") == 0);
str_cpy_n (buffer, "abcdefghi", sizeof ("abcdefghi") - 1);
invariant (str_cmp (buffer, "abcdefghi") == 0);
str_cpy_n (buffer, alnum, sizeof (alnum) - 1);
invariant (str_cmp (buffer, alnum) == 0);
buffer[0] = 0;
str_cat (buffer, 0);
invariant (str_cmp (buffer, "") == 0);
str_cat (buffer, "one");
invariant (str_cmp (buffer, "one") == 0);
str_cat (buffer, " ");
invariant (str_cmp (buffer, "one ") == 0);
str_cat (buffer, "two three four");
invariant (str_cmp (buffer, "one two three four") == 0);
str_cat (buffer, "");
invariant (str_cmp (buffer, "one two three four") == 0);
str_cat (buffer, 0);
invariant (str_cmp (buffer, "one two three four") == 0);
str_cat (buffer, " five.");
invariant (str_cmp (buffer, "one two three four five.") == 0);
buffer[0] = 0;
str_cat_n (buffer, 0, 0);
invariant (str_cmp (buffer, "") == 0);
str_cat_n (buffer, "one", sizeof ("one"));
invariant (str_cmp (buffer, "one") == 0);
str_cat_n (buffer, " ", sizeof (" "));
invariant (str_cmp (buffer, "one ") == 0);
str_cat_n (buffer, "two three four", sizeof ("two three four"));
invariant (str_cmp (buffer, "one two three four") == 0);
str_cat_n (buffer, "", sizeof (""));
invariant (str_cmp (buffer, "one two three four") == 0);
str_cat_n (buffer, 0, 0);
invariant (str_cmp (buffer, "one two three four") == 0);
str_cat_n (buffer, " five.", sizeof (" five."));
invariant (str_cmp (buffer, "one two three four five.") == 0);
str_cat_n (buffer, " xyzzy", 2);
invariant (str_cmp (buffer, "one two three four five. x") == 0);
/* pending copyright paperwork:
*
* BEGIN Scott's code
*/
buffer[0] = 0;
str_cat_many (buffer, str_end);
invariant (str_cmp (buffer, "") == 0);
str_cat_many (buffer, "one", str_end);
invariant (str_cmp (buffer, "one") == 0);
str_cat_many (buffer, " ", str_end);
invariant (str_cmp (buffer, "one ") == 0);
str_cat_many (buffer, "two", " ", 0, "three", " four", str_end);
invariant (str_cmp (buffer, "one two three four") == 0);
str_cat_many (buffer, "", str_end);
invariant (str_cmp (buffer, "one two three four") == 0);
str_cat_many (buffer, str_end);
invariant (str_cmp (buffer, "one two three four") == 0);
str_cat_many (buffer, 0, str_end);
invariant (str_cmp (buffer, "one two three four") == 0);
str_cat_many (buffer, " ", 0, "five.", str_end);
invariant (str_cmp (buffer, "one two three four five.") == 0);
buffer2 = str_alloc_cat_many (0, buffer, str_end);
invariant (str_cmp (buffer2, "one two three four five.") == 0);
buffer2 = str_alloc_cat_many (0, buffer, " six", str_end);
invariant (str_cmp (buffer2, "one two three four five. six") == 0);
lim_free(0, buffer2);
buffer2 = str_alloc_cat_many (0, buffer, " six", str_end);
invariant (str_cmp (buffer2, "one two three four five. six") == 0);
/*
* pending copyright paperwork:
*
* END Scott's code
*/
}
{
invariant (!str_cmp (0, str_save (lim_use_must_malloc, (t_uchar *)"")));
invariant (!str_cmp ("", str_save (lim_use_must_malloc, 0)));
invariant (str_cmp ("", str_save (lim_use_must_malloc, (t_uchar *)"a")) == -1);
invariant (str_cmp (0, str_save (lim_use_must_malloc, (t_uchar *)"a")) == -1);
invariant (str_cmp ("a", str_save (lim_use_must_malloc, (t_uchar *)"")) == 1);
invariant (str_cmp ("a", str_save (lim_use_must_malloc, 0)) == 1);
invariant (!str_cmp ("a", str_save (lim_use_must_malloc, (t_uchar *)"a")));
invariant (str_cmp ("abcdefg", str_save (lim_use_must_malloc, (t_uchar *)"abcdefh")) == -1);
invariant (str_cmp ("abcdefh", str_save (lim_use_must_malloc, (t_uchar *)"abcdefg")) == 1);
invariant (str_cmp ("abcdefg", str_save (lim_use_must_malloc, (t_uchar *)"abcdefg")) == 0);
invariant (!str_cmp (alnum, str_save (lim_use_must_malloc, (t_uchar *)alnum)));
invariant (!str_cmp (lcalnum, str_save (lim_use_must_malloc, (t_uchar *)lcalnum)));
invariant (str_cmp (alnum, str_save (lim_use_must_malloc, (t_uchar *)lcalnum)) == -1);
invariant (str_cmp (lcalnum, str_save (lim_use_must_malloc, (t_uchar *)alnum)) == 1);
invariant (str_cmp_n ("", sizeof ("") - 1, str_save_n (lim_use_must_malloc, (t_uchar *)"a", sizeof ("a") - 1), sizeof ("a") - 1) == -1);
invariant (str_cmp_n (0, 0, str_save_n (lim_use_must_malloc, (t_uchar *)"a", sizeof ("a") - 1), sizeof ("a") - 1) == -1);
invariant (str_cmp_n ("a", sizeof ("a") - 1, str_save_n (lim_use_must_malloc, (t_uchar *)"", sizeof ("") - 1), sizeof ("") - 1) == 1);
invariant (str_cmp_n ("a", sizeof ("a") - 1, str_save_n (lim_use_must_malloc, 0, 0), 0) == 1);
invariant (str_cmp_n ("a", sizeof ("a") - 1, str_save_n (lim_use_must_malloc, 0, 0), 0) == 1);
invariant (!str_cmp_n ("a", sizeof ("a") - 1, "a", sizeof ("a") - 1));
invariant (str_cmp_n ("abcdefg", sizeof ("abcdefg") - 1,
str_save_n (lim_use_must_malloc, (t_uchar *)"abcdefh", sizeof ("abcdefh") - 1), sizeof ("abcdefh") - 1) == -1);
invariant (str_cmp_n ("abcdefh", sizeof ("abcdefh") - 1,
str_save_n (lim_use_must_malloc, (t_uchar *)"abcdefg", sizeof ("abcdefg") - 1), sizeof ("abcdefg") - 1) == 1);
invariant (str_cmp_n ("abcdefg", sizeof ("abcdefg") - 1,
str_save_n (lim_use_must_malloc, (t_uchar *)"abcdefg", sizeof ("abcdefg") - 1), sizeof ("abcdefg") - 1) == 0);
invariant (!str_cmp_n (alnum, sizeof (alnum) - 1, str_save_n (lim_use_must_malloc, (t_uchar *)alnum, sizeof (alnum) - 1), sizeof (alnum) - 1));
invariant (!str_cmp_n (lcalnum, sizeof (lcalnum) - 1, str_save_n (lim_use_must_malloc, (t_uchar *)lcalnum, sizeof (lcalnum) - 1), sizeof (lcalnum) - 1));
invariant (str_cmp_n (alnum, sizeof (alnum) - 1, str_save_n (lim_use_must_malloc, (t_uchar *)lcalnum, sizeof (lcalnum) - 1), sizeof (lcalnum) - 1) == -1);
invariant (str_cmp_n (lcalnum, sizeof (lcalnum) - 1, str_save_n (lim_use_must_malloc, (t_uchar *)alnum, sizeof (alnum) - 1), sizeof (alnum) - 1) == 1);
}
{
t_uchar * b;
buffer[0] = 0;
b = str_alloc_cat (lim_use_must_malloc, buffer, 0);
invariant (str_cmp (b, "") == 0);
b = str_alloc_cat (lim_use_must_malloc, b, "one");
invariant (str_cmp (b, "one") == 0);
b = str_alloc_cat (lim_use_must_malloc, b, " ");
invariant (str_cmp (b, "one ") == 0);
b = str_alloc_cat (lim_use_must_malloc, b, "two three four");
invariant (str_cmp (b, "one two three four") == 0);
b = str_alloc_cat (lim_use_must_malloc, b, "");
invariant (str_cmp (b, "one two three four") == 0);
b = str_alloc_cat (lim_use_must_malloc, b, 0);
invariant (str_cmp (b, "one two three four") == 0);
b = str_alloc_cat (lim_use_must_malloc, b, " five.");
invariant (str_cmp (b, "one two three four five.") == 0);
buffer[0] = 0;
b = str_alloc_cat_n (lim_use_must_malloc, buffer, 0, 0);
invariant (str_cmp (b, "") == 0);
b = str_alloc_cat_n (lim_use_must_malloc, b, "one", sizeof ("one"));
invariant (str_cmp (b, "one") == 0);
b = str_alloc_cat_n (lim_use_must_malloc, b, " ", sizeof (" "));
invariant (str_cmp (b, "one ") == 0);
b = str_alloc_cat_n (lim_use_must_malloc, b, "two three four", sizeof ("two three four"));
invariant (str_cmp (b, "one two three four") == 0);
b = str_alloc_cat_n (lim_use_must_malloc, b, "", sizeof (""));
invariant (str_cmp (b, "one two three four") == 0);
b = str_alloc_cat_n (lim_use_must_malloc, b, 0, 0);
invariant (str_cmp (b, "one two three four") == 0);
b = str_alloc_cat_n (lim_use_must_malloc, b, " five.", sizeof (" five."));
invariant (str_cmp (b, "one two three four five.") == 0);
b = str_alloc_cat_n (lim_use_must_malloc, b, " xyzzy", 2);
invariant (str_cmp (b, "one two three four five. x") == 0);
/* pending copyright paperwork:
*
* BEGIN Scott's code
*/
buffer[0] = 0;
b = str_alloc_cat_many (lim_use_must_malloc, buffer, str_end);
invariant (str_cmp (b, "") == 0);
b = str_alloc_cat_many (lim_use_must_malloc, buffer, 0, str_end);
invariant (str_cmp (b, "") == 0);
b = str_alloc_cat_many (lim_use_must_malloc, b, "one", str_end);
invariant (str_cmp (b, "one") == 0);
b = str_alloc_cat_many (lim_use_must_malloc, b, " ", str_end);
invariant (str_cmp (b, "one ") == 0);
b = str_alloc_cat_many (lim_use_must_malloc, b, "two", " ", "three",
0, " four", str_end);
invariant (str_cmp (b, "one two three four") == 0);
b = str_alloc_cat_many (lim_use_must_malloc, b, "", str_end);
invariant (str_cmp (b, "one two three four") == 0);
b = str_alloc_cat_many (lim_use_must_malloc, b, str_end);
invariant (str_cmp (b, "one two three four") == 0);
b = str_alloc_cat_many (lim_use_must_malloc, b, " ", 0, "five.", str_end);
invariant (str_cmp (b, "one two three four five.") == 0);
buffer[0] = 0;
b = str_save (lim_use_must_malloc, "");
invariant (str_cmp (b, "") == 0);
b = str_realloc_cat_many (lim_use_must_malloc, b, str_end);
invariant (str_cmp (b, "") == 0);
b = str_realloc_cat_many (lim_use_must_malloc, b, "", str_end);
invariant (str_cmp (b, "") == 0);
b = str_realloc_cat_many (lim_use_must_malloc, b, 0, str_end);
invariant (str_cmp (b, "") == 0);
b = str_realloc_cat_many (lim_use_must_malloc, b, "one", str_end);
invariant (str_cmp (b, "one") == 0);
b = str_realloc_cat_many (lim_use_must_malloc, b, " ", str_end);
invariant (str_cmp (b, "one ") == 0);
b = str_realloc_cat_many (lim_use_must_malloc, b, "two", " ", "three",
0, " four", str_end);
invariant (str_cmp (b, "one two three four") == 0);
b = str_realloc_cat_many (lim_use_must_malloc, b, "", str_end);
invariant (str_cmp (b, "one two three four") == 0);
b = str_realloc_cat_many (lim_use_must_malloc, b, str_end);
invariant (str_cmp (b, "one two three four") == 0);
b = str_realloc_cat_many (lim_use_must_malloc, b, " ", 0, "five.",
str_end);
invariant (str_cmp (b, "one two three four five.") == 0);
/*
* pending copyright paperwork:
*
* END Scott's code
*/
}
}
{
/* str_replace */
t_uchar *old=str_save (0, "foo");
old = str_replace (old, str_save (0, "bar"));
invariant (!str_cmp (old, "bar"));
}
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1