[macruby-changes] [3076] MacRuby/trunk/spec/macruby
source_changes at macosforge.org
source_changes at macosforge.org
Sun Dec 6 15:52:19 PST 2009
Revision: 3076
http://trac.macosforge.org/projects/ruby/changeset/3076
Author: neeracher at apple.com
Date: 2009-12-06 15:52:16 -0800 (Sun, 06 Dec 2009)
Log Message:
-----------
Spec for unordered collections
Modified Paths:
--------------
MacRuby/trunk/spec/macruby/core/kvc_spec.rb
MacRuby/trunk/spec/macruby/tags/macruby/core/kvc_tags.txt
Modified: MacRuby/trunk/spec/macruby/core/kvc_spec.rb
===================================================================
--- MacRuby/trunk/spec/macruby/core/kvc_spec.rb 2009-12-06 22:17:35 UTC (rev 3075)
+++ MacRuby/trunk/spec/macruby/core/kvc_spec.rb 2009-12-06 23:52:16 UTC (rev 3076)
@@ -13,84 +13,63 @@
class ArrayWrapper
def initialize
@wrapped = NSMutableArray.alloc.init
- @callLog = Hash.new(0)
end
-
- def logCall(symbol)
- @callLog[symbol] += 1
- end
-
- def callLog
- @callLog
- end
end
class WholeArrayWrapper < ArrayWrapper
def kvcOrderedCollection
- logCall(:kvcOrderedCollection)
@wrapped
end
def setKvcOrderedCollection(newValue)
- logCall(:setKvcOrderedCollection)
@wrapped = newValue.mutableCopy
end
end
class IndexedArrayWrapper < ArrayWrapper
def countOfKvcOrderedCollection
- logCall(:countOfKvcOrderedCollection)
@wrapped.size
end
def objectInKvcOrderedCollectionAtIndex(idx)
- logCall(:objectInKvcOrderedCollectionAtIndex)
@wrapped[idx]
end
def insertObject(o, inKvcOrderedCollectionAtIndex:idx)
- logCall(:insertObjectinKvcOrderedCollectionAtIndex)
@wrapped.insertObject(o, atIndex:idx)
end
def removeObjectFromKvcOrderedCollectionAtIndex(idx)
- logCall(:removeObjectFromKvcOrderedCollectionAtIndex)
@wrapped.removeObjectAtIndex(idx)
end
end
class RIndexedArrayWrapper < IndexedArrayWrapper
def replaceObjectInKvcOrderedCollectionAtIndex(idx, withObject:o)
- logCall(:replaceObjectInKvcOrderedCollectionAtIndexWithObject)
@wrapped[idx] = o
end
end
class IndexSetArrayWrapper < ArrayWrapper
def countOfKvcOrderedCollection
- logCall(:countOfKvcOrderedCollection)
- @wrapped.size
+ @wrapped.count
end
def kvcOrderedCollectionAtIndexes(idx)
- logCall(:kvcOrderedCollectionAtIndexes)
@wrapped.objectsAtIndexes(idx)
end
def insertKvcOrderedCollection(o, atIndexes:idx)
- logCall(:insertKvcOrderedCollectionAtIndexes)
@wrapped.insertObjects(o, atIndexes:idx)
end
def removeKvcOrderedCollectionAtIndexes(idx)
- logCall(:removeKvcOrderedCollectionAtIndexes)
@wrapped.removeObjectsAtIndexes(idx)
end
end
class RIndexSetArrayWrapper < IndexSetArrayWrapper
def replaceKvcOrderedCollectionAtIndexes(idx, withKvcOrderedCollection:o)
- logCall(:replaceKvcOrderedCollectionAtIndexesWithKvcOrderedCollection)
@wrapped.replaceObjectsAtIndexes(idx, withObjects:o)
end
end
@@ -122,6 +101,85 @@
w.valueForKey("kvcOrderedCollection").should == []
end
+class SetWrapper
+ def initialize
+ @wrapped = NSMutableSet.alloc.init
+ end
+end
+
+def manipulateUnorderedCollection(w)
+ 3.upto(4) {|n| w.mutableSetValueForKey("kvcUnorderedCollection").addObject(n)}
+ w.mutableSetValueForKey("kvcUnorderedCollection").addObjectsFromArray([1,2])
+ w.mutableSetValueForKey("kvcUnorderedCollection").unionSet(NSSet.setWithArray([5,6]))
+ w.valueForKey("kvcUnorderedCollection").isEqualToSet(NSSet.setWithArray((1..6).to_a)).should == true
+
+ w.mutableSetValueForKey("kvcUnorderedCollection").removeObject(1)
+ w.mutableSetValueForKey("kvcUnorderedCollection").intersectSet(NSSet.setWithArray([1,3,4,5,7]))
+ w.mutableSetValueForKey("kvcUnorderedCollection").minusSet(NSSet.setWithArray([5,7]))
+ w.valueForKey("kvcUnorderedCollection").isEqualToSet(NSSet.setWithArray([3,4])).should == true
+
+ w.mutableSetValueForKey("kvcUnorderedCollection").removeAllObjects
+ w.valueForKey("kvcUnorderedCollection").isEqualToSet(NSSet.set).should == true
+end
+
+class WholeSetWrapper < SetWrapper
+ def kvcUnorderedCollection
+ @wrapped
+ end
+
+ def setKvcUnorderedCollection(newValue)
+ @wrapped = newValue.mutableCopy
+ end
+end
+
+class ObjectSetWrapper < SetWrapper
+ def countOfKvcUnorderedCollection
+ @wrapped.count
+ end
+
+ def enumeratorOfKvcUnorderedCollection
+ @wrapped.objectEnumerator
+ end
+
+ def memberOfKvcUnorderedCollection(o)
+ @wrapped.member(o)
+ end
+
+ def addKvcUnorderedCollectionObject(o)
+ @wrapped.addObject(o)
+ end
+
+ def removeKvcUnorderedCollectionObject(o)
+ @wrapped.removeObject(o)
+ end
+end
+
+class SetSetWrapper < SetWrapper
+ def countOfKvcUnorderedCollection
+ @wrapped.count
+ end
+
+ def enumeratorOfKvcUnorderedCollection
+ @wrapped.objectEnumerator
+ end
+
+ def memberOfKvcUnorderedCollection(o)
+ @wrapped.member(o)
+ end
+
+ def addKvcUnorderedCollection(c)
+ @wrapped.unionSet(c)
+ end
+
+ def removeKvcUnorderedCollection(c)
+ @wrapped.minusSet(c)
+ end
+
+ def intersectKvcUnorderedCollection(c)
+ @wrapped.intersectSet(c)
+ end
+end
+
describe "A scalar being accessed through NSKeyValueCoding" do
it "can be manipulated" do
w = ScalarWrapper.new
@@ -134,45 +192,42 @@
it "can be manipulated through whole-array accessors" do
w = WholeArrayWrapper.new
manipulateOrderedCollection(w)
- w.callLog[:kvcOrderedCollection].should >= 16
- w.callLog[:setKvcOrderedCollection].should >= 12
end
it "can be manipulated through index accessors" do
w = IndexedArrayWrapper.new
manipulateOrderedCollection(w)
- w.callLog[:countOfKvcOrderedCollection].should > 0
- w.callLog[:objectInKvcOrderedCollectionAtIndex].should > 0
- w.callLog[:insertObjectinKvcOrderedCollectionAtIndex].should > 0
- w.callLog[:removeObjectFromKvcOrderedCollectionAtIndex].should > 0
end
it "can be manipulated through index accessors (w/ replace)" do
w = RIndexedArrayWrapper.new
manipulateOrderedCollection(w)
- w.callLog[:countOfKvcOrderedCollection].should > 0
- w.callLog[:objectInKvcOrderedCollectionAtIndex].should > 0
- w.callLog[:insertObjectinKvcOrderedCollectionAtIndex].should > 0
- w.callLog[:removeObjectFromKvcOrderedCollectionAtIndex].should > 0
- w.callLog[:replaceObjectInKvcOrderedCollectionAtIndexWithObject].should > 0
end
it "can be manipulated through index set accessors" do
w = IndexSetArrayWrapper.new
manipulateOrderedCollection(w)
- w.callLog[:countOfKvcOrderedCollection].should > 0
- w.callLog[:kvcOrderedCollectionAtIndexes].should > 0
- w.callLog[:insertKvcOrderedCollectionAtIndexes].should > 0
- w.callLog[:removeKvcOrderedCollectionAtIndexes].should > 0
end
it "can be manipulated through index set accessors (w/ replace)" do
w = RIndexSetArrayWrapper.new
manipulateOrderedCollection(w)
- w.callLog[:countOfKvcOrderedCollection].should > 0
- w.callLog[:kvcOrderedCollectionAtIndexes].should > 0
- w.callLog[:insertKvcOrderedCollectionAtIndexes].should > 0
- w.callLog[:removeKvcOrderedCollectionAtIndexes].should > 0
- w.callLog[:replaceKvcOrderedCollectionAtIndexesWithKvcOrderedCollection].should > 0
end
end
+
+describe "An unordered collection being accessed through NSKeyValueCoding" do
+ it "can be manipulated through whole-array accessors" do
+ w = WholeSetWrapper.new
+ manipulateUnorderedCollection(w)
+ end
+
+ it "can be manipulated through object accessors" do
+ w = ObjectSetWrapper.new
+ manipulateUnorderedCollection(w)
+ end
+
+ it "can be manipulated through set accessors" do
+ w = SetSetWrapper.new
+ manipulateUnorderedCollection(w)
+ end
+end
Modified: MacRuby/trunk/spec/macruby/tags/macruby/core/kvc_tags.txt
===================================================================
--- MacRuby/trunk/spec/macruby/tags/macruby/core/kvc_tags.txt 2009-12-06 22:17:35 UTC (rev 3075)
+++ MacRuby/trunk/spec/macruby/tags/macruby/core/kvc_tags.txt 2009-12-06 23:52:16 UTC (rev 3076)
@@ -2,3 +2,5 @@
fails:An ordered collection being accessed through NSKeyValueCoding can be manipulated through index accessors (w/ replace)
fails:An ordered collection being accessed through NSKeyValueCoding can be manipulated through index set accessors
fails:An ordered collection being accessed through NSKeyValueCoding can be manipulated through index set accessors (w/ replace)
+fails:An unordered collection being accessed through NSKeyValueCoding can be manipulated through object accessors
+fails:An unordered collection being accessed through NSKeyValueCoding can be manipulated through set accessors
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20091206/9b805939/attachment-0001.html>
More information about the macruby-changes
mailing list