summaryrefslogtreecommitdiff
path: root/tests/ldif-read.c
diff options
context:
space:
mode:
authorMichal Čihař <nijel@debian.org>2017-10-18 10:36:37 +0200
committerMichal Čihař <nijel@debian.org>2017-10-18 10:36:37 +0200
commitf615ee56e6d4f63c6d454068579d5fc158237067 (patch)
treec388746fbd08c052c58aa732b4193f1149880fa5 /tests/ldif-read.c
Import gammu_1.38.5.orig.tar.xz
[dgit import orig gammu_1.38.5.orig.tar.xz]
Diffstat (limited to 'tests/ldif-read.c')
-rw-r--r--tests/ldif-read.c166
1 files changed, 166 insertions, 0 deletions
diff --git a/tests/ldif-read.c b/tests/ldif-read.c
new file mode 100644
index 0000000..dc2d344
--- /dev/null
+++ b/tests/ldif-read.c
@@ -0,0 +1,166 @@
+/**
+ * LDIF parser testing.
+ *
+ * First parameter is location of LDIF, second location of Gammu backup
+ * how it should be parsed.
+ *
+ * Optional third parameter can be used to generate template backup
+ * file.
+ */
+#include <gammu.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "../helper/memory-display.h"
+
+#include "common.h"
+
+#include "../libgammu/service/backup/backldif.h"
+
+int main(int argc, char **argv)
+{
+ size_t pos = 0;
+ GSM_MemoryEntry pbk;
+ GSM_Error error;
+ char buffer[65536];
+ FILE *f;
+ size_t len;
+ gboolean generate = FALSE;
+ GSM_Backup backup;
+ int i;
+ GSM_Debug_Info *debug_info;
+
+ /* Configure debugging */
+ debug_info = GSM_GetGlobalDebug();
+ GSM_SetDebugFileDescriptor(stderr, FALSE, debug_info);
+ GSM_SetDebugLevel("textall", debug_info);
+
+ /* Check parameters */
+ if (argc != 3 && argc != 4) {
+ printf("Not enough parameters!\nUsage: ldif-read file.ldif file.backup\n");
+ return 1;
+ }
+
+ /* Check for generating option */
+ if (argc == 4 && strcmp(argv[3], "generate") == 0) {
+ generate = TRUE;
+ }
+
+ /* Open file */
+ f = fopen(argv[1], "r");
+ test_result(f != NULL);
+
+ /* Read data */
+ len = fread(buffer, 1, sizeof(buffer) - 1, f);
+ test_result(feof(f));
+
+ /* Zero terminate string */
+ buffer[len] = 0;
+
+ /* We don't need file any more */
+ fclose(f);
+
+ /* Parse LDIF */
+ error = GSM_DecodeLDIFEntry(buffer, &pos, &pbk);
+ gammu_test_result(error, "GSM_DecodeLDIFEntry");
+
+ /* Generate file if we should */
+ if (generate) {
+ GSM_ClearBackup(&backup);
+ strcpy(backup.Creator, "LDIF tester");
+ pbk.Location = 0;
+ backup.PhonePhonebook[0] = &pbk;
+ backup.PhonePhonebook[1] = NULL;
+ error = GSM_SaveBackupFile(argv[2], &backup, TRUE);
+ gammu_test_result(error, "GSM_SaveBackupFile");
+ }
+
+ /* Read file content */
+ GSM_ClearBackup(&backup);
+ error = GSM_ReadBackupFile(argv[2], &backup, GSM_Backup_GammuUCS2);
+ gammu_test_result(error, "GSM_ReadBackupFile");
+
+ /* Compare size */
+ test_result(pbk.EntriesNum == backup.PhonePhonebook[0]->EntriesNum);
+
+ /* Compare content */
+ for (i = 0; i < pbk.EntriesNum; i++) {
+ test_result(pbk.Entries[i].EntryType == backup.PhonePhonebook[0]->Entries[i].EntryType);
+ printf("Entry type: %d\n", pbk.Entries[i].EntryType);
+ switch (pbk.Entries[i].EntryType) {
+ case PBK_Number_General:
+ case PBK_Number_Mobile:
+ case PBK_Number_Fax:
+ case PBK_Number_Pager:
+ case PBK_Number_Other:
+ case PBK_Number_Messaging:
+ case PBK_Number_Video:
+ case PBK_Text_Note:
+ case PBK_Text_Postal:
+ case PBK_Text_Email:
+ case PBK_Text_Email2:
+ case PBK_Text_URL:
+ case PBK_Text_LUID:
+ case PBK_Text_Name:
+ case PBK_Text_LastName:
+ case PBK_Text_FirstName:
+ case PBK_Text_SecondName:
+ case PBK_Text_FormalName:
+ case PBK_Text_NamePrefix:
+ case PBK_Text_NameSuffix:
+ case PBK_Text_NickName:
+ case PBK_Text_Company:
+ case PBK_Text_JobTitle:
+ case PBK_Text_StreetAddress:
+ case PBK_Text_City:
+ case PBK_Text_State:
+ case PBK_Text_Zip:
+ case PBK_Text_Country:
+ case PBK_Text_Custom1:
+ case PBK_Text_Custom2:
+ case PBK_Text_Custom3:
+ case PBK_Text_Custom4:
+ case PBK_Text_UserID:
+ case PBK_Text_PictureName:
+ case PBK_PushToTalkID:
+ case PBK_Text_VOIP:
+ case PBK_Text_SWIS:
+ case PBK_Text_WVID:
+ case PBK_Text_SIP:
+ case PBK_Text_DTMF:
+ test_result(mywstrncmp(pbk.Entries[i].Text, backup.PhonePhonebook[0]->Entries[i].Text, 0) == TRUE);
+ break;
+ case PBK_Photo:
+ test_result((pbk.Entries[i].Picture.Length ==
+ backup.PhonePhonebook[0]->Entries[i].Picture.Length) &&
+ memcmp(pbk.Entries[i].Picture.Buffer, backup.PhonePhonebook[0]->Entries[i].Picture.Buffer, pbk.Entries[i].Picture.Length) == 0);
+ free(pbk.Entries[i].Picture.Buffer);
+ break;
+ case PBK_Date:
+ case PBK_LastModified:
+ break;
+ case PBK_Category:
+ case PBK_Private:
+ case PBK_RingtoneID:
+ case PBK_PictureID:
+ case PBK_CallLength:
+ case PBK_Caller_Group:
+ test_result(pbk.Entries[i].Number == backup.PhonePhonebook[0]->Entries[i].Number);
+ break;
+ }
+ }
+
+ error = PrintMemoryEntry(&pbk, NULL);
+ gammu_test_result(error, "PrintMemoryEntry");
+
+ /* Free data */
+ GSM_FreeBackup(&backup);
+
+ /* We're done */
+ return 0;
+}
+
+/* Editor configuration
+ * vim: noexpandtab sw=8 ts=8 sts=8 tw=72:
+ */