<commit_before>// Copyright 2007 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.acTest');
goog.setTestOnly('goog.ui.acTest');

goog.require('goog.array');
goog.require('goog.asserts');
goog.require('goog.dom');
goog.require('goog.dom.NodeType');
goog.require('goog.dom.classlist');
goog.require('goog.dom.selection');
goog.require('goog.events');
goog.require('goog.events.BrowserEvent');
goog.require('goog.events.Event');
goog.require('goog.events.EventType');
goog.require('goog.events.KeyCodes');
goog.require('goog.style');
goog.require('goog.testing.MockClock');
goog.require('goog.testing.jsunit');
goog.require('goog.ui.ac');
goog.require('goog.userAgent');
var autocomplete;
var data = ['ab', 'aab', 'aaab'];
var input;
var mockClock;

function setUpPage() {
  goog.ui.ac.createSimpleAutoComplete(
      data, goog.dom.getElement('user'), true, false);
}

function setUp() {
  mockClock = new goog.testing.MockClock(true);
  input = goog.dom.getElement('input');
  input.value = '';
  autocomplete = goog.ui.ac.createSimpleAutoComplete(data, input, true, false);
}

function tearDown() {
  autocomplete.dispose();
  mockClock.dispose();
}

//=========================================================================
// Utility methods


/**
 * Fire listeners of a given type that are listening to the event's
 * currentTarget.
 *
 * @param {goog.events.BrowserEvent} event
 */
function simulateEvent(event) {
  goog.events.fireListeners(event.currentTarget, event.type, true, event);
  goog.events.fireListeners(event.currentTarget, event.type, false, event);
}


/**
 * Fire all key event listeners that are listening to the input element.
 *
 * @param {number} keyCode The key code.
 */
function simulateAllKeyEventsOnInput(keyCode) {
  var eventTypes = [
    goog.events.EventType.KEYDOWN, goog.events.EventType.KEYPRESS,
    goog.events.EventType.KEYUP
  ];

  goog.array.forEach(eventTypes, function(type) {
    var event = new goog.events.Event(type, input);
    event.keyCode = keyCode;
    simulateEvent(new goog.events.BrowserEvent(event, input));
  });
}


/**
 * @param {string} text<commit_msg>Update ac_test to use goog.testing.events.fireKeySequence rather than always firing KEYDOWN -> KEYPRESS -> KEYUP. This makes the test only consider sequences that browsers actually fire (eg. not all keys fire KEYPRESS, which fireKeySequence checks for).<commit_after>// Copyright 2007 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.acTest');
goog.setTestOnly('goog.ui.acTest');

goog.require('goog.asserts');
goog.require('goog.dom');
goog.require('goog.dom.NodeType');
goog.require('goog.dom.classlist');
goog.require('goog.dom.selection');
goog.require('goog.events');
goog.require('goog.events.BrowserEvent');
goog.require('goog.events.Event');
goog.require('goog.events.EventType');
goog.require('goog.events.KeyCodes');
goog.require('goog.style');
goog.require('goog.testing.MockClock');
goog.require('goog.testing.events');
goog.require('goog.testing.jsunit');
goog.require('goog.ui.ac');
goog.require('goog.userAgent');
var autocomplete;
var data = ['ab', 'aab', 'aaab'];
var input;
var mockClock;

function setUpPage() {
  goog.ui.ac.createSimpleAutoComplete(
      data, goog.dom.getElement('user'), true, false);
}

function setUp() {
  mockClock = new goog.testing.MockClock(true);
  input = goog.dom.getElement('input');
  input.value = '';
  autocomplete = goog.ui.ac.createSimpleAutoComplete(data, input, true, false);
}

function tearDown() {
  autocomplete.dispose();
  mockClock.dispose();
}

//=========================================================================
// Utility methods


/**
 * Fire listeners of a given type that are listening to the event's
 * currentTarget.
 *
 * @param {goog.events.BrowserEvent} event
 */
function simulateEvent(event) {
  goog.events.fireListeners(event.currentTarget, event.type, true, event);
  goog.events.fireListeners(event.currentTarget, event.type, false, event);
}


/**
 * Fire all key event listeners that are listening to the input element.
 *
 * @param {number} keyCode The key code.
 */
function simulateAllKeyEventsOnInput(keyCode) {
  goog.testing.events.fireKeySequence(input, keyCode);
}


/**
 * @param {string} text
{'fraction_non_alphanumeric': 0.16586091483822982, 'fraction_numerical': 0.0029750836742283376, 'mean_word_length': 4.722340425531915, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2241617', 'n_tokens_mistral': 1655, 'n_tokens_neox': 1542, 'n_words': 432}