UNPKG

blossom

Version:

Modern, Cross-Platform Application Framework

288 lines (226 loc) 8.55 kB
// ========================================================================== // Project: SproutCore - JavaScript Application Framework // Copyright: ©2006-2011 Strobe Inc. and contributors. // portions copyright @2009 Apple Inc. // License: Licensed under MIT license (see license.js) // ========================================================================== /*global module test htmlbody ok equals same stop start */ htmlbody('<style> .sc-static-layout { border: 1px red dotted; } </style>'); (function() { var pane = SC.ControlTestPane.design() .add("progress basic", SC.ProgressView, { layout: {top:0, bottom:0, left:0, width: 250}, value: 25, minimum: 0, maximum: 100 }) .add("progress disabled", SC.ProgressView, { layout: {top:0, bottom:0, left:0, width: 250}, value: 25, minimum: 0, maximum: 100, isEnabled: false }) .add("progress basic value 0", SC.ProgressView, { layout: {top:0, bottom:0, left:0, width: 250}, value: 0, minimum: 0, maximum: 100 }) .add("progress basic value 100", SC.ProgressView, { layout: {top:0, bottom:0, left:0, width: 250}, value: 100, minimum: 0, maximum: 100 }) .add("progress basic max 50", SC.ProgressView, { layout: {top:0, bottom:0, left:0, width: 250}, value: 25, minimum: 0, maximum: 50 }) // Slider View UI .add("slider basic", SC.SliderView, { layout: {top:0, bottom:0, left:0, width: 250}, value: 50, minimum: 0, maximum: 100 }) .add("slider disabled", SC.SliderView, { layout: {top:0, bottom:0, left:0, width: 250}, value: 50, minimum: 0, maximum: 100, isEnabled: false }) .add("slider value 100", SC.SliderView, { layout: {top:0, bottom:0, left:0, width: 250}, value: 100, minimum: 0, maximum: 100 }) .add("slider basic step 20", SC.SliderView, { layout: {top:0, bottom:0, left:0, width: 250}, value: 50, minimum: 0, maximum: 100, step: 20 }); pane.show(); // add a test to show the test pane // .......................................................... // TEST VIEWS // suite("SC.ProgressView UI"); test("basic", function() { var view = pane.view('progress basic'); ok(!view.$().hasClass('disabled'), 'should NOT have disabled class'); ok(view.$('.sc-inner'), 'should have sc-inner class'); ok(view.$('.sc-outer-head'), 'should have sc-outer-head class'); ok(view.$('.sc-outer-tail'), 'should have sc-outer-tail class'); ok(view.$('.sc-inner-head'), 'should have sc-inner-head class'); ok(view.$('.sc-inner-tail'), 'should have sc-inner-tail class'); equals(view.$('.sc-inner').css("width"), "25%", 'width should be 25%'); // browsers compute the width after % adjustment differently. just be close var v = (SC.browser.msie || SC.browser.mozilla) ? 63 : 62; equals(view.$('.sc-inner').width(), v, 'pixel width '); }); test("disabled", function() { var view = pane.view('progress disabled'); ok(view.$().hasClass('disabled'), 'should have disabled class'); ok(view.$('.sc-inner'), 'should have sc-inner class'); equals(view.$('.sc-inner').css("width"), "0%", 'width should be 0%'); equals(view.$('.sc-inner').width(), 0, 'pixel width '); }); test("basic value 0", function() { var view = pane.view('progress basic value 0'); ok(!view.$().hasClass('disabled'), 'should NOT have disabled class'); ok(view.$('.sc-inner'), 'should have sc-inner class'); equals(view.$('.sc-inner').css("width"), "0%", 'width should be 0%'); equals(view.$('.sc-inner').width(), 0, 'pixel width '); }); test("basic value 100", function() { var view = pane.view('progress basic value 100'); ok(!view.$().hasClass('disabled'), 'should NOT have disabled class'); ok(view.$('.sc-inner'), 'should have sc-inner class'); equals(view.$('.sc-inner').css("width"), "100%", 'width should be 100%'); equals(view.$('.sc-inner').width(), 250, 'pixel width '); }); test("basic max 50", function() { var view = pane.view('progress basic max 50'); ok(!view.$().hasClass('disabled'), 'should NOT have disabled class'); ok(view.$('.sc-inner'), 'should have sc-inner class'); equals(view.$('.sc-inner').css("width"), "50%", 'width should be 50%'); equals(view.$('.sc-inner').width(), 125, 'pixel width '); }); // .......................................................... // TEST CHANGING PROGRESS BARS // test("changing value from empty -> value", function() { var view = pane.view('progress basic value 0'); equals(view.$('.sc-inner').width(), 0, 'precon - pixel width should be 0'); SC.RunLoop.begin(); view.set('value', 50); SC.RunLoop.end(); equals(view.$('.sc-inner').css("width"), "50%", 'width should be 50%'); var assertions = function(){ equals(view.$('.sc-inner').width(), 125, 'pixel width '); start(); }; stop(); setTimeout(assertions, 200); }); test("changing value from full -> empty", function() { var view = pane.view('progress basic value 100'); equals(view.$('.sc-inner').width(), 250, 'precon - pixel width should be 316'); SC.RunLoop.begin(); view.set('value', 0); SC.RunLoop.end(); equals(view.$('.sc-inner').css("width"), "0%", 'width should be 0%'); var assertions = function(){ equals(view.$('.sc-inner').width(), 0, 'pixel width '); start(); }; stop(); setTimeout(assertions, 200); }); test("changing value from full -> negative number", function() { var view = pane.view('progress basic value 100'); SC.RunLoop.begin(); view.set('value', 100); SC.RunLoop.end(); SC.RunLoop.begin(); view.set('value', -10); SC.RunLoop.end(); equals(view.$('.sc-inner').css("width"), "0%", 'width should be 0%'); var assertions = function(){ equals(view.$('.sc-inner').width(), 0, 'pixel width '); start(); }; stop(); setTimeout(assertions, 200); }); test("changing value to over maximum", function() { var view = pane.view('progress basic'); // browsers compute the width after % adjustment differently. just be close var v = (SC.browser.msie || SC.browser.mozilla) ? 63 : 62; equals(view.$('.sc-inner').width(), v, 'precon - pixel width should be fixed'); SC.RunLoop.begin(); view.set('value', 110); SC.RunLoop.end(); equals(view.$('.sc-inner').css("width"), "100%", 'width should be 100%'); var assertions = function(){ equals(view.$('.sc-inner').width(), 250, 'pixel width '); start(); }; stop(); setTimeout(assertions, 200); }); test("changing value to a string", function() { var view = pane.view('progress basic'); SC.RunLoop.begin(); view.set('value', 25); SC.RunLoop.end(); SC.RunLoop.begin(); view.set('value', 'aString'); SC.RunLoop.end(); equals(view.$('.sc-inner').css("width"), "0%", 'width should be 0%'); var assertions = function(){ equals(view.$('.sc-inner').width(), 0, 'pixel width '); start(); }; stop(); setTimeout(assertions, 200); }); // .......................................................... // SC.SliderView // suite("SC.SliderView UI"); test("basic", function() { var view = pane.view('slider basic'); ok(!view.$().hasClass('disabled'), 'should NOT have disabled class'); ok(view.$('.sc-inner'), 'should have sc-inner class'); ok(view.$('.sc-handle'), 'should have sc-handle class'); equals(view.$('.sc-handle').css('left'), '50%', 'left of sc-handle should be 50%'); }); test("disabled", function() { var view = pane.view('slider disabled'); ok(view.$().hasClass('disabled'), 'should have disabled class'); ok(view.$('.sc-inner'), 'should have sc-inner class'); ok(view.$('.sc-handle'), 'should have sc-handle class'); equals(view.$('.sc-handle').css('left'), '50%', 'left of sc-handle should be 50%'); }); test("basic value 100", function() { var view = pane.view('slider value 100'); ok(!view.$().hasClass('disabled'), 'should have disabled class'); ok(view.$('.sc-inner'), 'should have sc-inner class'); ok(view.$('.sc-handle'), 'should have sc-handle class'); equals(view.$('.sc-handle').css('left'), '100%', 'left of sc-handle should be 100%'); }); test("basic step 20", function() { var view = pane.view('slider basic step 20'); ok(!view.$().hasClass('disabled'), 'should have disabled class'); ok(view.$('.sc-inner'), 'should have sc-inner class'); ok(view.$('.sc-handle'), 'should have sc-handle class'); equals(view.$('.sc-handle').css('left'), '60%', 'left of sc-handle should be 60%'); }); })();