mirror of
https://github.com/twbs/bootstrap.git
synced 2024-11-30 12:24:19 +01:00
90 lines
2.8 KiB
JavaScript
90 lines
2.8 KiB
JavaScript
/*
|
|
* Copyright 2011 Twitter, Inc.
|
|
* 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.
|
|
*/
|
|
|
|
var doc = this['document'];
|
|
var fs = require('fs');
|
|
|
|
var passed = 0;
|
|
var failed = 0;
|
|
|
|
if (!this['output']) {
|
|
var output = function (string) {
|
|
return doc ? doc.write(string + '<br/>') : console.log(string);
|
|
};
|
|
}
|
|
|
|
var Hogan = require(__dirname + '/../lib/hogan');
|
|
var template = fs.readFileSync(__dirname + '/../lib/template.js').toString();
|
|
var compiler = fs.readFileSync(__dirname + '/../lib/compiler.js').toString();
|
|
var mustache_wrapper = fs.readFileSync(__dirname + '/../wrappers/mustache.js.mustache').toString();
|
|
|
|
// Create a Mustache.js emulator from the distribution template
|
|
var engines = (new Function(Hogan.compile(mustache_wrapper).render({template: template, compiler: compiler}) +
|
|
'; return {Hogan: Hogan, Mustache: Mustache};'))();
|
|
|
|
var Mustache = engines.Mustache;
|
|
var Hogan2 = engines.Hogan;
|
|
|
|
|
|
// sanity check
|
|
is(Mustache.hasOwnProperty('to_html'), true, 'Mustache has to_html method.');
|
|
|
|
// Check for Mustache.js partial resolution behavior.
|
|
var context = {
|
|
foo: 'bar',
|
|
mypartial: {
|
|
baz: 'qux'
|
|
}
|
|
}
|
|
var text = 'abc {{foo}} def {{>mypartial}} ghi';
|
|
var partialText = '{{baz}}';
|
|
var s = Mustache.to_html(text, context, {'mypartial': partialText});
|
|
is(s, 'abc bar def qux ghi', 'Correct emulation of Mustache.js partial-name-in-context resolution.');
|
|
|
|
// Now check to see that the Hogan resolution is unaffected.
|
|
var t = Hogan2.compile(text);
|
|
s = t.render(context, {'mypartial': partialText});
|
|
is(s, 'abc bar def ghi', 'Hogan behavior not changed by Mustache.js emulation.');
|
|
|
|
// Check for sendFun behavior
|
|
var buf = "";
|
|
function send(s) {
|
|
buf += "-FOO " + s + " FOO-";
|
|
}
|
|
var s = Mustache.to_html(text, context, {'mypartial': partialText}, send);
|
|
is(buf, '-FOO abc bar def qux ghi FOO-', 'Correct emulation of Mustache.js sendFun.');
|
|
|
|
|
|
function is(got, expected, msg) {
|
|
if (got === expected) {
|
|
output("OK: " + msg);
|
|
++passed;
|
|
} else {
|
|
output("FAIL: " + msg);
|
|
output("Expected |" + expected + "|");
|
|
output(" Got |" + got + "|");
|
|
++failed;
|
|
}
|
|
}
|
|
|
|
function complete() {
|
|
output("\nTests Complete");
|
|
output("--------------");
|
|
output("Passed: " + passed);
|
|
output("Failed: " + failed);
|
|
output("\n");
|
|
}
|
|
|
|
complete(); |