1 // ==========================================================================
  2 // Project:   SproutCore Costello - Property Observing Library
  3 // Copyright: ©2006-2011 Strobe Inc. and contributors.
  4 //            Portions ©2008-2011 Apple Inc. All rights reserved.
  5 // License:   Licensed under MIT license (see license.js)
  6 // ==========================================================================
  7 
  8 /*globals module test ok equals same CoreTest */
  9 
 10 sc_require('debug/test_suites/array/base');
 11 
 12 SC.ArraySuite.define(function(T) {
 13   
 14   var observer, obj ;
 15   
 16   module(T.desc("unshiftObject"), {
 17     setup: function() {
 18       obj = T.newObject();
 19       observer = T.observer(obj);
 20     }
 21   });
 22 
 23   test("returns unshifted object", function() {
 24     var exp = T.expected(1)[0];
 25     equals(obj.pushObject(exp), exp, 'should return receiver');
 26   });
 27   
 28 
 29   test("[].unshiftObject(X) => [X] + notify", function() {
 30     var exp = T.expected(1);
 31     observer.observe('[]', 'length') ;
 32     obj.unshiftObject(exp[0]) ;
 33     T.validateAfter(obj, exp, observer, YES);
 34   });
 35 
 36   test("[A,B,C].unshiftObject(X) => [X,A,B,C] + notify", function() {
 37     var after  = T.expected(4),
 38         before = after.slice(1),
 39         value  = after[0];
 40         
 41     obj.replace(0,0,before);
 42     observer.observe('[]', 'length') ;
 43     obj.unshiftObject(value) ;
 44     T.validateAfter(obj, after, observer, YES);
 45   });
 46   
 47 });
 48