blob: 8aa648c4eb6f1b3496ef7d5f6d562069ce30595c [file] [log] [blame]
<!DOCTYPE html>
<html>
<!--
Copyright 2009 Google Inc. All Rights Reserved.
Use of this source code is governed by an Apache 2.0 License.
See the COPYING file for details.
-->
<!--
Unit tests for overalldirectionalitydetector.js.
-->
<head>
<title>bidichecker - Javascript Unit Tests</title>
<script type="text/javascript" src="../third_party/closure-library/closure/goog/base.js">
</script>
<!-- Include the generated deps.js which enables goog.require of
the modules under test.
-->
<script type="text/javascript" src="deps.js"></script>
<script type="text/javascript">
// This in turn pulls in the rest of the files.
goog.require('bidichecker');
goog.require('goog.testing.jsunit');
</script>
<script type="text/javascript" src="testutils.js"></script>
</head>
<body>
<script type="text/javascript">
/**
* Runs the overall directionality detector on the contents of a DOM element.
* @param {!Element} rootElement The root element of the DOM to be checked.
* @param {boolean} shouldBeRtl Is the root expected to be right-to-left?
* @return {!Array.<!bidichecker.Error>} List of error messages.
*/
function runOverallDirectionalityDetector(rootElement, shouldBeRtl) {
var errorCollector =
new bidichecker.ErrorCollector(new bidichecker.FrameStack());
var scanner = new bidichecker.Scanner();
// Override the buildDetectors method to build only one detector.
scanner.buildDetectors = function(element, shouldBeRtl) {
return [new bidichecker.OverallDirectionalityDetector(shouldBeRtl,
errorCollector)];
};
scanner.scan(rootElement, shouldBeRtl);
return errorCollector.getErrors();
}
function testOverallDirectionalityDetector_DirectionalityIsLtrSucceeds() {
var testDiv = goog.dom.createDom('div', {'id': 'test'});
goog.dom.appendChild(document.body, testDiv);
var errors = runOverallDirectionalityDetector(testDiv, false);
assertErrorFields([], errors);
}
function testOverallDirectionalityDetector_DirectionalityIsRtlSucceeds() {
var testDiv = goog.dom.createDom('div', {'id': 'test', 'dir': 'rtl'});
goog.dom.appendChild(document.body, testDiv);
var errors = runOverallDirectionalityDetector(testDiv, true);
assertErrorFields([], errors);
}
function testOverallDirectionalityDetector_DirectionalityIsLtrError() {
var testDiv = goog.dom.createDom('div', {'id': 'test'});
goog.dom.appendChild(document.body, testDiv);
var errors = runOverallDirectionalityDetector(testDiv, true);
var expected = [{'type': 'Overall directionality not RTL',
'severity': 1}];
assertErrorFields(expected, errors);
// The highlightable element is the root node of the DOM.
var highlightableArea = new bidichecker.HighlightableElement(testDiv);
assertObjectEquals(highlightableArea, errors[0].getHighlightableArea());
}
function testOverallDirectionalityDetector_DirectionalityIsRtlError() {
var testDiv = goog.dom.createDom('div', {'id': 'test', 'dir': 'rtl'});
goog.dom.appendChild(document.body, testDiv);
var errors = runOverallDirectionalityDetector(testDiv, false);
var expected = [{'type': 'Overall directionality not LTR',
'severity': 1}];
assertErrorFields(expected, errors);
}
</script>
</body>
</html>