Skip to content
Snippets Groups Projects
Commit 9cf67805 authored by Jonathan Schöbel's avatar Jonathan Schöbel
Browse files

added tag to Fragment

parent f274d415
Branches
Tags
No related merge requests found
......@@ -28,31 +28,31 @@ long_line_behaviour=1
long_line_column=72
[files]
current_page=20
current_page=18
FILE_NAME_0=607;Sh;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fconfigure.ac;0;8
FILE_NAME_1=395;Make;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2FMakefile.am;0;8
FILE_NAME_2=847;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fmain.c;0;8
FILE_NAME_3=850;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fcms.c;0;8
FILE_NAME_3=1067;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fcms.c;0;8
FILE_NAME_4=1148;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fcms.h;0;8
FILE_NAME_5=3330;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fdata.c;0;8
FILE_NAME_5=4565;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fdata.c;0;8
FILE_NAME_6=1099;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fdata.h;0;8
FILE_NAME_7=1341;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Ffragment.c;0;8
FILE_NAME_8=1008;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Ffragment.h;0;8
FILE_NAME_9=3323;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fvalidator.c;0;8
FILE_NAME_10=1372;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fvalidator.h;0;8
FILE_NAME_11=917;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Ferror.h;0;4
FILE_NAME_12=0;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flog.h;0;4
FILE_NAME_7=1546;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Ffragment.c;0;8
FILE_NAME_8=876;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Ffragment.h;0;8
FILE_NAME_9=2888;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fvalidator.c;0;8
FILE_NAME_10=900;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fvalidator.h;0;8
FILE_NAME_11=994;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Ferror.h;0;4
FILE_NAME_12=881;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Flog.h;0;4
FILE_NAME_13=869;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fmacro.h;0;8
FILE_NAME_14=847;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Fsrc%2Fsefht.h;0;8
FILE_NAME_15=1000;Make;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2FMakefile.am;0;8
FILE_NAME_15=1025;Make;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2FMakefile.am;0;8
FILE_NAME_16=1253;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_cms.c;0;8
FILE_NAME_17=1739;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_data.c;0;8
FILE_NAME_18=1145;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_fragment.c;0;8
FILE_NAME_19=4340;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_validator.c;0;8
FILE_NAME_17=3059;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_data.c;0;8
FILE_NAME_18=2908;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_fragment.c;0;8
FILE_NAME_19=3404;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftests%2Ftest_validator.c;0;8
FILE_NAME_20=55;None;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDokumente%2Fprojekte%2Fprgm%2Finternet%2Fweb%2FSeFHT%2Ftodo.txt;0;8
[VTE]
last_dir=/home/jonathan/Dokumente/projekte/prgm/internet/web/SeFHT
last_dir=/home/jonathan/Dokumente/projekte/prgm/internet/web/SeFHT/tests
[prjorg]
source_patterns=*.c;*.C;*.cpp;*.cxx;*.c++;*.cc;*.m;
......
......@@ -30,6 +30,7 @@ enum SH_ErrorType
{
ALLOCATION_FAILED,
DOMAIN_ERROR,
VALUE_ERROR,
SUCCESS
};
......
......@@ -22,21 +22,39 @@
*/
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include "macro.h"
#include "error.h"
#include "log.h"
#include "data.h"
#include "validator.h"
#include "fragment.h"
struct SH_Fragment *
SH_Fragment_new (struct SH_Error * error)
SH_Fragment_new (const char * tag, struct SH_Data * data,
struct SH_Error * error)
{
struct SH_Fragment * fragment;
fragment = malloc (sizeof (struct SH_Fragment));
if (!SH_Validator_check_tag (data->validator, tag))
{
ERROR2 ("Tag %s is'nt valid.\n", tag);
if (error != NULL)
{
error->type = VALUE_ERROR;
}
return NULL;
}
fragment = malloc (sizeof (struct SH_Fragment));
if (fragment == NULL)
{
ERROR1 ("Memory allocation for SH_Fragment failed.\n");
......@@ -49,6 +67,21 @@ SH_Fragment_new (struct SH_Error * error)
return NULL;
}
fragment->data = data;
fragment->tag = strdup (tag);
if (errno == ENOMEM)
{
ERROR1 ("Memory allocation for fragment tag failed.\n");
if (error != NULL)
{
error->type = ALLOCATION_FAILED;
}
return NULL;
}
if (error != NULL)
{
error->type = SUCCESS;
......@@ -60,6 +93,7 @@ SH_Fragment_new (struct SH_Error * error)
void
SH_Fragment_free (struct SH_Fragment * fragment, struct SH_Error * error)
{
free (fragment->tag);
free (fragment);
if (error != NULL)
......@@ -69,3 +103,31 @@ SH_Fragment_free (struct SH_Fragment * fragment, struct SH_Error * error)
return;
}
char *
SH_Fragment_get_tag (struct SH_Fragment * fragment,
struct SH_Error * error)
{
char * tag;
tag = strdup (fragment->tag);
if (errno == ENOMEM)
{
ERROR1 ("Memory allocation for fragment tag failed.\n");
if (error != NULL)
{
error->type = ALLOCATION_FAILED;
}
return NULL;
}
if (error != NULL)
{
error->type = SUCCESS;
}
return tag;
}
......@@ -25,14 +25,22 @@
#ifndef _FRAGMENT_H
#define _FRAGMENT_H
#include "data.h"
struct SH_Fragment
{
//
struct SH_Data * data;
char * tag;
};
struct SH_Fragment * SH_Fragment_new (struct SH_Error * error);
struct SH_Fragment * SH_Fragment_new (const char * tag,
struct SH_Data * data,
struct SH_Error * error);
void SH_Fragment_free (struct SH_Fragment * fragment,
struct SH_Error * error);
char * SH_Fragment_get_tag (struct SH_Fragment * fragment,
struct SH_Error * error);
#endif /* _FRAGMENT_H */
......@@ -19,16 +19,20 @@ sefht_cms_test_SOURCES = test_cms.c
sefht_cms_test_LDADD =
sefht_cms_test_LDADD += $(top_builddir)/src/cms.o
sefht_cms_test_LDADD += $(top_builddir)/src/data.o
sefht_cms_test_LDADD += $(top_builddir)/src/validator.o
sefht_cms_test_LDADD += $(LDADD)
sefht_data_test_SOURCES = test_data.c
sefht_data_test_LDADD =
sefht_data_test_LDADD += $(top_builddir)/src/data.o
sefht_data_test_LDADD += $(top_builddir)/src/validator.o
sefht_data_test_LDADD += $(LDADD)
sefht_fragment_test_SOURCES = test_fragment.c
sefht_fragment_test_LDADD =
sefht_fragment_test_LDADD += $(top_builddir)/src/fragment.o
sefht_fragment_test_LDADD += $(top_builddir)/src/data.o
sefht_fragment_test_LDADD += $(top_builddir)/src/validator.o
sefht_fragment_test_LDADD += $(LDADD)
sefht_validator_test_SOURCES = test_validator.c
......
......@@ -33,18 +33,76 @@ START_TEST(test_fragment)
{
struct SH_Error error;
struct SH_Fragment * fragment;
struct SH_Data * data;
const char * tag = "tag";
const char * no_tag = "no_tag";
fragment = SH_Fragment_new (NULL);
data = SH_Data_new (NULL);
SH_Validator_register_tag (data->validator, tag, NULL);
/* valid tag - no error */
fragment = SH_Fragment_new (tag, data, NULL);
ck_assert_int_ne ((long int) fragment, (long int) NULL);
ck_assert_str_eq (fragment->tag, tag);
SH_Fragment_free (fragment, NULL);
fragment = SH_Fragment_new (&error);
/* invalid tag - no error */
fragment = SH_Fragment_new (no_tag, data, NULL);
ck_assert_int_eq ((long int) fragment, (long int) NULL);
/* valid tag - error */
fragment = SH_Fragment_new (tag, data, &error);
ck_assert_int_ne ((long int) fragment, (long int) NULL);
ck_assert_int_eq (error.type, SUCCESS);
ck_assert_str_eq (fragment->tag, tag);
SH_Fragment_free (fragment, &error);
ck_assert_int_eq (error.type, SUCCESS);
/* invalid tag - error */
fragment = SH_Fragment_new (no_tag, data, &error);
ck_assert_int_eq ((long int) fragment, (long int) NULL);
ck_assert_int_eq (error.type, VALUE_ERROR);
SH_Data_free (data, NULL);
}
END_TEST
START_TEST(test_fragment_tag)
{
struct SH_Error error;
struct SH_Fragment * fragment;
struct SH_Data * data;
char * tag;
const char * tag1 = "html";
const char * tag2 = "body";
data = SH_Data_new (NULL);
SH_Validator_register_tag (data->validator, tag1, NULL);
SH_Validator_register_tag (data->validator, tag2, NULL);
/* no error */
fragment = SH_Fragment_new (tag1, data, NULL);
tag = SH_Fragment_get_tag (fragment, NULL);
ck_assert_str_eq (tag, tag1);
free (tag);
SH_Fragment_free (fragment, NULL);
/* error */
fragment = SH_Fragment_new (tag2, data, NULL);
tag = SH_Fragment_get_tag (fragment, &error);
ck_assert_str_eq (tag, tag2);
ck_assert_int_eq (error.type, SUCCESS);
free (tag);
SH_Fragment_free (fragment, NULL);
SH_Data_free (data, NULL);
}
END_TEST
......@@ -59,6 +117,7 @@ Suite * fragment_suite (void)
tc_core = tcase_create ("Core");
tcase_add_test (tc_core, test_fragment);
tcase_add_test (tc_core, test_fragment_tag);
suite_add_tcase (s, tc_core);
return s;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment