1388 lines
45 KiB
C
1388 lines
45 KiB
C
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include "pico_device.h"
|
|
#include "pico_dev_ppp.h"
|
|
#include "pico_stack.h"
|
|
#include "pico_ipv4.h"
|
|
#include "pico_md5.h"
|
|
#include "pico_dns_client.h"
|
|
#include "modules/pico_dev_ppp.c"
|
|
#include "check.h"
|
|
|
|
struct pico_device_ppp _ppp = {};
|
|
static enum ppp_modem_event ppp_modem_ev;
|
|
static enum ppp_lcp_event ppp_lcp_ev;
|
|
static enum ppp_auth_event ppp_auth_ev;
|
|
static enum ppp_ipcp_event ppp_ipcp_ev;
|
|
|
|
static uint32_t called_picotimer = 0;
|
|
|
|
Suite *pico_suite(void);
|
|
|
|
uint32_t pico_timer_add(pico_time expire, void (*timer)(pico_time, void *), void *arg)
|
|
{
|
|
IGNORE_PARAMETER(arg);
|
|
IGNORE_PARAMETER(timer);
|
|
IGNORE_PARAMETER(expire);
|
|
|
|
called_picotimer++;
|
|
|
|
return called_picotimer;
|
|
}
|
|
|
|
|
|
static void modem_state(struct pico_device_ppp *ppp, enum ppp_modem_event event)
|
|
{
|
|
IGNORE_PARAMETER(ppp);
|
|
printf("Called MODEM FSM mock\n");
|
|
ppp_modem_ev = event;
|
|
}
|
|
static void lcp_state(struct pico_device_ppp *ppp, enum ppp_lcp_event event)
|
|
{
|
|
IGNORE_PARAMETER(ppp);
|
|
printf("Called LCP FSM mock\n");
|
|
ppp_lcp_ev = event;
|
|
}
|
|
static void auth_state(struct pico_device_ppp *ppp, enum ppp_auth_event event)
|
|
{
|
|
IGNORE_PARAMETER(ppp);
|
|
printf("Called AUTH FSM mock\n");
|
|
ppp_auth_ev = event;
|
|
}
|
|
static void ipcp_state(struct pico_device_ppp *ppp, enum ppp_ipcp_event event)
|
|
{
|
|
IGNORE_PARAMETER(ppp);
|
|
printf("Called IPCP FSM mock\n");
|
|
ppp_ipcp_ev = event;
|
|
}
|
|
|
|
static int called_serial_send = 0;
|
|
static uint8_t serial_out_first_char = 0;
|
|
static uint32_t serial_out_len = 0;
|
|
static uint8_t serial_buffer[64];
|
|
|
|
static int unit_serial_send(struct pico_device *dev, const void *buf, int len)
|
|
{
|
|
IGNORE_PARAMETER(dev);
|
|
printf("Called send function!\n");
|
|
serial_out_len = (unsigned) len;
|
|
if (len < 64) {
|
|
memcpy(serial_buffer, buf, (unsigned) len);
|
|
} else {
|
|
memcpy(serial_buffer, buf, 64);
|
|
}
|
|
|
|
serial_out_first_char = *(uint8_t *)((uintptr_t)(buf));
|
|
called_serial_send++;
|
|
printf(" First char : %02x, len: %d\n", serial_out_first_char, serial_out_len);
|
|
printf(" ---- %02x %02x %02x %02x %02x %02x %02x %02x\n",
|
|
serial_buffer[0], serial_buffer[1], serial_buffer[2],
|
|
serial_buffer[3], serial_buffer[4], serial_buffer[5],
|
|
serial_buffer[6], serial_buffer[7]);
|
|
return len;
|
|
}
|
|
|
|
uint8_t test_string[5][10] = {
|
|
{ 0x7e, 'a', 'b', 'c', 'd', 0x7e },
|
|
{ 0x7e, 'a', 0x7e, 'c', 'd', 0x7e },
|
|
{ 0x7e, 'a', 'b', 0x7d, 'd', 0x7e },
|
|
{ 0x7e, 0x7d, 'b', 'c', 0x7e, 0x7e },
|
|
{ 0x7e, 0xed, 0x7d, 0xff, 0x7d, 0x3F, 'c', 0x20, 0x7e }
|
|
};
|
|
|
|
uint8_t escape_string[5][12] = {
|
|
{ 0x7e, 'a', 'b', 'c', 'd', 0x7e },
|
|
{ 0x7e, 'a', 0x7d, 0x5e, 'c', 'd', 0x7e },
|
|
{ 0x7e, 'a', 'b', 0x7d, 0x5d, 'd', 0x7e },
|
|
{ 0x7e, 0x7d, 0x5d, 'b', 'c', 0x7d, 0x5e, 0x7e },
|
|
{ 0x7e, 0xed, 0x7d, 0x5d, 0xff, 0x7d, 0x5d, 0x3F, 'c', 0x20, 0x7e }
|
|
};
|
|
|
|
int test_string_len[] = {
|
|
6, 6, 6, 6, 9
|
|
};
|
|
int escape_string_len[] = {
|
|
6, 7, 7, 8, 11
|
|
};
|
|
|
|
START_TEST(tc_ppp_serial_send_escape)
|
|
{
|
|
int i;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
_ppp.serial_send = unit_serial_send;
|
|
|
|
for (i = 0; i < 5; i++) {
|
|
called_serial_send = 0;
|
|
fail_if(ppp_serial_send_escape(&_ppp, test_string[i], test_string_len[i]) != test_string_len[i]);
|
|
fail_if(called_serial_send != 1);
|
|
fail_if(serial_out_len != (unsigned) escape_string_len[i]);
|
|
printf(" test string ---- %02x %02x %02x %02x %02x %02x %02x %02x\n",
|
|
test_string[i][0], test_string[i][1], test_string[i][2],
|
|
test_string[i][3], test_string[i][4], test_string[i][5],
|
|
test_string[i][6], test_string[i][7]);
|
|
printf(" expected string ---- %02x %02x %02x %02x %02x %02x %02x %02x\n",
|
|
escape_string[i][0], escape_string[i][1], escape_string[i][2],
|
|
escape_string[i][3], escape_string[i][4], escape_string[i][5],
|
|
escape_string[i][6], escape_string[i][7]);
|
|
printf(" received string ---- %02x %02x %02x %02x %02x %02x %02x %02x\n",
|
|
serial_buffer[0], serial_buffer[1], serial_buffer[2],
|
|
serial_buffer[3], serial_buffer[4], serial_buffer[5],
|
|
serial_buffer[6], serial_buffer[7]);
|
|
|
|
fail_if(memcmp(escape_string[i], serial_buffer, serial_out_len) != 0);
|
|
}
|
|
}
|
|
END_TEST
|
|
|
|
|
|
START_TEST(tc_lcp_timer_start)
|
|
{
|
|
|
|
/* Reset counter, LCP REQ */
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
lcp_timer_start(&_ppp, 0);
|
|
fail_if(_ppp.timer_on != PPP_TIMER_ON_LCPREQ);
|
|
fail_if(_ppp.timer_count != 0);
|
|
fail_if(_ppp.timer_val != PICO_PPP_DEFAULT_TIMER);
|
|
|
|
/* LCP CONFIG REQ, Normal case */
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
lcp_timer_start(&_ppp, PPP_TIMER_ON_LCPREQ);
|
|
fail_if(_ppp.timer_on != PPP_TIMER_ON_LCPREQ);
|
|
fail_if(_ppp.timer_count != PICO_PPP_DEFAULT_MAX_CONFIGURE);
|
|
fail_if(_ppp.timer_val != PICO_PPP_DEFAULT_TIMER);
|
|
|
|
/* LCP TERMINATE REQ, Normal case */
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
lcp_timer_start(&_ppp, PPP_TIMER_ON_LCPTERM);
|
|
fail_if(_ppp.timer_on != PPP_TIMER_ON_LCPTERM);
|
|
fail_if(_ppp.timer_count != PICO_PPP_DEFAULT_MAX_TERMINATE);
|
|
fail_if(_ppp.timer_val != PICO_PPP_DEFAULT_TIMER);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_lcp_zero_restart_count)
|
|
{
|
|
/* Reset counter, LCP REQ */
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
lcp_zero_restart_count(&_ppp);
|
|
fail_if(_ppp.timer_on != PPP_TIMER_ON_LCPREQ);
|
|
fail_if(_ppp.timer_count != 0);
|
|
fail_if(_ppp.timer_val != PICO_PPP_DEFAULT_TIMER);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_lcp_timer_stop)
|
|
{
|
|
/* LCP CONFIG REQ, Normal case */
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
lcp_timer_start(&_ppp, PPP_TIMER_ON_LCPREQ);
|
|
fail_if(_ppp.timer_on != PPP_TIMER_ON_LCPREQ);
|
|
fail_if(_ppp.timer_count != PICO_PPP_DEFAULT_MAX_CONFIGURE);
|
|
fail_if(_ppp.timer_val != PICO_PPP_DEFAULT_TIMER);
|
|
/* Releasing timer */
|
|
lcp_timer_stop(&_ppp, PPP_TIMER_ON_LCPREQ);
|
|
fail_if(_ppp.timer_on != 0);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_ctl_packet_size)
|
|
{
|
|
uint32_t size = 10;
|
|
uint32_t prefix = ppp_ctl_packet_size(&_ppp, 0, &size);
|
|
fail_if(prefix != (PPP_HDR_SIZE + PPP_PROTO_SLOT_SIZE));
|
|
fail_if(size != (10 + prefix + PPP_FCS_SIZE + 1));
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_fcs_char)
|
|
{
|
|
char a = '*';
|
|
uint16_t fcs;
|
|
fcs = ppp_fcs_char(0u, (uint8_t)a);
|
|
fail_if(fcs != 36440);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_fcs_continue)
|
|
{
|
|
char a = '*';
|
|
uint16_t fcs;
|
|
fcs = ppp_fcs_continue(0, (uint8_t *) &a, 1);
|
|
fail_if(fcs != 36440);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_fcs_finish)
|
|
{
|
|
uint16_t fcs = 36440;
|
|
fcs = ppp_fcs_finish(fcs);
|
|
fail_if (fcs != 29095);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_fcs_start)
|
|
{
|
|
uint16_t fcs;
|
|
char s = '*';
|
|
fcs = ppp_fcs_start((uint8_t*)&s, 1);
|
|
fail_if(fcs != 33247);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_fcs_verify)
|
|
{
|
|
char hello[8] = "hello";
|
|
uint16_t fcs = ppp_fcs_start((uint8_t *)hello, 5);
|
|
fcs = ppp_fcs_finish(fcs);
|
|
memcpy(hello + 5, &fcs, 2);
|
|
fail_if(0 != ppp_fcs_verify((uint8_t *)hello, 7));
|
|
hello[0] = 'B';
|
|
hello[1] = 'y';
|
|
hello[2] = 'e';
|
|
hello[3] = 'z';
|
|
hello[4] = 'z';
|
|
fail_if(-1 != ppp_fcs_verify((uint8_t *)hello, 7));
|
|
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_pico_ppp_ctl_send)
|
|
{
|
|
uint8_t pkt[32] = { };
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
|
|
/* No serial_send associated */
|
|
fail_if(pico_ppp_ctl_send(&_ppp.dev, 1, pkt, 30) != 30);
|
|
fail_if(called_serial_send != 0);
|
|
/* normal case */
|
|
_ppp.serial_send = unit_serial_send;
|
|
fail_if(pico_ppp_ctl_send(&_ppp.dev, 1, pkt, 30) != 30);
|
|
fail_if(called_serial_send != 1);
|
|
called_serial_send = 0;
|
|
fail_if(serial_out_first_char != 0x7e);
|
|
fail_if(serial_out_len != 30);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_pico_ppp_send)
|
|
{
|
|
uint8_t pkt[32] = { };
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
|
|
|
|
/* wrong ipcp_state */
|
|
_ppp.serial_send = unit_serial_send;
|
|
fail_if(pico_ppp_send(&_ppp.dev, pkt, 30) != 30);
|
|
fail_if(called_serial_send != 0);
|
|
|
|
/* No serial_send associated */
|
|
_ppp.serial_send = NULL;
|
|
_ppp.ipcp_state = PPP_IPCP_STATE_OPENED;
|
|
fail_if(pico_ppp_send(&_ppp.dev, pkt, 30) != 30);
|
|
fail_if(called_serial_send != 0);
|
|
|
|
/* normal case */
|
|
_ppp.serial_send = unit_serial_send;
|
|
fail_if(pico_ppp_send(&_ppp.dev, pkt, 30) != 30);
|
|
fail_if(called_serial_send != 1);
|
|
called_serial_send = 0;
|
|
fail_if(serial_out_first_char != 0x7e);
|
|
fail_if(serial_out_len != 38);
|
|
|
|
/* with LCPOPT_PROTO_COMP set */
|
|
called_serial_send = 0;
|
|
LCPOPT_SET_PEER((&_ppp), LCPOPT_PROTO_COMP);
|
|
fail_if(pico_ppp_send(&_ppp.dev, pkt, 30) != 30);
|
|
fail_if(called_serial_send != 1);
|
|
called_serial_send = 0;
|
|
fail_if(serial_out_first_char != 0x7e);
|
|
fail_if(serial_out_len != 37);
|
|
LCPOPT_UNSET_PEER((&_ppp), LCPOPT_PROTO_COMP);
|
|
|
|
/* with LCPOPT_ADDRCTL_COMP set */
|
|
called_serial_send = 0;
|
|
LCPOPT_SET_PEER((&_ppp), LCPOPT_ADDRCTL_COMP);
|
|
fail_if(pico_ppp_send(&_ppp.dev, pkt, 30) != 30);
|
|
fail_if(called_serial_send != 1);
|
|
called_serial_send = 0;
|
|
fail_if(serial_out_first_char != 0x7e);
|
|
fail_if(serial_out_len != 36);
|
|
LCPOPT_UNSET_PEER((&_ppp), LCPOPT_ADDRCTL_COMP);
|
|
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_modem_start_timer)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
ppp_modem_start_timer(&_ppp);
|
|
fail_if(_ppp.timer_on != PPP_TIMER_ON_MODEM);
|
|
fail_if(_ppp.timer_val != PICO_PPP_DEFAULT_TIMER);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_modem_send_reset)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
called_serial_send = 0;
|
|
/* No serial send */
|
|
ppp_modem_send_reset(&_ppp);
|
|
fail_if(called_serial_send > 0);
|
|
/* Normal way */
|
|
_ppp.serial_send = unit_serial_send;
|
|
ppp_modem_send_reset(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
fail_if(serial_out_len != 5);
|
|
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_modem_send_echo)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
called_serial_send = 0;
|
|
/* No serial send */
|
|
ppp_modem_send_echo(&_ppp);
|
|
fail_if(called_serial_send > 0);
|
|
/* Normal way */
|
|
_ppp.serial_send = unit_serial_send;
|
|
ppp_modem_send_echo(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
fail_if(serial_out_len != 6);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_modem_send_creg)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
called_serial_send = 0;
|
|
/* No serial send */
|
|
ppp_modem_send_creg(&_ppp);
|
|
fail_if(called_serial_send > 0);
|
|
/* Normal way */
|
|
_ppp.serial_send = unit_serial_send;
|
|
ppp_modem_send_creg(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
fail_if(serial_out_len != 11);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_modem_send_cgreg)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
called_serial_send = 0;
|
|
/* No serial send */
|
|
ppp_modem_send_cgreg(&_ppp);
|
|
fail_if(called_serial_send > 0);
|
|
/* Normal way */
|
|
_ppp.serial_send = unit_serial_send;
|
|
ppp_modem_send_cgreg(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
fail_if(serial_out_len != 12);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_modem_send_cgdcont)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
called_serial_send = 0;
|
|
/* No serial send */
|
|
ppp_modem_send_cgdcont(&_ppp);
|
|
fail_if(called_serial_send > 0);
|
|
/* Normal way */
|
|
_ppp.serial_send = unit_serial_send;
|
|
ppp_modem_send_cgdcont(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_modem_send_cgatt)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
called_serial_send = 0;
|
|
/* No serial send */
|
|
ppp_modem_send_cgatt(&_ppp);
|
|
fail_if(called_serial_send > 0);
|
|
/* Normal way */
|
|
_ppp.serial_send = unit_serial_send;
|
|
ppp_modem_send_cgatt(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
fail_if(serial_out_len != 12);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_modem_send_dial)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
called_serial_send = 0;
|
|
/* No serial send */
|
|
ppp_modem_send_dial(&_ppp);
|
|
fail_if(called_serial_send > 0);
|
|
/* Normal way */
|
|
_ppp.serial_send = unit_serial_send;
|
|
ppp_modem_send_dial(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
fail_if(serial_out_len != 13);
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(tc_ppp_modem_connected)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
ppp_lcp_ev = 0;
|
|
ppp_modem_connected(&_ppp);
|
|
fail_if(ppp_lcp_ev != PPP_LCP_EVENT_UP);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_modem_disconnected)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
ppp_lcp_ev = 0;
|
|
ppp_modem_disconnected(&_ppp);
|
|
fail_if(ppp_lcp_ev != PPP_LCP_EVENT_DOWN);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_modem_recv)
|
|
{
|
|
char ok[] = "OK";
|
|
char connect[] = "CONNECT HELLO HI THERE";
|
|
char error[] = "ERROR";
|
|
char blabla[] = "Blabla";
|
|
ppp_modem_ev = 0;
|
|
ppp_modem_recv(&_ppp, ok, (uint32_t)strlen(ok));
|
|
fail_if(ppp_modem_ev != PPP_MODEM_EVENT_OK);
|
|
|
|
ppp_modem_ev = 0;
|
|
ppp_modem_recv(&_ppp, connect, (uint32_t)strlen(connect));
|
|
fail_if(ppp_modem_ev != PPP_MODEM_EVENT_CONNECT);
|
|
|
|
ppp_modem_ev = 0;
|
|
ppp_modem_recv(&_ppp, error, (uint32_t)strlen(error));
|
|
fail_if(ppp_modem_ev != PPP_MODEM_EVENT_STOP);
|
|
|
|
ppp_modem_ev = PPP_MODEM_EVENT_MAX; /* Which is basically illegal, just to check */
|
|
ppp_modem_recv(&_ppp, blabla, (uint32_t)8);
|
|
fail_if(ppp_modem_ev != PPP_MODEM_EVENT_MAX);
|
|
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_lcp_send_configure_request)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
_ppp.serial_send = unit_serial_send;
|
|
|
|
/* With no options... */
|
|
called_serial_send = 0;
|
|
lcp_send_configure_request(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
fail_if(serial_out_len != 12);
|
|
|
|
/* With all the options... */
|
|
called_serial_send = 0;
|
|
LCPOPT_SET_LOCAL((&_ppp), LCPOPT_PROTO_COMP);
|
|
LCPOPT_SET_LOCAL((&_ppp), LCPOPT_MRU);
|
|
LCPOPT_SET_LOCAL((&_ppp), LCPOPT_ADDRCTL_COMP);
|
|
lcp_send_configure_request(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
fail_if(serial_out_len != 20);
|
|
|
|
/* with a failing malloc... */
|
|
pico_set_mm_failure(1);
|
|
called_serial_send = 0;
|
|
lcp_send_configure_request(&_ppp);
|
|
fail_if(called_serial_send != 0);
|
|
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_lcp_optflags)
|
|
{
|
|
uint8_t pkt[4 + sizeof(struct pico_lcp_hdr)];
|
|
uint8_t *p = pkt + sizeof(struct pico_lcp_hdr);
|
|
p[0] = 0x03;
|
|
p[1] = 0x42;
|
|
p[2] = 0x56;
|
|
p[3] = 0x99;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
fail_if(lcp_optflags(&_ppp, pkt, 4 + sizeof(struct pico_lcp_hdr), 1u) != 0x08);
|
|
fail_if(_ppp.auth != 0x5699);
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(tc_lcp_send_configure_ack)
|
|
{
|
|
uint8_t pkt[20] = "";
|
|
struct pico_lcp_hdr *lcpreq;
|
|
called_serial_send = 0;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
_ppp.serial_send = unit_serial_send;
|
|
_ppp.pkt = pkt;
|
|
_ppp.len = 4;
|
|
lcpreq = (struct pico_lcp_hdr *)_ppp.pkt;
|
|
lcpreq->len = short_be(4);
|
|
lcp_send_configure_ack(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_lcp_send_terminate_request)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
_ppp.serial_send = unit_serial_send;
|
|
|
|
called_serial_send = 0;
|
|
lcp_send_terminate_request(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
fail_if(serial_out_len != 12);
|
|
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_lcp_send_terminate_ack)
|
|
{
|
|
uint8_t pkt[20] = "";
|
|
struct pico_lcp_hdr *lcpreq;
|
|
called_serial_send = 0;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
_ppp.serial_send = unit_serial_send;
|
|
_ppp.pkt = pkt;
|
|
_ppp.len = 4;
|
|
lcpreq = (struct pico_lcp_hdr *)_ppp.pkt;
|
|
lcpreq->len = short_be(4);
|
|
lcp_send_terminate_ack(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_lcp_send_configure_nack)
|
|
{
|
|
uint8_t pkt[20] = "";
|
|
struct pico_lcp_hdr *lcpreq;
|
|
called_serial_send = 0;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
_ppp.serial_send = unit_serial_send;
|
|
_ppp.pkt = pkt;
|
|
_ppp.len = 4;
|
|
lcpreq = (struct pico_lcp_hdr *)_ppp.pkt;
|
|
lcpreq->len = short_be(4);
|
|
lcp_send_configure_nack(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_lcp_process_in)
|
|
{
|
|
uint8_t pkt[64];
|
|
called_serial_send = 0;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
_ppp.serial_send = unit_serial_send;
|
|
|
|
/* Receive ACK (RCA) */
|
|
ppp_lcp_ev = 0;
|
|
pkt[0] = PICO_CONF_ACK;
|
|
lcp_process_in(&_ppp, pkt, 64);
|
|
fail_if(ppp_lcp_ev != PPP_LCP_EVENT_RCA);
|
|
|
|
/* Receive NACK (RCN) */
|
|
ppp_lcp_ev = 0;
|
|
pkt[0] = PICO_CONF_NAK;
|
|
lcp_process_in(&_ppp, pkt, 64);
|
|
fail_if(ppp_lcp_ev != PPP_LCP_EVENT_RCN);
|
|
|
|
/* Receive REJ (RCN) */
|
|
ppp_lcp_ev = 0;
|
|
pkt[0] = PICO_CONF_REJ;
|
|
lcp_process_in(&_ppp, pkt, 64);
|
|
fail_if(ppp_lcp_ev != PPP_LCP_EVENT_RCN);
|
|
|
|
/* Receive REQ, with unwanted option field (RCR-) */
|
|
ppp_lcp_ev = 0;
|
|
pkt[0] = PICO_CONF_REQ;
|
|
pkt[sizeof(struct pico_lcp_hdr)] = 0x04;
|
|
pkt[sizeof(struct pico_lcp_hdr) + 1] = 0x02;
|
|
lcp_process_in(&_ppp, pkt, sizeof(struct pico_lcp_hdr) + 2);
|
|
fail_if(ppp_lcp_ev != PPP_LCP_EVENT_RCR_NEG);
|
|
|
|
/* Receive REQ, with valid option field (RCR+) */
|
|
ppp_lcp_ev = 0;
|
|
pkt[0] = PICO_CONF_REQ;
|
|
pkt[sizeof(struct pico_lcp_hdr)] = 0x04;
|
|
pkt[sizeof(struct pico_lcp_hdr) + 1] = 0x02;
|
|
_ppp.lcpopt_local = (1 << 4);
|
|
lcp_process_in(&_ppp, pkt, sizeof(struct pico_lcp_hdr) + 2);
|
|
fail_if(ppp_lcp_ev != PPP_LCP_EVENT_RCR_POS);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_pap_process_in)
|
|
{
|
|
struct pico_pap_hdr hdr;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
|
|
/* Receive SUCCESS (RAA) */
|
|
_ppp.auth = 0xc023;
|
|
ppp_auth_ev = 0;
|
|
hdr.code = PAP_AUTH_ACK;
|
|
pap_process_in(&_ppp, (uint8_t *)&hdr, sizeof(hdr));
|
|
fail_if (ppp_auth_ev != PPP_AUTH_EVENT_RAA);
|
|
|
|
/* Receive FAILURE (RAN) */
|
|
ppp_auth_ev = 0;
|
|
hdr.code = PAP_AUTH_NAK;
|
|
pap_process_in(&_ppp, (uint8_t *)&hdr, sizeof(hdr));
|
|
fail_if (ppp_auth_ev != PPP_AUTH_EVENT_RAN);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_chap_process_in)
|
|
{
|
|
struct pico_chap_hdr hdr;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
|
|
/* Receive challenge (RAC) */
|
|
ppp_auth_ev = 0;
|
|
_ppp.auth = 0xc223;
|
|
hdr.code = CHAP_CHALLENGE;
|
|
chap_process_in(&_ppp, (uint8_t *)&hdr, sizeof(hdr));
|
|
fail_if (ppp_auth_ev != PPP_AUTH_EVENT_RAC);
|
|
|
|
/* Receive SUCCESS (RAA) */
|
|
ppp_auth_ev = 0;
|
|
hdr.code = CHAP_SUCCESS;
|
|
chap_process_in(&_ppp, (uint8_t *)&hdr, sizeof(hdr));
|
|
fail_if (ppp_auth_ev != PPP_AUTH_EVENT_RAA);
|
|
|
|
/* Receive FAILURE (RAN) */
|
|
ppp_auth_ev = 0;
|
|
hdr.code = CHAP_FAILURE;
|
|
chap_process_in(&_ppp, (uint8_t *)&hdr, sizeof(hdr));
|
|
fail_if (ppp_auth_ev != PPP_AUTH_EVENT_RAN);
|
|
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(tc_ipcp_ack)
|
|
{
|
|
/* TODO: test this: static void ipcp_ack(struct pico_device_ppp *ppp, uint8_t *pkt, uint32_t len) */
|
|
uint8_t pkt[20] = "";
|
|
struct pico_ipcp_hdr *ipcp;
|
|
called_serial_send = 0;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
_ppp.serial_send = unit_serial_send;
|
|
_ppp.pkt = pkt;
|
|
_ppp.len = 4;
|
|
ipcp = (struct pico_ipcp_hdr *)_ppp.pkt;
|
|
ipcp->len = short_be(4);
|
|
ipcp_send_ack(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
fail_if(serial_out_len != 12);
|
|
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_uint32_t)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
fail_if(ipcp_request_options_size(&_ppp) != 3 * IPCP_ADDR_LEN);
|
|
|
|
_ppp.ipcp_nbns1 = 1;
|
|
fail_if(ipcp_request_options_size(&_ppp) != 4 * IPCP_ADDR_LEN);
|
|
|
|
_ppp.ipcp_nbns2 = 1;
|
|
fail_if(ipcp_request_options_size(&_ppp) != 5 * IPCP_ADDR_LEN);
|
|
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ipcp_request_add_address)
|
|
{
|
|
uint8_t dst[6];
|
|
ipcp_request_add_address(dst, 0x42, 0xDDCCBBAA);
|
|
fail_if(dst[0] != 0x42);
|
|
fail_if(dst[1] != IPCP_ADDR_LEN);
|
|
fail_if(dst[2] != 0xAA);
|
|
fail_if(dst[3] != 0xBB);
|
|
fail_if(dst[4] != 0xCC);
|
|
fail_if(dst[5] != 0xDD);
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(tc_ipcp_request_fill)
|
|
{
|
|
|
|
uint8_t opts[5 * IPCP_ADDR_LEN];
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
|
|
_ppp.ipcp_allowed_fields = 0xffff;
|
|
ipcp_request_fill(&_ppp, opts);
|
|
fail_if(opts[0] != IPCP_OPT_IP);
|
|
fail_if(opts[6] != IPCP_OPT_DNS1);
|
|
fail_if(opts[12] != IPCP_OPT_DNS2);
|
|
|
|
_ppp.ipcp_nbns1 = 1;
|
|
ipcp_request_fill(&_ppp, opts);
|
|
fail_if(opts[0] != IPCP_OPT_IP);
|
|
fail_if(opts[6] != IPCP_OPT_DNS1);
|
|
fail_if(opts[12] != IPCP_OPT_DNS2);
|
|
fail_if(opts[18] != IPCP_OPT_NBNS1);
|
|
|
|
_ppp.ipcp_nbns2 = 1;
|
|
ipcp_request_fill(&_ppp, opts);
|
|
fail_if(opts[0] != IPCP_OPT_IP);
|
|
fail_if(opts[6] != IPCP_OPT_DNS1);
|
|
fail_if(opts[12] != IPCP_OPT_DNS2);
|
|
fail_if(opts[18] != IPCP_OPT_NBNS1);
|
|
fail_if(opts[24] != IPCP_OPT_NBNS2);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ipcp_send_req)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
_ppp.serial_send = unit_serial_send;
|
|
|
|
/* With no options... */
|
|
called_serial_send = 0;
|
|
ipcp_send_req(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(tc_ipcp_reject_vj)
|
|
{
|
|
/* TODO: test this: static void ipcp_reject_vj(struct pico_device_ppp *ppp, uint8_t *comp_req) */
|
|
uint8_t buf[IPCP_OPT_VJ + sizeof(struct pico_ipcp_hdr)] = { };
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
_ppp.serial_send = unit_serial_send;
|
|
called_serial_send = 0;
|
|
ipcp_reject_vj(&_ppp, buf);
|
|
fail_if(called_serial_send != 1);
|
|
fail_if(serial_out_len != 18);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_ipv4_conf)
|
|
{
|
|
/* TODO: test this: static void ppp_ipv4_conf(struct pico_device_ppp *ppp) */
|
|
/* This test needs an actual device */
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(tc_ipcp_process_in)
|
|
{
|
|
/* TODO: test this: static void ipcp_process_in(struct pico_device_ppp *ppp, uint8_t *pkt, uint32_t len) */
|
|
uint8_t req[sizeof(struct pico_ipcp_hdr) + 5 * IPCP_ADDR_LEN];
|
|
uint8_t *p = req + sizeof(struct pico_ipcp_hdr);
|
|
;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
_ppp.serial_send = unit_serial_send;
|
|
|
|
/* * * ACK * * */
|
|
req[0] = PICO_CONF_ACK;
|
|
|
|
/* Fill addresses */
|
|
*(p++) = IPCP_OPT_IP;
|
|
*(p++) = IPCP_ADDR_LEN;
|
|
*(((uint32_t*)p)) = 0x11223344;
|
|
p += sizeof(uint32_t);
|
|
|
|
*(p++) = IPCP_OPT_DNS1;
|
|
*(p++) = IPCP_ADDR_LEN;
|
|
*(((uint32_t*)p)) = 0x55667788;
|
|
p += sizeof(uint32_t);
|
|
|
|
*(p++) = IPCP_OPT_NBNS1;
|
|
*(p++) = IPCP_ADDR_LEN;
|
|
*(((uint32_t*)p)) = 0x99AABBCC;
|
|
p += sizeof(uint32_t);
|
|
|
|
*(p++) = IPCP_OPT_DNS2;
|
|
*(p++) = IPCP_ADDR_LEN;
|
|
*(((uint32_t*)p)) = 0xDDEEFF00;
|
|
p += sizeof(uint32_t);
|
|
|
|
*(p++) = IPCP_OPT_NBNS2;
|
|
*(p++) = IPCP_ADDR_LEN;
|
|
*(((uint32_t*)p)) = 0x11223344;
|
|
p += sizeof(uint32_t);
|
|
|
|
ppp_ipcp_ev = 0;
|
|
ipcp_process_in(&_ppp, req, sizeof(req));
|
|
fail_if(ppp_ipcp_ev != PPP_IPCP_EVENT_RCA);
|
|
fail_if(_ppp.ipcp_ip != 0x11223344);
|
|
fail_if(_ppp.ipcp_dns1 != 0x55667788);
|
|
fail_if(_ppp.ipcp_nbns1 != 0x99aabbcc);
|
|
fail_if(_ppp.ipcp_dns2 != 0xddeeff00);
|
|
fail_if(_ppp.ipcp_nbns2 != 0x11223344);
|
|
|
|
/* Get a VJ reject ! */
|
|
ppp_ipcp_ev = 0;
|
|
called_serial_send = 0;
|
|
p = req + sizeof(struct pico_ipcp_hdr);
|
|
*(p++) = IPCP_OPT_VJ;
|
|
*(p++) = IPCP_VJ_LEN;
|
|
*(((uint32_t*)p)) = 0x1;
|
|
ipcp_process_in(&_ppp, req, sizeof(struct pico_ipcp_hdr) + IPCP_VJ_LEN);
|
|
fail_if(called_serial_send != 1);
|
|
fail_if(ppp_ipcp_ev != 0);
|
|
|
|
/* * * REQ * * */
|
|
ppp_ipcp_ev = 0;
|
|
req[0] = PICO_CONF_REQ;
|
|
ipcp_process_in(&_ppp, req, sizeof(struct pico_ipcp_hdr));
|
|
fail_if(ppp_ipcp_ev != PPP_IPCP_EVENT_RCR_POS);
|
|
|
|
/* * * NAK * * */
|
|
ppp_ipcp_ev = 0;
|
|
req[0] = PICO_CONF_NAK;
|
|
ipcp_process_in(&_ppp, req, sizeof(struct pico_ipcp_hdr));
|
|
fail_if(ppp_ipcp_ev != PPP_IPCP_EVENT_RCN);
|
|
|
|
/* * * REJ * * */
|
|
ppp_ipcp_ev = 0;
|
|
req[0] = PICO_CONF_REJ;
|
|
ipcp_process_in(&_ppp, req, sizeof(struct pico_ipcp_hdr));
|
|
fail_if(ppp_ipcp_ev != PPP_IPCP_EVENT_RCN);
|
|
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(tc_ipcp6_process_in)
|
|
{
|
|
/* TODO: test this: static void ipcp6_process_in(struct pico_device_ppp *ppp, uint8_t *pkt, uint32_t len) */
|
|
/* When implemented, do... */
|
|
uint8_t req[sizeof(struct pico_ipcp_hdr)];
|
|
ppp_ipcp_ev = 0;
|
|
req[0] = PICO_CONF_REJ;
|
|
ipcp6_process_in(&_ppp, req, sizeof(struct pico_ipcp_hdr));
|
|
fail_if(ppp_ipcp_ev != 0);
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(tc_ppp_process_packet_payload)
|
|
{
|
|
/* Empty, tested with ppp_process_packet, below. */
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_process_packet)
|
|
{
|
|
/* Empty, tested with ppp_recv_data, below. */
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ppp_recv_data)
|
|
{
|
|
uint8_t pkt[20] = "";
|
|
struct pico_lcp_hdr *lcpreq;
|
|
|
|
/* This creates an LCP ack */
|
|
printf("Unit test: Packet forgery. Creating LCP ACK... \n");
|
|
called_serial_send = 0;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
_ppp.serial_send = unit_serial_send;
|
|
_ppp.pkt = pkt;
|
|
_ppp.len = 4;
|
|
lcpreq = (struct pico_lcp_hdr *)_ppp.pkt;
|
|
lcpreq->len = short_be(4);
|
|
lcp_send_configure_ack(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
/* LCP ack is now in the buffer, and can be processed */
|
|
printf("Unit test: Packet forgery. Injecting LCP ACK... \n");
|
|
ppp_lcp_ev = 0;
|
|
ppp_recv_data(&_ppp, serial_buffer + 1, serial_out_len - 2);
|
|
fail_if(ppp_lcp_ev != PPP_LCP_EVENT_RCA);
|
|
printf("OK!\n");
|
|
/* TODO: Increase coverage. */
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(tc_lcp_this_layer_up)
|
|
{
|
|
/* TODO: test this: static void lcp_this_layer_up(struct pico_device_ppp *ppp) */
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
_ppp.serial_send = unit_serial_send;
|
|
|
|
ppp_auth_ev = 0;
|
|
lcp_this_layer_up(&_ppp);
|
|
fail_if(ppp_auth_ev != PPP_AUTH_EVENT_UP_NONE);
|
|
|
|
ppp_auth_ev = 0;
|
|
_ppp.auth = 0xc023;
|
|
lcp_this_layer_up(&_ppp);
|
|
fail_if(ppp_auth_ev != PPP_AUTH_EVENT_UP_PAP);
|
|
|
|
ppp_auth_ev = 0;
|
|
_ppp.auth = 0xc223;
|
|
lcp_this_layer_up(&_ppp);
|
|
fail_if(ppp_auth_ev != PPP_AUTH_EVENT_UP_CHAP);
|
|
|
|
ppp_auth_ev = 0;
|
|
_ppp.auth = 0xfefe;
|
|
lcp_this_layer_up(&_ppp);
|
|
fail_if(ppp_auth_ev != 0);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_lcp_this_layer_down)
|
|
{
|
|
ppp_auth_ev = 0;
|
|
lcp_this_layer_down(&_ppp);
|
|
fail_if(ppp_auth_ev != PPP_AUTH_EVENT_DOWN);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_lcp_this_layer_started)
|
|
{
|
|
ppp_modem_ev = 0;
|
|
lcp_this_layer_started(&_ppp);
|
|
fail_if(ppp_modem_ev != PPP_MODEM_EVENT_START);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_lcp_this_layer_finished)
|
|
{
|
|
ppp_modem_ev = 0;
|
|
lcp_this_layer_finished(&_ppp);
|
|
fail_if(ppp_modem_ev != PPP_MODEM_EVENT_STOP);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_lcp_initialize_restart_count)
|
|
{
|
|
/* TODO: test this: static void lcp_initialize_restart_count(struct pico_device_ppp *ppp) */
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
lcp_initialize_restart_count(&_ppp);
|
|
fail_if(_ppp.timer_on != PPP_TIMER_ON_LCPREQ);
|
|
fail_if(_ppp.timer_count != PICO_PPP_DEFAULT_MAX_CONFIGURE);
|
|
fail_if(_ppp.timer_val != PICO_PPP_DEFAULT_TIMER);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_lcp_send_code_reject)
|
|
{
|
|
/* TODO: test this: static void lcp_send_code_reject(struct pico_device_ppp *ppp) */
|
|
lcp_send_code_reject(&_ppp);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_lcp_send_echo_reply)
|
|
{
|
|
uint8_t pkt[20] = "";
|
|
struct pico_lcp_hdr *lcpreq;
|
|
called_serial_send = 0;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
_ppp.serial_send = unit_serial_send;
|
|
_ppp.pkt = pkt;
|
|
_ppp.len = 4;
|
|
lcpreq = (struct pico_lcp_hdr *)_ppp.pkt;
|
|
lcpreq->len = short_be(4);
|
|
lcp_send_echo_reply(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_auth)
|
|
{
|
|
ppp_ipcp_ev = 0;
|
|
auth(&_ppp);
|
|
fail_if(ppp_ipcp_ev != PPP_IPCP_EVENT_UP);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_deauth)
|
|
{
|
|
ppp_ipcp_ev = 0;
|
|
deauth(&_ppp);
|
|
fail_if(ppp_ipcp_ev != PPP_IPCP_EVENT_DOWN);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_auth_req)
|
|
{
|
|
auth_req(&_ppp);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_auth_rsp)
|
|
{
|
|
uint8_t req[sizeof(struct pico_chap_hdr) + 1 + CHAP_MD5_SIZE] = {
|
|
0
|
|
}; /* 21 bytes */
|
|
struct pico_chap_hdr *hdr = (struct pico_chap_hdr *)req;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
called_serial_send = 0;
|
|
_ppp.serial_send = unit_serial_send;
|
|
|
|
_ppp.auth = 0xc223; /* hardcode CHAP */
|
|
hdr->code = CHAP_CHALLENGE;
|
|
hdr->len = short_be((uint16_t)(sizeof (struct pico_chap_hdr) + CHAP_MD5_SIZE));
|
|
req[sizeof(struct pico_chap_hdr)] = CHAP_MD5_SIZE; /* CHAP value size field */
|
|
_ppp.pkt = req;
|
|
_ppp.len = sizeof(struct pico_chap_hdr) + CHAP_MD5_SIZE;
|
|
auth_rsp(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
printf("OK!\n");
|
|
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_auth_start_timer)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
auth_start_timer(&_ppp);
|
|
fail_if(_ppp.timer_on != PPP_TIMER_ON_AUTH);
|
|
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ipcp_send_ack)
|
|
{
|
|
uint8_t req[sizeof(struct pico_chap_hdr) + 4 ];
|
|
struct pico_ipcp_hdr *hdr = (struct pico_ipcp_hdr *)req;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
called_serial_send = 0;
|
|
_ppp.serial_send = unit_serial_send;
|
|
hdr->code = PICO_CONF_REQ;
|
|
hdr->len = short_be((uint16_t)(sizeof (struct pico_ipcp_hdr) + 4));
|
|
_ppp.pkt = req;
|
|
_ppp.len = sizeof(struct pico_chap_hdr) + 4;
|
|
ipcp_send_ack(&_ppp);
|
|
fail_if(called_serial_send != 1);
|
|
printf("OK!\n");
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ipcp_send_nack)
|
|
{
|
|
ipcp_send_nack(&_ppp);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ipcp_bring_up)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
/* without address */
|
|
ipcp_bring_up(&_ppp);
|
|
|
|
/* with address */
|
|
_ppp.ipcp_ip = 0xAABBCCDD;
|
|
ipcp_bring_up(&_ppp);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ipcp_bring_down)
|
|
{
|
|
/* TODO: test this: static void ipcp_bring_down(struct pico_device_ppp *ppp) */
|
|
ipcp_bring_down(&_ppp);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_ipcp_start_timer)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
ipcp_start_timer(&_ppp);
|
|
fail_if (_ppp.timer_on != PPP_TIMER_ON_IPCP);
|
|
fail_if (_ppp.timer_val != PICO_PPP_DEFAULT_TIMER * PICO_PPP_DEFAULT_MAX_FAILURE);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_pico_ppp_poll)
|
|
{
|
|
/* TODO: test this: static int pico_ppp_poll(struct pico_device *dev, int loop_score) */
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_pico_ppp_link_state)
|
|
{
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
fail_if(pico_ppp_link_state(&_ppp.dev) != 0);
|
|
_ppp.ipcp_state = PPP_IPCP_STATE_OPENED;
|
|
fail_if(pico_ppp_link_state(&_ppp.dev) == 0);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_check_to_modem)
|
|
{
|
|
ppp_modem_ev = 0;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
/* No timer on ... */
|
|
check_to_modem(&_ppp);
|
|
fail_if(ppp_modem_ev != 0);
|
|
|
|
/* Timer set to 1 */
|
|
_ppp.timer_on = PPP_TIMER_ON_MODEM;
|
|
_ppp.timer_val = 1;
|
|
check_to_modem(&_ppp);
|
|
fail_if(ppp_modem_ev != 0);
|
|
_ppp.timer_val--;
|
|
/* Timer expired */
|
|
check_to_modem(&_ppp);
|
|
printf("Modem event: %02x\n", ppp_modem_ev);
|
|
fail_if(ppp_modem_ev != PPP_MODEM_EVENT_TIMEOUT);
|
|
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_check_to_lcp)
|
|
{
|
|
ppp_lcp_ev = 0;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
/* No timer on ... */
|
|
check_to_lcp(&_ppp);
|
|
fail_if(ppp_lcp_ev != 0);
|
|
|
|
/* Count set to 1 */
|
|
_ppp.timer_count = 1;
|
|
|
|
/* Timer set to 1 */
|
|
_ppp.timer_on = PPP_TIMER_ON_LCPTERM;
|
|
_ppp.timer_val = 1;
|
|
check_to_lcp(&_ppp);
|
|
fail_if(ppp_lcp_ev != 0);
|
|
_ppp.timer_val--;
|
|
/* Timer expired */
|
|
check_to_lcp(&_ppp);
|
|
fail_if(ppp_lcp_ev != PPP_LCP_EVENT_TO_POS);
|
|
|
|
/* Timer set to 1 */
|
|
ppp_lcp_ev = 0;
|
|
_ppp.timer_on = PPP_TIMER_ON_LCPREQ;
|
|
_ppp.timer_val = 1;
|
|
check_to_lcp(&_ppp);
|
|
fail_if(ppp_lcp_ev != 0);
|
|
_ppp.timer_val--;
|
|
/* Timer expired */
|
|
check_to_lcp(&_ppp);
|
|
fail_if(ppp_lcp_ev != PPP_LCP_EVENT_TO_NEG);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_check_to_auth)
|
|
{
|
|
/* TODO: test this: static void check_to_auth(struct pico_device_ppp *ppp) */
|
|
ppp_auth_ev = 0;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
/* No timer on ... */
|
|
check_to_auth(&_ppp);
|
|
fail_if(ppp_auth_ev != 0);
|
|
|
|
/* Timer set to 1 */
|
|
_ppp.timer_on = PPP_TIMER_ON_AUTH;
|
|
_ppp.timer_val = 1;
|
|
check_to_auth(&_ppp);
|
|
fail_if(ppp_auth_ev != 0);
|
|
/* Timer expired */
|
|
_ppp.timer_val--;
|
|
check_to_auth(&_ppp);
|
|
fail_if(ppp_auth_ev != PPP_AUTH_EVENT_TO);
|
|
}
|
|
END_TEST
|
|
START_TEST(tc_check_to_ipcp)
|
|
{
|
|
ppp_ipcp_ev = 0;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
/* No timer on ... */
|
|
check_to_ipcp(&_ppp);
|
|
fail_if(ppp_ipcp_ev != 0);
|
|
|
|
/* Timer set to 1 */
|
|
_ppp.timer_on = PPP_TIMER_ON_IPCP;
|
|
_ppp.timer_val = 1;
|
|
check_to_ipcp(&_ppp);
|
|
fail_if(ppp_ipcp_ev != 0);
|
|
/* Timer expired */
|
|
_ppp.timer_val--;
|
|
check_to_ipcp(&_ppp);
|
|
fail_if(ppp_ipcp_ev != PPP_IPCP_EVENT_TO);
|
|
}
|
|
END_TEST
|
|
|
|
START_TEST(tc_pico_ppp_tick)
|
|
{
|
|
called_picotimer = 0;
|
|
memset(&_ppp, 0, sizeof(_ppp));
|
|
pico_ppp_tick(0, &_ppp);
|
|
fail_if(called_picotimer != 1);
|
|
}
|
|
END_TEST
|
|
|
|
|
|
Suite *pico_suite(void)
|
|
{
|
|
Suite *s = suite_create("PicoTCP");
|
|
|
|
TCase *TCase_ppp_serial_send_escape = tcase_create("Unit test for ppp_serial_send_escape");
|
|
TCase *TCase_lcp_timer_start = tcase_create("Unit test for lcp_timer_start");
|
|
TCase *TCase_lcp_zero_restart_count = tcase_create("Unit test for lcp_zero_restart_count");
|
|
TCase *TCase_lcp_timer_stop = tcase_create("Unit test for lcp_timer_stop");
|
|
TCase *TCase_ppp_ctl_packet_size = tcase_create("Unit test for ppp_ctl_packet_size");
|
|
TCase *TCase_ppp_fcs_char = tcase_create("Unit test for ppp_fcs_char");
|
|
TCase *TCase_ppp_fcs_continue = tcase_create("Unit test for ppp_fcs_continue");
|
|
TCase *TCase_ppp_fcs_finish = tcase_create("Unit test for ppp_fcs_finish");
|
|
TCase *TCase_ppp_fcs_start = tcase_create("Unit test for ppp_fcs_start");
|
|
TCase *TCase_ppp_fcs_verify = tcase_create("Unit test for ppp_fcs_verify");
|
|
TCase *TCase_pico_ppp_ctl_send = tcase_create("Unit test for pico_ppp_ctl_send");
|
|
TCase *TCase_pico_ppp_send = tcase_create("Unit test for pico_ppp_send");
|
|
TCase *TCase_ppp_modem_start_timer = tcase_create("Unit test for ppp_modem_start_timer");
|
|
TCase *TCase_ppp_modem_send_reset = tcase_create("Unit test for ppp_modem_send_reset");
|
|
TCase *TCase_ppp_modem_send_echo = tcase_create("Unit test for ppp_modem_send_echo");
|
|
TCase *TCase_ppp_modem_send_creg = tcase_create("Unit test for ppp_modem_send_creg");
|
|
TCase *TCase_ppp_modem_send_cgreg = tcase_create("Unit test for ppp_modem_send_cgreg");
|
|
TCase *TCase_ppp_modem_send_cgdcont = tcase_create("Unit test for ppp_modem_send_cgdcont");
|
|
TCase *TCase_ppp_modem_send_cgatt = tcase_create("Unit test for ppp_modem_send_cgatt");
|
|
TCase *TCase_ppp_modem_send_dial = tcase_create("Unit test for ppp_modem_send_dial");
|
|
TCase *TCase_ppp_modem_connected = tcase_create("Unit test for ppp_modem_connected");
|
|
TCase *TCase_ppp_modem_disconnected = tcase_create("Unit test for ppp_modem_disconnected");
|
|
TCase *TCase_ppp_modem_recv = tcase_create("Unit test for ppp_modem_recv");
|
|
TCase *TCase_lcp_send_configure_request = tcase_create("Unit test for lcp_send_configure_request");
|
|
TCase *TCase_lcp_optflags = tcase_create("Unit test for lcp_optflags");
|
|
TCase *TCase_lcp_send_configure_ack = tcase_create("Unit test for lcp_send_configure_ack");
|
|
TCase *TCase_lcp_send_terminate_request = tcase_create("Unit test for lcp_send_terminate_request");
|
|
TCase *TCase_lcp_send_terminate_ack = tcase_create("Unit test for lcp_send_terminate_ack");
|
|
TCase *TCase_lcp_send_configure_nack = tcase_create("Unit test for lcp_send_configure_nack");
|
|
TCase *TCase_lcp_process_in = tcase_create("Unit test for lcp_process_in");
|
|
TCase *TCase_pap_process_in = tcase_create("Unit test for pap_process_in");
|
|
TCase *TCase_chap_process_in = tcase_create("Unit test for chap_process_in");
|
|
TCase *TCase_ipcp_ack = tcase_create("Unit test for ipcp_ack");
|
|
TCase *TCase_uint32_t = tcase_create("Unit test for uint32_t");
|
|
TCase *TCase_ipcp_request_add_address = tcase_create("Unit test for ipcp_request_add_address");
|
|
TCase *TCase_ipcp_request_fill = tcase_create("Unit test for ipcp_request_fill");
|
|
TCase *TCase_ipcp_send_req = tcase_create("Unit test for ipcp_send_req");
|
|
TCase *TCase_ipcp_reject_vj = tcase_create("Unit test for ipcp_reject_vj");
|
|
TCase *TCase_ppp_ipv4_conf = tcase_create("Unit test for ppp_ipv4_conf");
|
|
TCase *TCase_ipcp_process_in = tcase_create("Unit test for ipcp_process_in");
|
|
TCase *TCase_ipcp6_process_in = tcase_create("Unit test for ipcp6_process_in");
|
|
TCase *TCase_ppp_process_packet_payload = tcase_create("Unit test for ppp_process_packet_payload");
|
|
TCase *TCase_ppp_process_packet = tcase_create("Unit test for ppp_process_packet");
|
|
TCase *TCase_ppp_recv_data = tcase_create("Unit test for ppp_recv_data");
|
|
TCase *TCase_lcp_this_layer_up = tcase_create("Unit test for lcp_this_layer_up");
|
|
TCase *TCase_lcp_this_layer_down = tcase_create("Unit test for lcp_this_layer_down");
|
|
TCase *TCase_lcp_this_layer_started = tcase_create("Unit test for lcp_this_layer_started");
|
|
TCase *TCase_lcp_this_layer_finished = tcase_create("Unit test for lcp_this_layer_finished");
|
|
TCase *TCase_lcp_initialize_restart_count = tcase_create("Unit test for lcp_initialize_restart_count");
|
|
TCase *TCase_lcp_send_code_reject = tcase_create("Unit test for lcp_send_code_reject");
|
|
TCase *TCase_lcp_send_echo_reply = tcase_create("Unit test for lcp_send_echo_reply");
|
|
TCase *TCase_auth = tcase_create("Unit test for auth");
|
|
TCase *TCase_deauth = tcase_create("Unit test for deauth");
|
|
TCase *TCase_auth_req = tcase_create("Unit test for auth_req");
|
|
TCase *TCase_auth_rsp = tcase_create("Unit test for auth_rsp");
|
|
TCase *TCase_auth_start_timer = tcase_create("Unit test for auth_start_timer");
|
|
TCase *TCase_ipcp_send_ack = tcase_create("Unit test for ipcp_send_ack");
|
|
TCase *TCase_ipcp_send_nack = tcase_create("Unit test for ipcp_send_nack");
|
|
TCase *TCase_ipcp_bring_up = tcase_create("Unit test for ipcp_bring_up");
|
|
TCase *TCase_ipcp_bring_down = tcase_create("Unit test for ipcp_bring_down");
|
|
TCase *TCase_ipcp_start_timer = tcase_create("Unit test for ipcp_start_timer");
|
|
TCase *TCase_pico_ppp_poll = tcase_create("Unit test for pico_ppp_poll");
|
|
TCase *TCase_pico_ppp_link_state = tcase_create("Unit test for pico_ppp_link_state");
|
|
TCase *TCase_check_to_modem = tcase_create("Unit test for check_to_modem");
|
|
TCase *TCase_check_to_lcp = tcase_create("Unit test for check_to_lcp");
|
|
TCase *TCase_check_to_auth = tcase_create("Unit test for check_to_auth");
|
|
TCase *TCase_check_to_ipcp = tcase_create("Unit test for check_to_ipcp");
|
|
TCase *TCase_pico_ppp_tick = tcase_create("Unit test for pico_ppp_tick");
|
|
|
|
|
|
tcase_add_test(TCase_ppp_serial_send_escape, tc_ppp_serial_send_escape);
|
|
suite_add_tcase(s, TCase_ppp_serial_send_escape);
|
|
tcase_add_test(TCase_lcp_timer_start, tc_lcp_timer_start);
|
|
suite_add_tcase(s, TCase_lcp_timer_start);
|
|
tcase_add_test(TCase_lcp_zero_restart_count, tc_lcp_zero_restart_count);
|
|
suite_add_tcase(s, TCase_lcp_zero_restart_count);
|
|
tcase_add_test(TCase_lcp_timer_stop, tc_lcp_timer_stop);
|
|
suite_add_tcase(s, TCase_lcp_timer_stop);
|
|
tcase_add_test(TCase_ppp_ctl_packet_size, tc_ppp_ctl_packet_size);
|
|
suite_add_tcase(s, TCase_ppp_ctl_packet_size);
|
|
tcase_add_test(TCase_ppp_fcs_char, tc_ppp_fcs_char);
|
|
suite_add_tcase(s, TCase_ppp_fcs_char);
|
|
tcase_add_test(TCase_ppp_fcs_continue, tc_ppp_fcs_continue);
|
|
suite_add_tcase(s, TCase_ppp_fcs_continue);
|
|
tcase_add_test(TCase_ppp_fcs_finish, tc_ppp_fcs_finish);
|
|
suite_add_tcase(s, TCase_ppp_fcs_finish);
|
|
tcase_add_test(TCase_ppp_fcs_start, tc_ppp_fcs_start);
|
|
suite_add_tcase(s, TCase_ppp_fcs_start);
|
|
tcase_add_test(TCase_ppp_fcs_verify, tc_ppp_fcs_verify);
|
|
suite_add_tcase(s, TCase_ppp_fcs_verify);
|
|
tcase_add_test(TCase_pico_ppp_ctl_send, tc_pico_ppp_ctl_send);
|
|
suite_add_tcase(s, TCase_pico_ppp_ctl_send);
|
|
tcase_add_test(TCase_pico_ppp_send, tc_pico_ppp_send);
|
|
suite_add_tcase(s, TCase_pico_ppp_send);
|
|
tcase_add_test(TCase_ppp_modem_start_timer, tc_ppp_modem_start_timer);
|
|
suite_add_tcase(s, TCase_ppp_modem_start_timer);
|
|
tcase_add_test(TCase_ppp_modem_send_reset, tc_ppp_modem_send_reset);
|
|
suite_add_tcase(s, TCase_ppp_modem_send_reset);
|
|
tcase_add_test(TCase_ppp_modem_send_echo, tc_ppp_modem_send_echo);
|
|
suite_add_tcase(s, TCase_ppp_modem_send_echo);
|
|
tcase_add_test(TCase_ppp_modem_send_creg, tc_ppp_modem_send_creg);
|
|
suite_add_tcase(s, TCase_ppp_modem_send_creg);
|
|
tcase_add_test(TCase_ppp_modem_send_cgreg, tc_ppp_modem_send_cgreg);
|
|
suite_add_tcase(s, TCase_ppp_modem_send_cgreg);
|
|
tcase_add_test(TCase_ppp_modem_send_cgdcont, tc_ppp_modem_send_cgdcont);
|
|
suite_add_tcase(s, TCase_ppp_modem_send_cgdcont);
|
|
tcase_add_test(TCase_ppp_modem_send_cgatt, tc_ppp_modem_send_cgatt);
|
|
suite_add_tcase(s, TCase_ppp_modem_send_cgatt);
|
|
tcase_add_test(TCase_ppp_modem_send_dial, tc_ppp_modem_send_dial);
|
|
suite_add_tcase(s, TCase_ppp_modem_send_dial);
|
|
tcase_add_test(TCase_ppp_modem_connected, tc_ppp_modem_connected);
|
|
suite_add_tcase(s, TCase_ppp_modem_connected);
|
|
tcase_add_test(TCase_ppp_modem_disconnected, tc_ppp_modem_disconnected);
|
|
suite_add_tcase(s, TCase_ppp_modem_disconnected);
|
|
tcase_add_test(TCase_ppp_modem_recv, tc_ppp_modem_recv);
|
|
suite_add_tcase(s, TCase_ppp_modem_recv);
|
|
tcase_add_test(TCase_lcp_send_configure_request, tc_lcp_send_configure_request);
|
|
suite_add_tcase(s, TCase_lcp_send_configure_request);
|
|
tcase_add_test(TCase_lcp_optflags, tc_lcp_optflags);
|
|
suite_add_tcase(s, TCase_lcp_optflags);
|
|
tcase_add_test(TCase_lcp_send_configure_ack, tc_lcp_send_configure_ack);
|
|
suite_add_tcase(s, TCase_lcp_send_configure_ack);
|
|
tcase_add_test(TCase_lcp_send_terminate_request, tc_lcp_send_terminate_request);
|
|
suite_add_tcase(s, TCase_lcp_send_terminate_request);
|
|
tcase_add_test(TCase_lcp_send_terminate_ack, tc_lcp_send_terminate_ack);
|
|
suite_add_tcase(s, TCase_lcp_send_terminate_ack);
|
|
tcase_add_test(TCase_lcp_send_configure_nack, tc_lcp_send_configure_nack);
|
|
suite_add_tcase(s, TCase_lcp_send_configure_nack);
|
|
tcase_add_test(TCase_lcp_process_in, tc_lcp_process_in);
|
|
suite_add_tcase(s, TCase_lcp_process_in);
|
|
tcase_add_test(TCase_pap_process_in, tc_pap_process_in);
|
|
suite_add_tcase(s, TCase_pap_process_in);
|
|
tcase_add_test(TCase_chap_process_in, tc_chap_process_in);
|
|
suite_add_tcase(s, TCase_chap_process_in);
|
|
tcase_add_test(TCase_ipcp_ack, tc_ipcp_ack);
|
|
suite_add_tcase(s, TCase_ipcp_ack);
|
|
tcase_add_test(TCase_uint32_t, tc_uint32_t);
|
|
suite_add_tcase(s, TCase_uint32_t);
|
|
tcase_add_test(TCase_ipcp_request_add_address, tc_ipcp_request_add_address);
|
|
suite_add_tcase(s, TCase_ipcp_request_add_address);
|
|
tcase_add_test(TCase_ipcp_request_fill, tc_ipcp_request_fill);
|
|
suite_add_tcase(s, TCase_ipcp_request_fill);
|
|
tcase_add_test(TCase_ipcp_send_req, tc_ipcp_send_req);
|
|
suite_add_tcase(s, TCase_ipcp_send_req);
|
|
tcase_add_test(TCase_ipcp_reject_vj, tc_ipcp_reject_vj);
|
|
suite_add_tcase(s, TCase_ipcp_reject_vj);
|
|
tcase_add_test(TCase_ppp_ipv4_conf, tc_ppp_ipv4_conf);
|
|
suite_add_tcase(s, TCase_ppp_ipv4_conf);
|
|
tcase_add_test(TCase_ipcp_process_in, tc_ipcp_process_in);
|
|
suite_add_tcase(s, TCase_ipcp_process_in);
|
|
tcase_add_test(TCase_ipcp6_process_in, tc_ipcp6_process_in);
|
|
suite_add_tcase(s, TCase_ipcp6_process_in);
|
|
tcase_add_test(TCase_ppp_process_packet_payload, tc_ppp_process_packet_payload);
|
|
suite_add_tcase(s, TCase_ppp_process_packet_payload);
|
|
tcase_add_test(TCase_ppp_process_packet, tc_ppp_process_packet);
|
|
suite_add_tcase(s, TCase_ppp_process_packet);
|
|
tcase_add_test(TCase_ppp_recv_data, tc_ppp_recv_data);
|
|
suite_add_tcase(s, TCase_ppp_recv_data);
|
|
tcase_add_test(TCase_lcp_this_layer_up, tc_lcp_this_layer_up);
|
|
suite_add_tcase(s, TCase_lcp_this_layer_up);
|
|
tcase_add_test(TCase_lcp_this_layer_down, tc_lcp_this_layer_down);
|
|
suite_add_tcase(s, TCase_lcp_this_layer_down);
|
|
tcase_add_test(TCase_lcp_this_layer_started, tc_lcp_this_layer_started);
|
|
suite_add_tcase(s, TCase_lcp_this_layer_started);
|
|
tcase_add_test(TCase_lcp_this_layer_finished, tc_lcp_this_layer_finished);
|
|
suite_add_tcase(s, TCase_lcp_this_layer_finished);
|
|
tcase_add_test(TCase_lcp_initialize_restart_count, tc_lcp_initialize_restart_count);
|
|
suite_add_tcase(s, TCase_lcp_initialize_restart_count);
|
|
tcase_add_test(TCase_lcp_send_code_reject, tc_lcp_send_code_reject);
|
|
suite_add_tcase(s, TCase_lcp_send_code_reject);
|
|
tcase_add_test(TCase_lcp_send_echo_reply, tc_lcp_send_echo_reply);
|
|
suite_add_tcase(s, TCase_lcp_send_echo_reply);
|
|
tcase_add_test(TCase_auth, tc_auth);
|
|
suite_add_tcase(s, TCase_auth);
|
|
tcase_add_test(TCase_deauth, tc_deauth);
|
|
suite_add_tcase(s, TCase_deauth);
|
|
tcase_add_test(TCase_auth_req, tc_auth_req);
|
|
suite_add_tcase(s, TCase_auth_req);
|
|
tcase_add_test(TCase_auth_rsp, tc_auth_rsp);
|
|
suite_add_tcase(s, TCase_auth_rsp);
|
|
tcase_add_test(TCase_auth_start_timer, tc_auth_start_timer);
|
|
suite_add_tcase(s, TCase_auth_start_timer);
|
|
tcase_add_test(TCase_ipcp_send_ack, tc_ipcp_send_ack);
|
|
suite_add_tcase(s, TCase_ipcp_send_ack);
|
|
tcase_add_test(TCase_ipcp_send_nack, tc_ipcp_send_nack);
|
|
suite_add_tcase(s, TCase_ipcp_send_nack);
|
|
tcase_add_test(TCase_ipcp_bring_up, tc_ipcp_bring_up);
|
|
suite_add_tcase(s, TCase_ipcp_bring_up);
|
|
tcase_add_test(TCase_ipcp_bring_down, tc_ipcp_bring_down);
|
|
suite_add_tcase(s, TCase_ipcp_bring_down);
|
|
tcase_add_test(TCase_ipcp_start_timer, tc_ipcp_start_timer);
|
|
suite_add_tcase(s, TCase_ipcp_start_timer);
|
|
tcase_add_test(TCase_pico_ppp_poll, tc_pico_ppp_poll);
|
|
suite_add_tcase(s, TCase_pico_ppp_poll);
|
|
tcase_add_test(TCase_pico_ppp_link_state, tc_pico_ppp_link_state);
|
|
suite_add_tcase(s, TCase_pico_ppp_link_state);
|
|
tcase_add_test(TCase_check_to_modem, tc_check_to_modem);
|
|
suite_add_tcase(s, TCase_check_to_modem);
|
|
tcase_add_test(TCase_check_to_lcp, tc_check_to_lcp);
|
|
suite_add_tcase(s, TCase_check_to_lcp);
|
|
tcase_add_test(TCase_check_to_auth, tc_check_to_auth);
|
|
suite_add_tcase(s, TCase_check_to_auth);
|
|
tcase_add_test(TCase_check_to_ipcp, tc_check_to_ipcp);
|
|
suite_add_tcase(s, TCase_check_to_ipcp);
|
|
tcase_add_test(TCase_pico_ppp_tick, tc_pico_ppp_tick);
|
|
suite_add_tcase(s, TCase_pico_ppp_tick);
|
|
return s;
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
int fails;
|
|
Suite *s = pico_suite();
|
|
SRunner *sr = srunner_create(s);
|
|
mock_modem_state = modem_state;
|
|
mock_lcp_state = lcp_state;
|
|
mock_auth_state = auth_state;
|
|
mock_ipcp_state = ipcp_state;
|
|
srunner_run_all(sr, CK_NORMAL);
|
|
fails = srunner_ntests_failed(sr);
|
|
srunner_free(sr);
|
|
return fails;
|
|
}
|