From 0abd9855c2ed9dfe2c2148b058f3229555e49922 Mon Sep 17 00:00:00 2001 From: Martin Carlberg Date: Mon, 14 May 2012 10:14:05 +0200 Subject: [PATCH] Moved new description functionallity from CFDictionary to CPDictionary. Added testcase for both CPDictionary and CPArray. Fixed failing testcase. Checked all new code with capp_lint for correct formatting. --- Foundation/CPDictionary.j | 15 ++++++++++++++- Foundation/CPObject.j | 4 ++-- Objective-J/CFDictionary.js | 19 +++++++++---------- Tests/Foundation/CPArrayTest.j | 12 ++++++++++++ Tests/Foundation/CPDictionaryTest.j | 13 +++++++++++++ Tests/Foundation/CPMutableArrayTest.j | 4 ++-- 6 files changed, 52 insertions(+), 15 deletions(-) diff --git a/Foundation/CPDictionary.j b/Foundation/CPDictionary.j index caea40a50a..17e3d14bb3 100755 --- a/Foundation/CPDictionary.j +++ b/Foundation/CPDictionary.j @@ -576,7 +576,20 @@ */ - (CPString)description { - return self.toString(); + var string = "{\n\t", + keys = _keys, + index = 0, + count = _count; + + for (; index < count; ++index) + { + var key = keys[index], + value = valueForKey(key); + + string += key + " = \"" + CPDescriptionOfObject(value).split('\n').join("\n\t") + "\"\n\t"; + } + + return string + "}"; } - (BOOL)containsKey:(id)aKey diff --git a/Foundation/CPObject.j b/Foundation/CPObject.j index 6e7960090e..6703ace871 100644 --- a/Foundation/CPObject.j +++ b/Foundation/CPObject.j @@ -543,9 +543,9 @@ function CPDescriptionOfObject(anObject) for (var property in anObject) { if (anObject.hasOwnProperty(property)) - desc += " " + property + ":" + CPDescriptionOfObject(anObject[property]) + "\n"; + desc += " " + property + ": " + CPDescriptionOfObject(anObject[property]) + "\n"; } desc += "}"; - + return desc.split('\n').join("\n\t"); } diff --git a/Objective-J/CFDictionary.js b/Objective-J/CFDictionary.js index 3b5586f5db..8336920ec1 100644 --- a/Objective-J/CFDictionary.js +++ b/Objective-J/CFDictionary.js @@ -135,19 +135,18 @@ DISPLAY_NAME(CFDictionary.prototype.valueForKey); CFDictionary.prototype.toString = function() { - var string = "{\n\t", - keys = this._keys, - index = 0, - count = this._count; - + var string = "{\n", + keys = this._keys, + index = 0, + count = this._count; + for (; index < count; ++index) { - var key = keys[index], - value = this.valueForKey(key); - - string += key + " = \"" + CPDescriptionOfObject(value).split('\n').join("\n\t") + "\"\n\t"; + var key = keys[index]; + + string += "\t" + key + " = \"" + String(this.valueForKey(key)).split('\n').join("\n\t") + "\"\n"; } - + return string + "}"; }; diff --git a/Tests/Foundation/CPArrayTest.j b/Tests/Foundation/CPArrayTest.j index e47d73e49a..75951c4715 100644 --- a/Tests/Foundation/CPArrayTest.j +++ b/Tests/Foundation/CPArrayTest.j @@ -526,6 +526,18 @@ [self assert:input1[1] equals:[output valueForKey:"1"] message:@"output[0]"]; } +- (void)testJSObjectDescription +{ + var array = [CGRectMake(1, 2, 3, 4), CGPointMake(5, 6)], + d = [array description]; + + [self assertTrue:d.indexOf("x: 1") !== -1 message:"Can't find 'x: 1' in description of array " + d]; + [self assertTrue:d.indexOf("y: 2") !== -1 message:"Can't find 'y: 2' in description of array " + d]; + [self assertTrue:d.indexOf("width: 3") !== -1 message:"Can't find 'width: 3' in description of array " + d]; + [self assertTrue:d.indexOf("height: 4") !== -1 message:"Can't find 'height: 4' in description of array " + d]; + [self assertTrue:d.indexOf("x: 5") !== -1 message:"Can't find 'x: 5' in description of array " + d]; + [self assertTrue:d.indexOf("y: 6") !== -1 message:"Can't find 'y: 6' in description of array " + d]; +} @end diff --git a/Tests/Foundation/CPDictionaryTest.j b/Tests/Foundation/CPDictionaryTest.j index d2e0245b5e..82a06fe739 100644 --- a/Tests/Foundation/CPDictionaryTest.j +++ b/Tests/Foundation/CPDictionaryTest.j @@ -237,4 +237,17 @@ [self assert:expected equals:result]; } +- (void)testJSObjectDescription +{ + var dict = [[CPDictionary alloc] initWithObjects:[CGRectMake(1, 2, 3, 4), CGPointMake(5, 6)] forKeys:[@"key1", @"key2"]], + d = [dict description]; + + [self assertTrue:d.indexOf("x: 1") !== -1 message:"Can't find 'x: 1' in description of dictionary " + d]; + [self assertTrue:d.indexOf("y: 2") !== -1 message:"Can't find 'y: 2' in description of dictionary " + d]; + [self assertTrue:d.indexOf("width: 3") !== -1 message:"Can't find 'width: 3' in description of dictionary " + d]; + [self assertTrue:d.indexOf("height: 4") !== -1 message:"Can't find 'height: 4' in description of dictionary " + d]; + [self assertTrue:d.indexOf("x: 5") !== -1 message:"Can't find 'x: 5' in description of dictionary " + d]; + [self assertTrue:d.indexOf("y: 6") !== -1 message:"Can't find 'y: 6' in description of dictionary " + d]; +} + @end diff --git a/Tests/Foundation/CPMutableArrayTest.j b/Tests/Foundation/CPMutableArrayTest.j index 8cb356633a..cd88314fc5 100644 --- a/Tests/Foundation/CPMutableArrayTest.j +++ b/Tests/Foundation/CPMutableArrayTest.j @@ -380,11 +380,11 @@ [pretty sortUsingDescriptors:[[[CPSortDescriptor alloc] initWithKey:@"value" ascending:NO]]]; - [self assert:"(\n\t3:d, \n\t2:c, \n\t1:b, \n\t0:a\n)" equals:[pretty description]]; + [self assert:"(\n\t3:d,\n\t2:c,\n\t1:b,\n\t0:a\n)" equals:[pretty description]]; [pretty sortUsingDescriptors:[[[CPSortDescriptor alloc] initWithKey:@"value" ascending:YES]]]; - [self assert:"(\n\t0:a, \n\t1:b, \n\t2:c, \n\t3:d\n)" equals:[pretty description]] + [self assert:"(\n\t0:a,\n\t1:b,\n\t2:c,\n\t3:d\n)" equals:[pretty description]] } - (void)testThatCPArrayDoesSortUsingTwoDescriptors