| // 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.ui.media.MediaModelTest'); |
| goog.setTestOnly('goog.ui.media.MediaModelTest'); |
| |
| goog.require('goog.testing.jsunit'); |
| goog.require('goog.ui.media.MediaModel'); |
| |
| |
| /** |
| * A simple model used in many tests. |
| */ |
| var model; |
| |
| function setUp() { |
| model = new goog.ui.media.MediaModel( |
| 'http://url.com', 'a caption', 'a description'); |
| } |
| |
| function testMediaModel() { |
| assertEquals('http://url.com', model.getUrl()); |
| assertEquals('a caption', model.getCaption()); |
| assertEquals('a description', model.getDescription()); |
| |
| var incompleteModel = new goog.ui.media.MediaModel( |
| 'http://foo.bar', |
| undefined, |
| 'This media has no caption but has a description and a URL'); |
| assertEquals('http://foo.bar', incompleteModel.getUrl()); |
| assertUndefined(incompleteModel.getCaption()); |
| assertEquals('This media has no caption but has a description and a URL', |
| incompleteModel.getDescription()); |
| assertArrayEquals([], incompleteModel.getThumbnails()); |
| } |
| |
| function testMediaModelFindCategoryWithScheme() { |
| assertNull(model.findCategoryWithScheme('no such scheme')); |
| |
| model.setCategories([ |
| new goog.ui.media.MediaModel.Category('scheme-a', 'value-a'), |
| new goog.ui.media.MediaModel.Category('scheme-b', 'value-b') |
| ]); |
| assertNull(model.findCategoryWithScheme('no such scheme')); |
| assertEquals('value-a', |
| model.findCategoryWithScheme('scheme-a').getValue()); |
| assertEquals('value-b', |
| model.findCategoryWithScheme('scheme-b').getValue()); |
| } |
| |
| |
| function testMediaModelFindCreditsWithRole() { |
| assertEquals(0, model.findCreditsWithRole('no such role').length); |
| |
| model.setCredits([ |
| new goog.ui.media.MediaModel.Credit('value-a', 'role-a'), |
| new goog.ui.media.MediaModel.Credit('value-a2', 'role-a'), |
| new goog.ui.media.MediaModel.Credit('value-b', 'role-b') |
| ]); |
| |
| assertEquals(0, model.findCreditsWithRole('no such role').length); |
| assertEquals(2, model.findCreditsWithRole('role-a').length); |
| assertEquals('value-a', |
| model.findCreditsWithRole('role-a')[0].getValue()); |
| assertEquals('value-a2', |
| model.findCreditsWithRole('role-a')[1].getValue()); |
| assertEquals('value-b', |
| model.findCreditsWithRole('role-b')[0].getValue()); |
| } |
| |
| function testMediaModelSubtitles() { |
| model.setSubTitles([ |
| new goog.ui.media.MediaModel.SubTitle( |
| 'uri', '*', 'application/tts+xml') |
| ]); |
| assertEquals(1, model.getSubTitles().length); |
| assertEquals('uri', model.getSubTitles()[0].getHref()); |
| assertEquals('*', model.getSubTitles()[0].getLang()); |
| assertEquals('application/tts+xml', model.getSubTitles()[0].getType()); |
| } |
| |
| function testMediaModelNoSubtitles() { |
| assertEquals(0, model.getSubTitles().length); |
| } |