UNPKG

sku-pg

Version:

Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!

115 lines (96 loc) 3.64 kB
<!DOCTYPE html> <!-- Author: attila@google.com (Attila Bodis) --> <html> <!-- Copyright 2008 The Closure Library Authors. All Rights Reserved. Use of this source code is governed by the Apache License, Version 2.0. See the COPYING file for details. --> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Closure Unit Tests - goog.ui.registry</title> <script src="../base.js"></script> <script> goog.require('goog.object'); goog.require('goog.testing.jsunit'); goog.require('goog.ui.decorate'); goog.require('goog.ui.registry'); </script> </head> <body> <div id="x" class="fake-component-x"></div> <div id="y" class="fake-component-y fake-component-x"></div> <div id="z" class="fake-component-z"></div> <div id="u"></div> <script> // Fake component and renderer implementations, for testing only. // UnknownComponent has no default renderer or decorator registered. function UnknownComponent() { } // FakeComponentX's default renderer is FakeRenderer. It also has a // decorator. function FakeComponentX() { this.element = null; } FakeComponentX.prototype.decorate = function(element) { this.element = element; }; // FakeComponentY doesn't have an explicitly registered default // renderer; it should inherit the default renderer from its superclass. // It does have a decorator registered. function FakeComponentY() { FakeComponentX.call(this); } goog.inherits(FakeComponentY, FakeComponentX); // FakeComponentZ is just another component. Its default renderer is // FakeSingletonRenderer, but it has no decorator registered. function FakeComponentZ() { } // FakeRenderer is a stateful renderer. function FakeRenderer() { } // FakeSingletonRenderer is a stateless renderer that can be used as a // singleton. function FakeSingletonRenderer() { } FakeSingletonRenderer.instance_ = new FakeSingletonRenderer(); FakeSingletonRenderer.getInstance = function() { return FakeSingletonRenderer.instance_; }; function setUp() { goog.ui.registry.setDefaultRenderer(FakeComponentX, FakeRenderer); goog.ui.registry.setDefaultRenderer(FakeComponentZ, FakeSingletonRenderer); goog.ui.registry.setDecoratorByClassName('fake-component-x', function() { return new FakeComponentX(); }); goog.ui.registry.setDecoratorByClassName('fake-component-y', function() { return new FakeComponentY(); }); } function tearDown() { goog.ui.registry.reset(); } function testDecorate() { var dx = goog.ui.decorate(document.getElementById('x')); assertTrue('Decorator for element with fake-component-x class must be ' + 'a FakeComponentX', dx instanceof FakeComponentX); assertEquals('Element x must have been decorated', document.getElementById('x'), dx.element); var dy = goog.ui.decorate(document.getElementById('y')); assertTrue('Decorator for element with fake-component-y class must be ' + 'a FakeComponentY', dy instanceof FakeComponentY); assertEquals('Element y must have been decorated', document.getElementById('y'), dy.element); var dz = goog.ui.decorate(document.getElementById('z')); assertNull('Decorator for element with unknown class must be null', dz); var du = goog.ui.decorate(document.getElementById('u')); assertNull('Decorator for element without CSS class must be null', du); } </script> </body> </html>