Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,187 @@
|
||||
// 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.dom.pattern.matcherTest');
|
||||
goog.setTestOnly('goog.dom.pattern.matcherTest');
|
||||
|
||||
goog.require('goog.dom');
|
||||
goog.require('goog.dom.pattern.EndTag');
|
||||
goog.require('goog.dom.pattern.FullTag');
|
||||
goog.require('goog.dom.pattern.Matcher');
|
||||
goog.require('goog.dom.pattern.Repeat');
|
||||
goog.require('goog.dom.pattern.Sequence');
|
||||
goog.require('goog.dom.pattern.StartTag');
|
||||
goog.require('goog.dom.pattern.callback.Counter');
|
||||
goog.require('goog.dom.pattern.callback.Test');
|
||||
goog.require('goog.iter.StopIteration');
|
||||
goog.require('goog.testing.jsunit');
|
||||
|
||||
function testMatcherAndStartTag() {
|
||||
var pattern = new goog.dom.pattern.StartTag('P');
|
||||
|
||||
var counter = new goog.dom.pattern.callback.Counter();
|
||||
var matcher = new goog.dom.pattern.Matcher();
|
||||
matcher.addPattern(pattern, counter.getCallback());
|
||||
matcher.match(document.body);
|
||||
|
||||
assertEquals('StartTag(p) should match 5 times in body', 5,
|
||||
counter.count);
|
||||
}
|
||||
|
||||
function testMatcherAndStartTagTwice() {
|
||||
var pattern = new goog.dom.pattern.StartTag('P');
|
||||
|
||||
var counter = new goog.dom.pattern.callback.Counter();
|
||||
var matcher = new goog.dom.pattern.Matcher();
|
||||
matcher.addPattern(pattern, counter.getCallback());
|
||||
matcher.match(document.body);
|
||||
|
||||
assertEquals('StartTag(p) should match 5 times in body', 5,
|
||||
counter.count);
|
||||
|
||||
// Make sure no state got mangled.
|
||||
counter.reset();
|
||||
matcher.match(document.body);
|
||||
|
||||
assertEquals('StartTag(p) should match 5 times in body again', 5,
|
||||
counter.count);
|
||||
}
|
||||
|
||||
function testMatcherAndStartTagAttributes() {
|
||||
var pattern = new goog.dom.pattern.StartTag('SPAN', {id: /./});
|
||||
|
||||
var counter = new goog.dom.pattern.callback.Counter();
|
||||
var matcher = new goog.dom.pattern.Matcher();
|
||||
matcher.addPattern(pattern, counter.getCallback());
|
||||
matcher.match(document.body);
|
||||
|
||||
assertEquals('StartTag(span,id) should match 2 times in body', 2,
|
||||
counter.count);
|
||||
}
|
||||
|
||||
function testMatcherWithTwoPatterns() {
|
||||
var pattern1 = new goog.dom.pattern.StartTag('SPAN');
|
||||
var pattern2 = new goog.dom.pattern.StartTag('P');
|
||||
|
||||
var counter = new goog.dom.pattern.callback.Counter();
|
||||
|
||||
var matcher = new goog.dom.pattern.Matcher();
|
||||
matcher.addPattern(pattern1, counter.getCallback());
|
||||
matcher.addPattern(pattern2, counter.getCallback());
|
||||
|
||||
matcher.match(document.body);
|
||||
|
||||
assertEquals('StartTag(span|p) should match 8 times in body', 8,
|
||||
counter.count);
|
||||
}
|
||||
|
||||
function testMatcherWithQuit() {
|
||||
var pattern1 = new goog.dom.pattern.StartTag('SPAN');
|
||||
var pattern2 = new goog.dom.pattern.StartTag('P');
|
||||
|
||||
var count = 0;
|
||||
var callback = function(node, position) {
|
||||
if (node.nodeName == 'SPAN') {
|
||||
throw goog.iter.StopIteration;
|
||||
return true;
|
||||
}
|
||||
count++;
|
||||
};
|
||||
|
||||
var matcher = new goog.dom.pattern.Matcher();
|
||||
matcher.addPattern(pattern1, callback);
|
||||
matcher.addPattern(pattern2, callback);
|
||||
|
||||
matcher.match(document.body);
|
||||
|
||||
assertEquals('Stopped span|p should match 1 time in body', 1, count);
|
||||
}
|
||||
|
||||
function testMatcherWithReplace() {
|
||||
var pattern1 = new goog.dom.pattern.StartTag('B');
|
||||
var pattern2 = new goog.dom.pattern.StartTag('I');
|
||||
|
||||
var count = 0;
|
||||
var callback = function(node, position) {
|
||||
count++;
|
||||
if (node.nodeName == 'B') {
|
||||
var i = goog.dom.createDom('I');
|
||||
node.parentNode.insertBefore(i, node);
|
||||
goog.dom.removeNode(node);
|
||||
|
||||
position.setPosition(i);
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
var matcher = new goog.dom.pattern.Matcher();
|
||||
matcher.addPattern(pattern1, callback);
|
||||
matcher.addPattern(pattern2, callback);
|
||||
|
||||
matcher.match(goog.dom.getElement('div1'));
|
||||
|
||||
assertEquals('i|b->i should match 5 times in div1', 5, count);
|
||||
}
|
||||
|
||||
function testMatcherAndFullTag() {
|
||||
var pattern = new goog.dom.pattern.FullTag('P');
|
||||
|
||||
var test = new goog.dom.pattern.callback.Test();
|
||||
|
||||
var matcher = new goog.dom.pattern.Matcher();
|
||||
matcher.addPattern(pattern, test.getCallback());
|
||||
|
||||
matcher.match(goog.dom.getElement('p1'));
|
||||
|
||||
assert('FullTag(p) should match on p1', test.matched);
|
||||
|
||||
test.reset();
|
||||
matcher.match(goog.dom.getElement('div1'));
|
||||
|
||||
assert('FullTag(p) should not match on div1', !test.matched);
|
||||
}
|
||||
|
||||
function testMatcherAndSequence() {
|
||||
var pattern = new goog.dom.pattern.Sequence([
|
||||
new goog.dom.pattern.StartTag('P'),
|
||||
new goog.dom.pattern.StartTag('SPAN'),
|
||||
new goog.dom.pattern.EndTag('SPAN'),
|
||||
new goog.dom.pattern.EndTag('P')
|
||||
], true);
|
||||
|
||||
var counter = new goog.dom.pattern.callback.Counter();
|
||||
var matcher = new goog.dom.pattern.Matcher();
|
||||
matcher.addPattern(pattern, counter.getCallback());
|
||||
matcher.match(document.body);
|
||||
|
||||
assertEquals('Sequence should match 1 times in body', 1, counter.count);
|
||||
}
|
||||
|
||||
function testMatcherAndRepeatFullTag() {
|
||||
var pattern = new goog.dom.pattern.Repeat(
|
||||
new goog.dom.pattern.FullTag('P'), 1);
|
||||
|
||||
var count = 0;
|
||||
var tcount = 0;
|
||||
var matcher = new goog.dom.pattern.Matcher();
|
||||
matcher.addPattern(pattern, function() {
|
||||
count++;
|
||||
tcount += pattern.count;
|
||||
});
|
||||
matcher.match(document.body);
|
||||
|
||||
assertEquals('Repeated p should match 2 times in body', 2, count);
|
||||
assertEquals('Repeated p should match 5 total times in body', 5, tcount);
|
||||
}
|
||||
Reference in New Issue
Block a user