From: <svn...@op...> - 2009-06-29 09:49:33
|
Author: bellmich Date: Mon Jun 29 11:49:22 2009 New Revision: 1123 URL: http://libsyncml.opensync.org/changeset/1123 Log: - added missing tests for the SmlDevInf object - fixed found bugs in the SmlDevInf object Modified: trunk/libsyncml/dev_inf_api/sml_dev_inf.c trunk/tests/CMakeLists.txt trunk/tests/check_dev_inf.c Modified: trunk/libsyncml/dev_inf_api/sml_dev_inf.c ============================================================================== --- trunk/libsyncml/dev_inf_api/sml_dev_inf.c Fri Jun 26 14:56:58 2009 (r1122) +++ trunk/libsyncml/dev_inf_api/sml_dev_inf.c Mon Jun 29 11:49:22 2009 (r1123) @@ -781,6 +781,11 @@ sml_dev_inf_get_support_utc (SmlDevInf *self) { g_return_val_if_fail (SML_IS_DEV_INF (self), FALSE); + + /* enforce SyncML 1.0 specification */ + if (self->priv->ver_dtd == SML_DEVINF_VERSION_10) + return FALSE; + return self->priv->support_utc; } @@ -811,6 +816,11 @@ sml_dev_inf_get_support_large_objs (SmlDevInf *self) { g_return_val_if_fail (SML_IS_DEV_INF (self), FALSE); + + /* enforce SyncML 1.0 specification */ + if (self->priv->ver_dtd == SML_DEVINF_VERSION_10) + return FALSE; + return self->priv->support_large_objs; } @@ -841,6 +851,11 @@ sml_dev_inf_get_support_number_of_changes (SmlDevInf *self) { g_return_val_if_fail (SML_IS_DEV_INF (self), FALSE); + + /* enforce SyncML 1.0 specification */ + if (self->priv->ver_dtd == SML_DEVINF_VERSION_10) + return FALSE; + return self->priv->support_number_of_changes; } @@ -1014,11 +1029,10 @@ /* SyncML 1.0 requirements */ - if (self->priv->ver_dtd == SML_DEVINF_VERSION_10) { - sml_return_val_error_if_fail (!self->priv->support_utc, FALSE, error, SML_ERROR_GENERIC, "SyncML 1.0 does not specify UTC support."); - sml_return_val_error_if_fail (!self->priv->support_large_objs, FALSE, error, SML_ERROR_GENERIC, "SyncML 1.0 does not specify large object support."); - sml_return_val_error_if_fail (!self->priv->support_number_of_changes, FALSE, error, SML_ERROR_GENERIC, "SyncML 1.0 does not specify number of changes support."); - } + /* SyncML 1.0 does not support UTC, SupportLargeObjs and SupportNumberOfChanges. + * Nevertheless this is no problem because the getter functions of these + * properties simply return FALSE if SyncML 1.0 is used. + */ /* SyncML 1.2 requirements */ @@ -1030,12 +1044,13 @@ sml_return_val_error_if_fail (self->priv->hwv != NULL, FALSE, error, SML_ERROR_GENERIC, "The hardware version must be set."); } - /* SyncML server requirements */ + /* SyncML server requirements (except of SyncML 1.0) */ - if (self->priv->dev_typ == SML_DEVINF_DEVTYP_SERVER) { - sml_return_val_error_if_fail (!self->priv->support_utc, FALSE, error, SML_ERROR_GENERIC, "A server must support UTC."); - sml_return_val_error_if_fail (!self->priv->support_large_objs, FALSE, error, SML_ERROR_GENERIC, "A server must support large objects."); - sml_return_val_error_if_fail (!self->priv->support_number_of_changes, FALSE, error, SML_ERROR_GENERIC, "A server must support number of changes."); + if (self->priv->dev_typ == SML_DEVINF_DEVTYP_SERVER && + self->priv->ver_dtd >= SML_DEVINF_VERSION_11) { + sml_return_val_error_if_fail (self->priv->support_utc, FALSE, error, SML_ERROR_GENERIC, "A server must support UTC."); + sml_return_val_error_if_fail (self->priv->support_large_objs, FALSE, error, SML_ERROR_GENERIC, "A server must support large objects."); + sml_return_val_error_if_fail (self->priv->support_number_of_changes, FALSE, error, SML_ERROR_GENERIC, "A server must support number of changes."); } return TRUE; Modified: trunk/tests/CMakeLists.txt ============================================================================== --- trunk/tests/CMakeLists.txt Fri Jun 26 14:56:58 2009 (r1122) +++ trunk/tests/CMakeLists.txt Mon Jun 29 11:49:22 2009 (r1123) @@ -310,10 +310,20 @@ SML_ADD_TESTCASE( dev_inf_option_fwv ) SML_ADD_TESTCASE( dev_inf_option_swv ) SML_ADD_TESTCASE( dev_inf_option_hwv ) + SML_ADD_TESTCASE( dev_inf_option_support_utc ) + SML_ADD_TESTCASE( dev_inf_option_support_large_objs ) + SML_ADD_TESTCASE( dev_inf_option_support_number_of_changes ) SML_ADD_TESTCASE( dev_inf_enforce_data_stores ) SML_ADD_TESTCASE( dev_inf_enforce_ctcaps ) SML_ADD_TESTCASE( dev_inf_compliance_error ) SML_ADD_TESTCASE( dev_inf_compliance_1_0 ) + SML_ADD_TESTCASE( dev_inf_compliance_1_1 ) + SML_ADD_TESTCASE( dev_inf_compliance_1_2 ) + SML_ADD_TESTCASE( dev_inf_overdefined_1_0 ) + SML_ADD_TESTCASE( dev_inf_filtered_1_0 ) + SML_ADD_TESTCASE( dev_inf_server_1_0 ) + SML_ADD_TESTCASE( dev_inf_server_1_1 ) + SML_ADD_TESTCASE( dev_inf_server_1_2 ) SML_END_TEST() SML_START_TEST( "DevInfHelper" devinf check_devinf.c ${TEST_TARGET_LIBRARIES} ) Modified: trunk/tests/check_dev_inf.c ============================================================================== --- trunk/tests/check_dev_inf.c Fri Jun 26 14:56:58 2009 (r1122) +++ trunk/tests/check_dev_inf.c Mon Jun 29 11:49:22 2009 (r1123) @@ -340,6 +340,57 @@ } END_TEST +START_TEST (dev_inf_option_support_utc) +{ + g_type_init(); + + SmlDevInf *devinf = sml_dev_inf_new(); + sml_fail_unless(devinf != NULL, NULL); + + sml_fail_unless(sml_dev_inf_get_support_utc(devinf) == FALSE, "The UTC support must be FALSE by default."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_fail_unless(sml_dev_inf_get_support_utc(devinf) == TRUE, "The UTC support must be set to TRUE."); + sml_dev_inf_set_support_utc(devinf, FALSE); + sml_fail_unless(sml_dev_inf_get_support_utc(devinf) == FALSE, "The UTC support must be FALSE again."); + + g_object_unref(devinf); +} +END_TEST + +START_TEST (dev_inf_option_support_large_objs) +{ + g_type_init(); + + SmlDevInf *devinf = sml_dev_inf_new(); + sml_fail_unless(devinf != NULL, NULL); + + sml_fail_unless(sml_dev_inf_get_support_large_objs(devinf) == FALSE, "The large objects support must be FALSE by default."); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + sml_fail_unless(sml_dev_inf_get_support_large_objs(devinf) == TRUE, "The large objects support must be set to TRUE."); + sml_dev_inf_set_support_large_objs(devinf, FALSE); + sml_fail_unless(sml_dev_inf_get_support_large_objs(devinf) == FALSE, "The large objects support must be FALSE again."); + + g_object_unref(devinf); +} +END_TEST + +START_TEST (dev_inf_option_support_number_of_changes) +{ + g_type_init(); + + SmlDevInf *devinf = sml_dev_inf_new(); + sml_fail_unless(devinf != NULL, NULL); + + sml_fail_unless(sml_dev_inf_get_support_number_of_changes(devinf) == FALSE, "The number of changes support must be FALSE by default."); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + sml_fail_unless(sml_dev_inf_get_support_number_of_changes(devinf) == TRUE, "The number of changes support must be set to TRUE."); + sml_dev_inf_set_support_number_of_changes(devinf, FALSE); + sml_fail_unless(sml_dev_inf_get_support_number_of_changes(devinf) == FALSE, "The number of changes support must be FALSE again."); + + g_object_unref(devinf); +} +END_TEST + START_TEST (dev_inf_enforce_data_stores) { g_type_init(); @@ -486,8 +537,8 @@ sml_fail_unless(devinf != NULL, NULL); #define CHECK_COMPLIANCE_ERROR \ - sml_fail_unless(sml_dev_inf_is_compliant(devinf, NULL) == FALSE, NULL); \ - sml_fail_unless(sml_dev_inf_is_compliant(devinf, &error) == FALSE, NULL); \ + sml_fail_unless(sml_dev_inf_is_compliant(devinf, NULL) == FALSE, "missing expected error (&error == NULL)"); \ + sml_fail_unless(sml_dev_inf_is_compliant(devinf, &error) == FALSE, "missing expected error (&error != NULL)"); \ sml_fail_unless(error != NULL, "The error must be set if an error appears."); \ g_error_free(error); \ error = NULL; \ @@ -566,14 +617,424 @@ } END_TEST -/* +START_TEST (dev_inf_compliance_1_1) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* missing VerDTD, DevID, DevTyp and data store*/ + INIT_DEV_INF_OBJECT + CHECK_COMPLIANCE_ERROR + + /* missing DevID, DevTyp and data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + CHECK_COMPLIANCE_ERROR + + /* missing VerDTD, DevTyp and data store*/ + INIT_DEV_INF_OBJECT + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing VerDTD, DevID and data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_PHONE); + CHECK_COMPLIANCE_ERROR + + /* missing VerDTD, data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_PHONE); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing DevID and data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_PHONE); + CHECK_COMPLIANCE_ERROR + + /* missing DevTyp and data store*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing data store */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_PHONE); + CHECK_COMPLIANCE_ERROR + + /* compliant */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_PHONE); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST + +START_TEST (dev_inf_compliance_1_2) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* missing VerDTD */ + INIT_DEV_INF_OBJECT + CHECK_COMPLIANCE_ERROR + + /* missing Man */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + CHECK_COMPLIANCE_ERROR + + /* missing Mod */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing FwV */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing SwV */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing HwV */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing DevID */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing DevTyp */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing DataStore */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_PHONE); + CHECK_COMPLIANCE_ERROR + + /* compliant */ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_PHONE); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST + +START_TEST (dev_inf_overdefined_1_0) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* compliant */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_10); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_SUCCESS + + /* set elements which are unknown to SyncML 1.0 */ - basic 1.0 profile with validation - basic 1.1 profile with validation - basic 1.2 profile with validation - overfilled 1.0 profile with validation - get with overfilled 1.0 profile (filtered information) -*/ + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_10); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST + +START_TEST (dev_inf_filtered_1_0) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* set elements which are unknown to SyncML 1.0 */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_10); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + + /* check the filtering mechanism for unknown elements */ + + sml_fail_unless(sml_dev_inf_get_support_utc(devinf) == FALSE, "The UTC support must be filtered."); + sml_fail_unless(sml_dev_inf_get_support_large_objs(devinf) == FALSE, "The large objects support must be filtered."); + sml_fail_unless(sml_dev_inf_get_support_number_of_changes(devinf) == FALSE, "The number of changes support must be filtered."); + + /* compliant */ + + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST + +START_TEST (dev_inf_server_1_0) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* compliant - without UTC, SupportLargeObjs and SupportNumberOfChanges */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_10); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST + +START_TEST (dev_inf_server_1_1) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* missing UTC, SupportLargeObjs and SupportNumberOfChanges */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing UTC */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + CHECK_COMPLIANCE_ERROR + + /* missing SupportLargeObjs */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + CHECK_COMPLIANCE_ERROR + + /* missing SupportNumberOfChanges */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + CHECK_COMPLIANCE_ERROR + + /* compliant */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_11); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST + +START_TEST (dev_inf_server_1_2) +{ + g_type_init(); + + GError *error = NULL; + SmlDevInf *devinf = NULL; + + SmlDevInfDataStore *datastore = sml_dev_inf_data_store_new("Contacts", &error); + sml_fail_unless(datastore != NULL, NULL); + + /* missing UTC, SupportLargeObjs and SupportNumberOfChanges */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + CHECK_COMPLIANCE_ERROR + + /* missing UTC */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + CHECK_COMPLIANCE_ERROR + + /* missing SupportLargeObjs */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + CHECK_COMPLIANCE_ERROR + + /* missing SupportNumberOfChanges */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + CHECK_COMPLIANCE_ERROR + + /* compliant */ + + INIT_DEV_INF_OBJECT + sml_dev_inf_set_ver_dtd(devinf, SML_DEVINF_VERSION_12); + sml_fail_unless(sml_dev_inf_set_man(devinf, "OpenSync", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_mod(devinf, "libsyncml", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_fwv(devinf, "2.6.29", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_swv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_hwv(devinf, "0.6.x", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_fail_unless(sml_dev_inf_set_dev_id(devinf, "my device", &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_dev_typ(devinf, SML_DEVINF_DEVTYP_SERVER); + sml_fail_unless(sml_dev_inf_add_data_store(devinf, datastore, &error) == TRUE, "%s", error?error->message:"No GError set."); + sml_dev_inf_set_support_utc(devinf, TRUE); + sml_dev_inf_set_support_large_objs(devinf, TRUE); + sml_dev_inf_set_support_number_of_changes(devinf, TRUE); + CHECK_COMPLIANCE_SUCCESS + + g_object_unref(datastore); +} +END_TEST @SML_TESTCASE_CODE@ |