Monotone-Parent: 37feda6e02a5f2d56457e09508814b8b3d6ed388

Monotone-Revision: b0f4711fa3917d9ca82a918807fe75046c131ee1

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2011-11-10T15:31:26
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau 2011-11-10 15:31:26 +00:00
parent 8d807b7fcb
commit 121154b015
4 changed files with 149 additions and 6 deletions

View file

@ -1,3 +1,8 @@
2011-11-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* Tests/Unit/TestVersit.m: new test module for versit parsing and
outputting.
2011-11-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* OpenChange/MAPIStoreCalendarMessage.m (-save): set the DESCRIPTION

View file

@ -15,6 +15,7 @@ $(TEST_TOOL)_OBJC_FILES += \
SOGoTestRunner.m \
SaxXMLReaderFactory+SOGoTests.m \
\
TestVersit.m \
TestiCalTimeZonePeriod.m \
TestiCalRecurrenceCalculator.m \
\
@ -26,8 +27,8 @@ $(TEST_TOOL)_OBJC_FILES += \
TEST_TOOL_NAME = $(TEST_TOOL)
ADDITIONAL_INCLUDE_DIRS += \
-D_GNU_SOURCE -I../SOPE/ -I../SoObjects/ -I../UI/
TEST_TOOL_CPPFLAGS += \
-Wall -D_GNU_SOURCE -I../SOPE/ -I../SoObjects/ -I../UI/
ADDITIONAL_LIB_DIRS += \
-L../SoObjects/SOGo -lSOGo -lNGMime -lNGCards -lGDLContentStore -lNGExtensions -lSBJson -lobjc -L/usr/local/lib -lSaxObjC

View file

@ -38,14 +38,13 @@
- (NSArray *) saxReaderSearchPathes
{
NSArray *pathes, *args;
NSString *cwd, *exedir;
NSString *exedir;
args = [[NSProcessInfo processInfo] arguments];
cwd = [[NSFileManager defaultManager] currentDirectoryPath];
exedir = [[args objectAtIndex: 0] stringByDeletingLastPathComponent];
pathes = [NSArray arrayWithObject:
[NSString stringWithFormat: @"%@/%@/%@",
cwd, exedir,
[NSString stringWithFormat: @"%@/%@",
exedir,
@"../../../SOPE/NGCards/versitCardsSaxDriver/"]];
return pathes;

138
Tests/Unit/TestVersit.m Normal file
View file

@ -0,0 +1,138 @@
/* TestVersit.m - this file is part of $PROJECT_NAME_HERE$
*
* Copyright (C) 2011 Inverse inc
*
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
*
* This file 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; either version 2, or (at your option)
* any later version.
*
* This file 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 this program; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#import <Foundation/NSArray.h>
#import <NGCards/CardVersitRenderer.h>
#import <NGCards/CardElement.h>
#import <NGCards/CardGroup.h>
#import "SOGoTest.h"
@interface TestVersit : SOGoTest
@end
@implementation TestVersit
- (void) test_rendering
{
CardElement *element;
CardVersitRenderer *renderer;
NSString *result;
renderer = [CardVersitRenderer new];
[renderer autorelease];
/* 1. simple value */
element = [CardElement elementWithTag: @"elem"];
[element setValue: 0 to: @"value"];
result = [renderer render: element];
testEquals(result, @"ELEM:value\r\n");
/* 2. two values */
element = [CardElement elementWithTag: @"elem"];
[element setValue: 0 to: @"value1"];
[element setValue: 1 to: @"value2"];
result = [renderer render: element];
testEquals(result, @"ELEM:value1;value2\r\n");
/* 3. one value with commma */
element = [CardElement elementWithTag: @"elem"];
[element setValue: 0 to: @"value1, with a comma"];
result = [renderer render: element];
testEquals(result, @"ELEM:value1\\, with a comma\r\n");
/* 4. one value with a semicolon */
element = [CardElement elementWithTag: @"elem"];
[element setValue: 0 to: @"value1; with a semi-colon"];
result = [renderer render: element];
testEquals(result, @"ELEM:value1\\; with a semi-colon\r\n");
/* 4. 3 named values:
1. with multiple subvalues
2. with commas
3. with semicolon */
element = [CardElement elementWithTag: @"elem"];
[element setNamedValue: @"named1"
to: [NSArray arrayWithObjects: @"1", @"2", @"3", nil]];
[element setNamedValue: @"named2"
to: @"1,2,3"];
[element setNamedValue: @"named3"
to: @"text1;text2"];
result = [renderer render: element];
testEquals(result, @"ELEM:NAMED1=1,2,3;NAMED2=1\\,2\\,3;NAMED3:text1\\;text2\r\n");
}
- (void) test_parsing
{
CardGroup *group;
CardElement *element;
NSString *versit;
versit = @"BEGIN:group1\r\nELEMENT:value\r\nEND:group1\r\n";
group = [CardGroup parseSingleFromSource: versit];
element = [group firstChildWithTag: @"element"];
testEquals([element value: 0], @"value");
versit = @"BEGIN:group1\r\nELEMENT:value1;value2\r\nEND:group1\r\n";
group = [CardGroup parseSingleFromSource: versit];
element = [group firstChildWithTag: @"element"];
testEquals([element value: 0], @"value1");
testEquals([element value: 1], @"value2");
versit = @"BEGIN:group1\r\nELEMENT:value\\, with comma\r\nEND:group1\r\n";
group = [CardGroup parseSingleFromSource: versit];
element = [group firstChildWithTag: @"element"];
testEquals([element value: 0], @"value, with comma");
versit = @"BEGIN:group1\r\nELEMENT:value,with comma\r\nEND:group1\r\n";
group = [CardGroup parseSingleFromSource: versit];
element = [group firstChildWithTag: @"element"];
testEquals([element value: 0], ([NSArray arrayWithObjects: @"value", @"with comma", nil]));
versit = @"BEGIN:group1\r\nELEMENT:NAMED1=subvalue;NAMED2=subvalue1,subvalue2\r\nEND:group1\r\n";
group = [CardGroup parseSingleFromSource: versit];
element = [group firstChildWithTag: @"element"];
testEquals([element namedValue: @"named1"], @"subvalue");
testEquals([element namedValue: @"named2"],
([NSArray arrayWithObjects: @"subvalue1", @"subvalue2", nil]));
versit = @"BEGIN:group1\r\nELEMENT;PARAM1=test:value\r\nEND:group1\r\n";
group = [CardGroup parseSingleFromSource: versit];
element = [group firstChildWithTag: @"element"];
testEquals([element value: 0], @"value");
testEquals([element value: 0 ofAttribute: @"param1"], @"test");
versit = @"BEGIN:group1\r\nELEMENT;PARAM1=paramvalue1,paramvalue2:value\r\nEND:group1\r\n";
group = [CardGroup parseSingleFromSource: versit];
element = [group firstChildWithTag: @"element"];
testEquals([element value: 0], @"value");
testEquals([element value: 0 ofAttribute: @"param1"], @"paramvalue1");
testEquals([element value: 1 ofAttribute: @"param1"], @"paramvalue2");
versit = @"BEGIN:group1\r\nELEMENT;PARAM1=\"paramvalue1, with comma\":value\r\nEND:group1\r\n";
group = [CardGroup parseSingleFromSource: versit];
element = [group firstChildWithTag: @"element"];
testEquals([element value: 0], @"value");
testEquals([element value: 0 ofAttribute: @"param1"], @"value1, with comma");
}
@end