sec-2853.c revision 290000
155714Skris#include <config.h>
255714Skris
355714Skris#include <rc_cmdlength.h>
455714Skris
555714Skris#include "unity.h"
655714Skris
755714Skrisvoid setUp(void);
8280304Sjkimvoid tearDown(void);
955714Skris
1055714Skrisvoid test_main( void );
1155714Skrisint basic_good( void );
1255714Skrisint embedded_nul( void );
1355714Skrisint trailing_space( void );
1455714Skris
15280304Sjkimstatic int verbose = 1;        // if not 0, also print results if test passed
1655714Skrisstatic int exit_on_err = 0;    // if not 0, exit if test failed
1755714Skris
1855714Skris
1955714Skrisvoid setUp(void)
2055714Skris{
2155714Skris}
22280304Sjkim
2355714Skris
2455714Skrisvoid tearDown(void)
2555714Skris{
2655714Skris}
2755714Skris
2855714Skris
2955714Skris/*
3055714Skris * Test function calling the remote config buffer checker
3155714Skris * http://bugs.ntp.org/show_bug.cgi?id=2853
3255714Skris *
3355714Skris * size_t remoteconfig_cmdlength(const char *src_buf, const char *src_end)
3455714Skris * - trims whitespace & garbage from the right
3555714Skris * then looks for only \tSP-\127 starting from the left.
3655714Skris * It returns the number of "good" characters it found.
37280304Sjkim */
3855714Skris
3955714Skris
40280304Sjkimvoid test_main( void )
4155714Skris{
4255714Skris	TEST_ASSERT_EQUAL(0, basic_good());
4355714Skris	TEST_ASSERT_EQUAL(0, embedded_nul());
4455714Skris	TEST_ASSERT_EQUAL(0, trailing_space());
4555714Skris}
4655714Skris
4755714Skris
4855714Skrisint basic_good( void )
4955714Skris{
5055714Skris	const char string[] = "good";
5155714Skris	const char *EOstring;
52280304Sjkim	char *cp;
5355714Skris	size_t len;
5455714Skris	int failed;
5555714Skris
5655714Skris	EOstring = string + sizeof string;
5755714Skris
5855714Skris	len = remoteconfig_cmdlength(string, EOstring);
59280304Sjkim
60280304Sjkim	failed = ( 4 != len );
61280304Sjkim
62280304Sjkim	if ( failed || verbose )
6355714Skris		printf( "remoteconfig_cmdlength(\"%s\") returned %d, expected %d: %s\n",
6455714Skris			string,
6555714Skris			len,
66280304Sjkim			4,
6755714Skris			failed ? "NO <<" : "yes" );
68280304Sjkim
69280304Sjkim	return failed ? -1 : 0;
70280304Sjkim}
71280304Sjkim
72280304Sjkim
73280304Sjkimint embedded_nul( void )
74280304Sjkim{
75280304Sjkim	const char string[] = "nul\0 there";
76280304Sjkim	const char *EOstring;
77280304Sjkim	char *cp;
78280304Sjkim	size_t len;
79280304Sjkim	int failed;
80160814Ssimon
81280304Sjkim	EOstring = string + sizeof string;
82280304Sjkim
83280304Sjkim	len = remoteconfig_cmdlength(string, EOstring);
84280304Sjkim
85160814Ssimon	failed = ( 3 != len );
86280304Sjkim
87280304Sjkim	if ( failed || verbose )
88280304Sjkim		printf( "remoteconfig_cmdlength(\"%s\") returned %d, expected %d: %s\n",
89280304Sjkim			string,
90280304Sjkim			len,
9155714Skris			3,
92280304Sjkim			failed ? "NO <<" : "yes" );
93280304Sjkim
94280304Sjkim	return failed ? -1 : 0;
95194206Ssimon}
96280304Sjkim
9755714Skris
9868651Skrisint trailing_space( void )
9968651Skris{
10068651Skris	const char string[] = "trailing space ";
10168651Skris	const char *EOstring;
10268651Skris	char *cp;
10355714Skris	size_t len;
10455714Skris	int failed;
105280304Sjkim
106280304Sjkim	EOstring = string + sizeof string;
107280304Sjkim
108280304Sjkim	len = remoteconfig_cmdlength(string, EOstring);
109280304Sjkim
110280304Sjkim	failed = ( 14 != len );
111280304Sjkim
112280304Sjkim	if ( failed || verbose )
113280304Sjkim		printf( "remoteconfig_cmdlength(\"%s\") returned %d, expected %d: %s\n",
114280304Sjkim			string,
115280304Sjkim			len,
116280304Sjkim			14,
11755714Skris			failed ? "NO <<" : "yes" );
118291721Sjkim
119280304Sjkim	return failed ? -1 : 0;
120280304Sjkim}
12155714Skris