UNPKG

sku-pg

Version:

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

187 lines (145 loc) 5.2 kB
<!DOCTYPE html> <!-- @author robbyw@google.com (Robby Walker) --> <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.editor.plugins.SpacesTabHandler</title> <script src="../../base.js"></script> <script src="../../deps.js"></script> <script> goog.require('goog.dom'); goog.require('goog.dom.Range'); goog.require('goog.editor.BrowserFeature'); goog.require('goog.editor.plugins.SpacesTabHandler'); goog.require('goog.events.BrowserEvent'); goog.require('goog.events.KeyCodes'); goog.require('goog.functions'); goog.require('goog.testing.StrictMock'); goog.require('goog.testing.editor.FieldMock'); goog.require('goog.testing.editor.TestHelper'); goog.require('goog.testing.jsunit'); </script> </head> <body> <div id="field"></div> <script> var field = goog.dom.getElement('field'); var editableField; var tabHandler; var testHelper; function setUp() { editableField = new goog.testing.editor.FieldMock(); // Modal mode behavior tested in AbstractTabHandler. editableField.inModalMode = goog.functions.FALSE; testHelper = new goog.testing.editor.TestHelper(field); testHelper.setUpEditableElement(); tabHandler = new goog.editor.plugins.SpacesTabHandler(); tabHandler.registerFieldObject(editableField); } function tearDown() { editableField = null; testHelper.tearDownEditableElement(); tabHandler.dispose(); } function testSelectedTextIndent() { field.innerHTML = 'Test'; var testText = field.firstChild; testHelper.select(testText, 0, testText, 4); var event = new goog.testing.StrictMock(goog.events.BrowserEvent); event.keyCode = goog.events.KeyCodes.TAB; event.shiftKey = false; editableField.stopChangeEvents(true, true); editableField.dispatchChange(); editableField.dispatchSelectionChangeEvent(); event.preventDefault(); editableField.$replay(); event.$replay(); assertTrue('Event marked as handled', tabHandler.handleKeyboardShortcut(event, '', false)); var contents = field.textContent || field.innerText; // Chrome doesn't treat \u00a0 as a space. assertTrue('Text should be replaced with 4 spaces but was: "' + contents + '"', /^(\s|\u00a0){4}$/.test(contents)); editableField.$verify(); event.$verify(); } function testCursorIndent() { field.innerHTML = 'Test'; var testText = field.firstChild; testHelper.select(testText, 2, testText, 2); var event = new goog.testing.StrictMock(goog.events.BrowserEvent); event.keyCode = goog.events.KeyCodes.TAB; event.shiftKey = false; editableField.stopChangeEvents(true, true); editableField.dispatchChange(); editableField.dispatchSelectionChangeEvent(); event.preventDefault(); editableField.$replay(); event.$replay(); assertTrue('Event marked as handled', tabHandler.handleKeyboardShortcut(event, '', false)); var contents = field.textContent || field.innerText; assertTrue('Expected contents "Te st" but was: "' + contents + '"', /Te[\s|\u00a0]{4}st/.test(contents)); editableField.$verify(); event.$verify(); } function testShiftTabNoOp() { field.innerHTML = 'Test'; range = goog.dom.Range.createFromNodeContents(field); range.collapse(); range.select(); var event = new goog.testing.StrictMock(goog.events.BrowserEvent); event.keyCode = goog.events.KeyCodes.TAB; event.shiftKey = true; event.preventDefault(); editableField.$replay(); event.$replay(); assertTrue('Event marked as handled', tabHandler.handleKeyboardShortcut(event, '', false)); var contents = field.textContent || field.innerText; assertEquals('Shift+tab should not change contents', 'Test', contents); editableField.$verify(); event.$verify(); } function testInListNoOp() { field.innerHTML = '<ul><li>Test</li></ul>'; var testText = field.firstChild.firstChild.firstChild; // div ul li Test testHelper.select(testText, 2, testText, 2); var event = new goog.testing.StrictMock(goog.events.BrowserEvent); event.keyCode = goog.events.KeyCodes.TAB; event.shiftKey = false; editableField.$replay(); event.$replay(); assertFalse('Event must not be handled when selection inside list.', tabHandler.handleKeyboardShortcut(event, '', false)); testHelper.assertHtmlMatches('<ul><li>Test</li></ul>') editableField.$verify(); event.$verify(); } function testContainsListNoOp() { field.innerHTML = '<ul><li>Test</li></ul>'; var testText = field.firstChild.firstChild.firstChild; // div ul li Test testHelper.select(field.firstChild, 0, testText, 2); var event = new goog.testing.StrictMock(goog.events.BrowserEvent); event.keyCode = goog.events.KeyCodes.TAB; event.shiftKey = false; editableField.$replay(); event.$replay(); assertFalse('Event must not be handled when selection inside list.', tabHandler.handleKeyboardShortcut(event, '', false)); testHelper.assertHtmlMatches('<ul><li>Test</li></ul>') editableField.$verify(); event.$verify(); } </script> </body> </html>