From d782ab69e0cad5e05c565fe1b297566ab5055c96 Mon Sep 17 00:00:00 2001 From: "Hoa V. DINH" Date: Wed, 24 Jun 2015 10:37:24 -0700 Subject: Added commented unit test --- src/core/basetypes/MCIndexSet.cpp | 49 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'src/core/basetypes/MCIndexSet.cpp') diff --git a/src/core/basetypes/MCIndexSet.cpp b/src/core/basetypes/MCIndexSet.cpp index 7f7e1db3..9061c4da 100644 --- a/src/core/basetypes/MCIndexSet.cpp +++ b/src/core/basetypes/MCIndexSet.cpp @@ -435,3 +435,52 @@ INITIALIZE(IndexSet) { Object::registerObjectConstructor("mailcore::IndexSet", &createObject); } + +/* + +Unit test: + +String * uidsStr = MCSTR("129597-129662,129664,129667-129671,129673-129674,129678-129694,129696-129804"); +String * cachedUidsStr = MCSTR("129755-129804"); +IndexSet * uids = NULL; +IndexSet * cachedUids = NULL; + +{ + IndexSet * result = new IndexSet(); + Array * array = uidsStr->componentsSeparatedByString(MCSTR(",")); + mc_foreacharray(String, rangeStr, array) { + Array * rangeArray = rangeStr->componentsSeparatedByString(MCSTR("-")); + if (rangeArray->count() == 2) { + int left = ((String *) rangeArray->objectAtIndex(0))->intValue(); + int right = ((String *) rangeArray->objectAtIndex(1))->intValue(); + int length = right - left; + result->addRange(RangeMake(left, length)); + } + else { + result->addIndex(rangeStr->intValue()); + } + } + //fprintf(stderr, "%s\n", MCUTF8DESC(result)); + uids = result; +} +{ + IndexSet * result = new IndexSet(); + Array * array = cachedUidsStr->componentsSeparatedByString(MCSTR(",")); + mc_foreacharray(String, rangeStr, array) { + Array * rangeArray = rangeStr->componentsSeparatedByString(MCSTR("-")); + if (rangeArray->count() == 2) { + int left = ((String *) rangeArray->objectAtIndex(0))->intValue(); + int right = ((String *) rangeArray->objectAtIndex(1))->intValue(); + int length = right - left; + result->addRange(RangeMake(left, length)); + } + else { + result->addIndex(rangeStr->intValue()); + } + } + cachedUids = result; +} +fprintf(stderr, "|%s|\n", MCUTF8DESC(uids)); +uids->removeIndexSet(cachedUids); +fprintf(stderr, "|%s|\n", MCUTF8DESC(uids)); +*/ -- cgit v1.2.3 From 2f6ef537903fef76bdd52b806e98e3b999a7db28 Mon Sep 17 00:00:00 2001 From: "Hoa V. DINH" Date: Sun, 9 Aug 2015 15:32:27 -0700 Subject: Implemented isEqual on IndexSet --- src/core/basetypes/MCIndexSet.cpp | 15 +++++++++++++++ src/core/basetypes/MCIndexSet.h | 3 ++- src/objc/utils/MCOIndexSet.mm | 9 +++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) (limited to 'src/core/basetypes/MCIndexSet.cpp') diff --git a/src/core/basetypes/MCIndexSet.cpp b/src/core/basetypes/MCIndexSet.cpp index 9061c4da..191a1588 100644 --- a/src/core/basetypes/MCIndexSet.cpp +++ b/src/core/basetypes/MCIndexSet.cpp @@ -398,6 +398,21 @@ void IndexSet::importSerializable(HashMap * serializable) } } +bool IndexSet::isEqual(Object * otherObject) +{ + IndexSet * otherIndexSet = (IndexSet *) otherObject; + if (mCount != otherIndexSet->mCount) { + return false; + } + for(unsigned int i = 0 ; i < mCount ; i ++) { + if ((mRanges[i].location != otherIndexSet->mRanges[i].location) || + (mRanges[i].length != otherIndexSet->mRanges[i].length)) { + return false; + } + } + return true; +} + void IndexSet::addIndexSet(IndexSet * indexSet) { for(unsigned int i = 0 ; i < indexSet->rangesCount() ; i ++) { diff --git a/src/core/basetypes/MCIndexSet.h b/src/core/basetypes/MCIndexSet.h index 2e2f4892..2cf67b07 100644 --- a/src/core/basetypes/MCIndexSet.h +++ b/src/core/basetypes/MCIndexSet.h @@ -50,7 +50,8 @@ namespace mailcore { virtual Object * copy(); virtual HashMap * serializable(); virtual void importSerializable(HashMap * serializable); - + virtual bool isEqual(Object * otherObject); + private: Range * mRanges; unsigned int mCount; diff --git a/src/objc/utils/MCOIndexSet.mm b/src/objc/utils/MCOIndexSet.mm index b944b38b..3f113073 100644 --- a/src/objc/utils/MCOIndexSet.mm +++ b/src/objc/utils/MCOIndexSet.mm @@ -87,6 +87,15 @@ MCO_SYNTHESIZE_NSCODING return indexSet; } +- (BOOL) isEqual:(id)other +{ + if (other == nil) { + return NO; + } + MCOIndexSet * otherIndexSet = other; + return _indexSet->isEqual(otherIndexSet->_indexSet); +} + - (NSString *) description { return MCO_OBJC_BRIDGE_GET(description); -- cgit v1.2.3