[View]  [Edit]  [Lock]  [References]  [Attachments]  [History]  [Home]  [Changes]  [Search]  [Help] 

test[m8n] 50 Array


-- setup
array = smalltalk.Array:new()

-- empty array
if (not array:isArray()) then error("Must be anArray") end
if (not array:isEmpty()) then error("Must be empty") end
if (array:size()~=0) then error("Size must be zero") end

-- class messages
array=smalltalk.Array:with_(12)
if (not array:isArray()) then error("Must be anArray") end
if (array:first()~=12) then error("Must return 12") end
array=smalltalk.Array:with_with_(1,2)
if (array:first()~=1) then error("Must return 1") end
if (array:second()~=2) then error("Must return 2") end
if (array:last()~=array:size()) then error("The last must be the size") end
array=smalltalk.Array:with_with_with_with_(1,2,3,4)
if (array:first()~=1) then error("Must return 1") end
if (array:second()~=2) then error("Must return 2") end
if (array:third()~=3) then error("Must return 3") end
if (array:last()~=array:size()) then error("The last must be the size") end
array=smalltalk.Array:with_with_(1,2)
array:add_(3)
(smalltalk.Array:withAll_(array)):do_(function(x) print(x) end)


-- instance messages
array=smalltalk:newArray({1,2,3,4,5,6,7,8,9,10})
if (not array:size()==10) then error("Size must be 10") end
if (not array:_comma(array):size()==20) then error("Must return 20") end
array:addAll_(array); if (not array:size()==30) then error("Must contain 30 elements") end
local copy=array:copy(); copy:atAllPut_(0); local sum=0; copy:do_(function(x) sum=sum+x end); if (sum~=0) then error("Sum must be zero") end
if (not array:copy():removeAll():size()==0) then error("Must be empty") end
local copy=array:copy(); copy:removeFirst(); if (not array:size()==9) then error("Size must be 9") end
array:withIndexDo_(function(value,index) print(index,value) end)


-- handling nils
array=smalltalk.Array:new()
array:add_(1)
array:add_(2)
array:add_(3)
array:add_(nil)
if (array:size()~=4) then error("Must have 4 elements") end
if (array:last():notNil()) then error("Last must be nil") end
if (array:last()~=nil) then error("Last must be nil") end
if (not array:last():isNil()) then error("Last must be nil") end
if (not array:includes_(nil)) then error("Must return true") end
array:at_put_(1,nil)
if (array:first()~=nil) then error("First must be nil") end
array:atAllPut_(nil)
if (array:detect_ifNone_(function(x)return x~=nil end,function() return "ok" end)~="ok") then error("All contents must be nil") end
if (array:size()~=4) then error("Must have 4 elements") end
if (array:removeLast()~=nil) then error("Result must be nil") end
if (array:size()~=3) then error("Must have 3 elements") end
if (array:addLast_(nil)~=nil) then error("Must return nil") end
if (array:size()~=4) then error("Must have 4 elements") end


-- clear
array = nil