Skip to content

Commit

Permalink
Moved new description functionallity from CFDictionary to CPDictionary.
Browse files Browse the repository at this point in the history
Added testcase for both CPDictionary and CPArray. Fixed failing testcase.
Checked all new code with capp_lint for correct formatting.
  • Loading branch information
mrcarlberg committed May 14, 2012
1 parent 327debe commit 0abd985
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 15 deletions.
15 changes: 14 additions & 1 deletion Foundation/CPDictionary.j
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions Foundation/CPObject.j
Expand Up @@ -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");
}
19 changes: 9 additions & 10 deletions Objective-J/CFDictionary.js
Expand Up @@ -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 + "}";
};

Expand Down
12 changes: 12 additions & 0 deletions Tests/Foundation/CPArrayTest.j
Expand Up @@ -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

Expand Down
13 changes: 13 additions & 0 deletions Tests/Foundation/CPDictionaryTest.j
Expand Up @@ -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
4 changes: 2 additions & 2 deletions Tests/Foundation/CPMutableArrayTest.j
Expand Up @@ -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
Expand Down

0 comments on commit 0abd985

Please sign in to comment.