From e2afc613b2d4292d461af99ee3443b23a5b1d55a Mon Sep 17 00:00:00 2001 From: Steve Brokenshire Date: Sat, 5 Dec 2015 20:45:08 +0000 Subject: [PATCH] Added the convert subroutine and initial unit tests. The convert subroutine is run with the -c switch. --- source/convert.cpp | 59 +++++++++++++++++++++++++++++++++ source/convert.h | 39 ++++++++++++++++++++++ source/tests/xestiaab_convert.h | 50 ++++++++++++++++++++++++++++ 3 files changed, 148 insertions(+) create mode 100644 source/convert.cpp create mode 100644 source/convert.h create mode 100644 source/tests/xestiaab_convert.h diff --git a/source/convert.cpp b/source/convert.cpp new file mode 100644 index 0000000..d8578d7 --- /dev/null +++ b/source/convert.cpp @@ -0,0 +1,59 @@ +// convert.h - Convert subroutines. +// +// (c) 2012-2015 Xestia Software Development. +// +// This file is part of Xestia Address Book. +// +// Xestia Address Book is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by the +// Free Software Foundation, version 3 of the license. +// +// Xestia Address Book is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with Xestia Address Book. If not, see + +#include "convert.h" + +ConvertResult ConvertContact(wxString InputFormat, wxString OutputFormat, + wxString InputFilename, wxString OutputFilename){ + + std::vector ValidFormats = { + wxT("vCard3"), + wxT("vCard4") + }; + + bool ValidImport = false; + bool ValidOutput = false; + + // Check that the input format is valid. + + for (long l = 0; l < ValidFormats.size(); l++){ + + if (InputFormat == ValidFormats[l]){ + ValidImport = true; + break; + } + + } + + if (ValidImport == false){ + + return CONVERTRESULT_INVALIDIMPORTFORMAT; + + } + + if (InputFormat == OutputFormat){ + + return CONVERTRESULT_FORMATSSAME; + + } + + // Check that the output format is valid. + + return CONVERTRESULT_OK; + +} \ No newline at end of file diff --git a/source/convert.h b/source/convert.h new file mode 100644 index 0000000..8994dbe --- /dev/null +++ b/source/convert.h @@ -0,0 +1,39 @@ +// convert.h - Convert subourtines header. +// +// (c) 2012-2015 Xestia Software Development. +// +// This file is part of Xestia Address Book. +// +// Xestia Address Book is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by the +// Free Software Foundation, version 3 of the license. +// +// Xestia Address Book is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with Xestia Address Book. If not, see + +#ifndef __CONVERT_H__ +#define __CONVERT_H__ + +#include +#include +#include + +enum ConvertResult { + CONVERTRESULT_UNITTESTFAIL = -1, + CONVERTRESULT_OK, + CONVERTRESULT_FORMATSSAME, + CONVERTRESULT_INVALIDIMPORTFORMAT, + CONVERTRESULT_INVALIDEXPORTFORMAT, + CONVERTRESULT_IMPORTFILEMISSING, + CONVERTRESULT_IMPORTFILEERROR, +}; + +ConvertResult ConvertContact(wxString InputFormat, wxString OutputFormat, + wxString InputFilename, wxString OutputFilename); + +#endif \ No newline at end of file diff --git a/source/tests/xestiaab_convert.h b/source/tests/xestiaab_convert.h new file mode 100644 index 0000000..383b18d --- /dev/null +++ b/source/tests/xestiaab_convert.h @@ -0,0 +1,50 @@ +// xestiaab_convert.h - Xestia Address Book Convert Unit Tests. +// +// (c) 2012-2015 Xestia Software Development. +// +// This file is part of Xestia Address Book. +// +// Xestia Address Book is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by the +// Free Software Foundation, version 3 of the license. +// +// Xestia Address Book is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with Xestia Address Book. If not, see + +#include +#include "../convert.h" + +TEST(ConvertCmdLine, ConvertTests){ + + // Test that the import format is valid. + + ASSERT_EQ(CONVERTRESULT_OK, ConvertContact(wxT("vCard4"), + wxT("vCard3"), + wxT("LoadCheck-Load1.vcf"), + wxT("LoadCheck-Load1-v3Conv.vcf"))); + ASSERT_EQ(CONVERTRESULT_OK, ConvertContact(wxT("vCard3"), + wxT("vCard4"), + wxT("LoadCheck-Load1.vcf"), + wxT("LoadCheck-Load1-v3Conv.vcf"))); + + // Test that a matching import and export formats return + // an error. + + ASSERT_EQ(CONVERTRESULT_FORMATSSAME, ConvertContact(wxT("vCard3"), + wxT("vCard3"), + wxT("LoadCheck-Load1.vcf"), + wxT("LoadCheck-Load1-v3Conv.vcf"))); + + // Test that an invalid import format returns an error. + + ASSERT_EQ(CONVERTRESULT_INVALIDIMPORTFORMAT, ConvertContact(wxT("vCardNope"), + wxT("vCard3"), + wxT("LoadCheck-Load1.vcf"), + wxT("LoadCheck-Load1-v3Conv.vcf"))); + +} \ No newline at end of file -- 2.39.5