diff options
author | Jan Hutter <jhutter@hsr.ch> | 2005-11-14 13:51:49 +0000 |
---|---|---|
committer | Jan Hutter <jhutter@hsr.ch> | 2005-11-14 13:51:49 +0000 |
commit | f561c205e8d631d165a602ff644a7fe02b8f3e1e (patch) | |
tree | bd33c387e302950fc768b97bd80a0ebed7626b05 /Source/charon/testcases/generator_test.c | |
parent | 353c317a1507ed24cf23f7ba8b6ab8e310c4ce95 (diff) | |
download | strongswan-f561c205e8d631d165a602ff644a7fe02b8f3e1e.tar.bz2 strongswan-f561c205e8d631d165a602ff644a7fe02b8f3e1e.tar.xz |
- class transform_attribute fully tested and written
- generating of this type works!
Diffstat (limited to 'Source/charon/testcases/generator_test.c')
-rw-r--r-- | Source/charon/testcases/generator_test.c | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/Source/charon/testcases/generator_test.c b/Source/charon/testcases/generator_test.c index 49c90182d..038dc26d5 100644 --- a/Source/charon/testcases/generator_test.c +++ b/Source/charon/testcases/generator_test.c @@ -31,6 +31,7 @@ #include "../utils/logger.h" #include "../payloads/encodings.h" #include "../payloads/ike_header.h" +#include "../payloads/transform_attribute.h" /* * Described in Header @@ -125,3 +126,103 @@ void test_generator_with_header_payload(tester_t *tester) global_logger_manager->destroy_logger(global_logger_manager,logger); tester->assert_true(tester,(generator->destroy(generator) == SUCCESS), "generator destroy call check"); } + +/* + * Described in header + */ +void test_generator_with_transform_attribute(tester_t *tester) +{ + generator_t *generator; + transform_attribute_t *attribute; + status_t status; + chunk_t generated_data; + logger_t *logger; + + logger = global_logger_manager->create_logger(global_logger_manager,TESTER,"header payload"); + + + /* test empty attribute */ + generator = generator_create(); + tester->assert_true(tester,(generator != NULL), "generator create check"); + attribute = transform_attribute_create(); + status = generator->generate_payload(generator,(payload_t *)attribute); + tester->assert_true(tester,(status == SUCCESS),"generate_payload call check"); + tester->assert_true(tester,(generator->write_to_chunk(generator,&generated_data) == SUCCESS),"write_to_chunk call check"); + logger->log_chunk(logger,RAW,"generated attribute",&generated_data); + + u_int8_t expected_generation[] = { + 0x80,0x00,0x00,0x00, + }; + tester->assert_true(tester,(memcmp(expected_generation,generated_data.ptr,sizeof(expected_generation)) == 0), "compare generated data"); + allocator_free_chunk(generated_data); + tester->assert_true(tester,(attribute->destroy(attribute) == SUCCESS), "attribute destroy call check"); + tester->assert_true(tester,(generator->destroy(generator) == SUCCESS), "generator destroy call check"); + + /* test attribute with 2 byte data */ + generator = generator_create(); + tester->assert_true(tester,(generator != NULL), "generator create check"); + + attribute = transform_attribute_create(); + u_int16_t dataval = 5768; + chunk_t data; + data.ptr = (void *) &dataval; + data.len = 2; + + attribute->set_value(attribute,data); + + status = generator->generate_payload(generator,(payload_t *)attribute); + tester->assert_true(tester,(status == SUCCESS),"generate_payload call check"); + tester->assert_true(tester,(generator->write_to_chunk(generator,&generated_data) == SUCCESS),"write_to_chunk call check"); + logger->log_chunk(logger,RAW,"generated attribute",&generated_data); + + u_int8_t expected_generation2[] = { + 0x80,0x00,0x88,0x16, + }; + tester->assert_true(tester,(memcmp(expected_generation2,generated_data.ptr,sizeof(expected_generation2)) == 0), "compare generated data"); + + allocator_free_chunk(generated_data); + tester->assert_true(tester,(attribute->destroy(attribute) == SUCCESS), "attribute destroy call check"); + tester->assert_true(tester,(generator->destroy(generator) == SUCCESS), "generator destroy call check"); + + + + /* test attribute with 25 byte data */ + generator = generator_create(); + tester->assert_true(tester,(generator != NULL), "generator create check"); + + attribute = transform_attribute_create(); + char *stringval = "ddddddddddeeeeeeeeeefffff"; + data.ptr = (void *) stringval; + data.len = 25; + + status = attribute->set_value(attribute,data); + tester->assert_true(tester,(status == SUCCESS),"set_value call check"); + + status = attribute->set_attribute_type(attribute,456); + tester->assert_true(tester,(status == SUCCESS),"set_attribute_type call check"); + + + status = generator->generate_payload(generator,(payload_t *)attribute); + tester->assert_true(tester,(status == SUCCESS),"generate_payload call check"); + tester->assert_true(tester,(generator->write_to_chunk(generator,&generated_data) == SUCCESS),"write_to_chunk call check"); + logger->log_chunk(logger,RAW,"generated attribute",&generated_data); + + u_int8_t expected_generation3[] = { + 0x01,0xC8,0x00,0x19, + 0x64,0x64,0x64,0x64, + 0x64,0x64,0x64,0x64, + 0x64,0x64,0x65,0x65, + 0x65,0x65,0x65,0x65, + 0x65,0x65,0x65,0x65, + 0x66,0x66,0x66,0x66, + 0x66 + }; + tester->assert_true(tester,(memcmp(expected_generation3,generated_data.ptr,sizeof(expected_generation3)) == 0), "compare generated data"); + + allocator_free_chunk(generated_data); + tester->assert_true(tester,(attribute->destroy(attribute) == SUCCESS), "attribute destroy call check"); + tester->assert_true(tester,(generator->destroy(generator) == SUCCESS), "generator destroy call check"); + + + global_logger_manager->destroy_logger(global_logger_manager,logger); +} |