120 lines
3.3 KiB
JavaScript
120 lines
3.3 KiB
JavaScript
// Copyright 2011 The Closure Library Authors. All Rights Reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS-IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
goog.provide('goog.style.transitionTest');
|
|
goog.setTestOnly('goog.style.transitionTest');
|
|
|
|
goog.require('goog.style');
|
|
goog.require('goog.style.transition');
|
|
goog.require('goog.testing.jsunit');
|
|
goog.require('goog.userAgent');
|
|
|
|
|
|
/** Fake element. */
|
|
var element;
|
|
|
|
|
|
function setUp() {
|
|
element = {'style': {}};
|
|
}
|
|
|
|
function getTransitionStyle(element) {
|
|
return element.style['transition'] ||
|
|
goog.style.getStyle(element, 'transition');
|
|
}
|
|
|
|
|
|
function testSetWithNoProperty() {
|
|
try {
|
|
goog.style.transition.set(element, []);
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
fail('Should fail when no property is given.');
|
|
}
|
|
|
|
|
|
function testSetWithString() {
|
|
goog.style.transition.set(element, 'opacity 1s ease-in 0.125s');
|
|
assertEquals('opacity 1s ease-in 0.125s', getTransitionStyle(element));
|
|
}
|
|
|
|
|
|
function testSetWithSingleProperty() {
|
|
goog.style.transition.set(element,
|
|
{property: 'opacity', duration: 1, timing: 'ease-in', delay: 0.125});
|
|
assertEquals('opacity 1s ease-in 0.125s', getTransitionStyle(element));
|
|
}
|
|
|
|
|
|
function testSetWithMultipleStrings() {
|
|
goog.style.transition.set(element, [
|
|
'width 1s ease-in',
|
|
'height 0.5s linear 1s'
|
|
]);
|
|
assertEquals('width 1s ease-in,height 0.5s linear 1s',
|
|
getTransitionStyle(element));
|
|
}
|
|
|
|
|
|
function testSetWithMultipleProperty() {
|
|
goog.style.transition.set(element, [
|
|
{property: 'width', duration: 1, timing: 'ease-in', delay: 0},
|
|
{property: 'height', duration: 0.5, timing: 'linear', delay: 1}
|
|
]);
|
|
assertEquals('width 1s ease-in 0s,height 0.5s linear 1s',
|
|
getTransitionStyle(element));
|
|
}
|
|
|
|
|
|
function testRemoveAll() {
|
|
goog.style.setStyle(element, 'transition', 'opacity 1s ease-in');
|
|
goog.style.transition.removeAll(element);
|
|
assertEquals('', getTransitionStyle(element));
|
|
}
|
|
|
|
|
|
function testAddAndRemoveOnRealElement() {
|
|
if (!goog.style.transition.isSupported()) {
|
|
return;
|
|
}
|
|
|
|
var div = document.getElementById('test');
|
|
goog.style.transition.set(div, 'opacity 1s ease-in 125ms');
|
|
assertEquals('opacity 1s ease-in 125ms', getTransitionStyle(div));
|
|
goog.style.transition.removeAll(div);
|
|
assertEquals('', getTransitionStyle(div));
|
|
}
|
|
|
|
|
|
function testSanityDetectionOfCss3Transition() {
|
|
var support = goog.style.transition.isSupported();
|
|
|
|
// IE support starts at IE10.
|
|
if (goog.userAgent.IE) {
|
|
assertEquals(goog.userAgent.isVersionOrHigher('10.0'), support);
|
|
}
|
|
|
|
// FF support start at FF4 (Gecko 2.0)
|
|
if (goog.userAgent.GECKO) {
|
|
assertEquals(goog.userAgent.isVersionOrHigher('2.0'), support);
|
|
}
|
|
|
|
// Webkit support has existed for a long time, we assume support on
|
|
// most webkit version in used today.
|
|
if (goog.userAgent.WEBKIT) {
|
|
assertTrue(support);
|
|
}
|
|
}
|