/*
 * Copyright (c) 2006 Claus Assmann
 *
 * By using this file, you agree to the terms and conditions set
 * forth in the license/LICENSE.3C file which can be found at the
 * top level of this source code distribution.
 */

#include "sm/generic.h"
SM_RCSID("@(#)$Id: t-pmadd.c,v 1.5 2006/11/18 15:25:53 ca Exp $")

#include "sm/assert.h"
#include "sm/magic.h"
#include "sm/str.h"
#include "sm/misc.h"
#include "sm/test.h"

#include <stdio.h>

#define SMAXLEN	256

static void
test_harness(void)
{
	sm_str_P rcpt, domain;
	sm_ret_T ret;

#define POSTMASTER "<postmaster>"
#define DOMAIN "my.domain"

	rcpt = sm_str_scpy(NULL, (const char *)POSTMASTER, SMAXLEN);
	SM_TEST(rcpt != NULL);
	domain = sm_str_scpy(NULL, DOMAIN, SMAXLEN);
	SM_TEST(domain != NULL);
	ret = sm_postmaster_add_domain(rcpt, domain, 0);
	SM_TEST(sm_is_success(ret));
	SM_TEST(0 == strcasecmp("<postmaster@my.domain>",
		(const char *)sm_str_getdata(rcpt)));
	SM_STR_FREE(rcpt);

	rcpt = sm_str_scpy(NULL, (const char *)"RCPT To:<postmaster>", SMAXLEN);
	SM_TEST(rcpt != NULL);
	SM_TEST(domain != NULL);
	ret = sm_postmaster_add_domain(rcpt, domain, 8);
	SM_TEST(sm_is_success(ret));
	SM_TEST(0 == strcasecmp("RCPT To:<postmaster@my.domain>",
		(const char *)sm_str_getdata(rcpt)));
	SM_STR_FREE(rcpt);

	rcpt = sm_str_scpy(NULL, (const char *)"<postmasters>", SMAXLEN);
	SM_TEST(rcpt != NULL);
	SM_TEST(domain != NULL);
	ret = sm_postmaster_add_domain(rcpt, domain, 0);
	SM_TEST(SM_NOTDONE == ret);
	SM_TEST(0 != strcasecmp("<postmasters@my.domain>",
		(const char *)sm_str_getdata(rcpt)));
	SM_STR_FREE(rcpt);

	rcpt = sm_str_scpy(NULL, (const char *)"RCPT To:<postmasters>",
			SMAXLEN);
	SM_TEST(rcpt != NULL);
	SM_TEST(domain != NULL);
	ret = sm_postmaster_add_domain(rcpt, domain, 8);
	SM_TEST(SM_NOTDONE == ret);
	SM_TEST(0 != strcasecmp("RCPT To:<postmasters@my.domain>",
		(const char *)sm_str_getdata(rcpt)));
	SM_STR_FREE(rcpt);

	rcpt = sm_str_scpy(NULL, (const char *)"RCPT To:<postmaster@some.tld>",
			SMAXLEN);
	SM_TEST(rcpt != NULL);
	SM_TEST(domain != NULL);
	ret = sm_postmaster_add_domain(rcpt, domain, 8);
	SM_TEST(SM_NOTDONE == ret);
	SM_TEST(0 != strcasecmp("RCPT To:<postmaster@my.domain>",
		(const char *)sm_str_getdata(rcpt)));
	SM_TEST(0 == strcasecmp("RCPT To:<postmaster@some.tld>",
		(const char *)sm_str_getdata(rcpt)));
	SM_STR_FREE(rcpt);


	SM_STR_FREE(domain);
}

int
main(int argc, char *argv[])
{
	sm_test_begin(argc, argv, "test sm_postmaster_add_domain");
	test_harness();
	return sm_test_end();
}


syntax highlighted by Code2HTML, v. 0.9.1