RQL Test Suite
https://github.com/kriszyp/rql
by schlomm
HTML
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.8/dijit/themes/claro/claro.css">
<script src="https://cdn.rawgit.com/phusick/cdn/jsfiddle/amd-packages.js"></script>
<div
id="container"
data-dojo-type="dijit/layout/BorderContainer"
data-dojo-props="gutters:false,liveSplitters:true"
>
<div
data-dojo-type="dijit/layout/ContentPane"
data-dojo-props="region:'top'"
class="blue"
>
<span id="queryCombo"></span>
<button id="queryButton" data-dojo-type="dijit/form/Button">Run Query</button>
</div>
<div
data-dojo-type="dijit/layout/ContentPane"
data-dojo-props="region:'top'"
style="background-color:lightyellow;border-top:1px solid yellow;"
>
<span>Displaying: </span>
<span id="current-query"></span>
<span id="error-icon" class="dijitIcon dijitInline dijitIconError" style="display:none;"></span>
</div>
<div
data-dojo-type="dijit/layout/ContentPane"
data-dojo-props="region:'center'"
>
<div id="grid"></div>
</div>
<div
data-dojo-type="dijit/layout/ContentPane"
data-dojo-props="region:'bottom',splitter:true"
class="blue"
style="text-align: right;"
>
<button id="testButton" data-dojo-type="dijit/form/Button">Run DOH Unit Tests</button>
<div
data-dojo-type="dijit/Tooltip"
data-dojo-props="connectId:'testButton',position:['above']">
Open JavaScript Console to see results (F12)
</div>
<a id="github" href="https://github.com/kriszyp/rql" target="_blank"></a>
<div
data-dojo-type="dijit/Tooltip"
data-dojo-props="connectId:'github',position:['above']">
Resource Query Languare (RQL) @github
</div>
</div>
</div>
CSS
html, body {
height: 100%;
}
body {
font-family: sans-serif;
font-size: 11px;
}
#grid {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
height: auto;
}
#container {
height: 100%;
}
#current-query {
font-family: monospace;
}
#github {
display: block;
width: 32px;
height: 32px;
background: transparent url(http://www.glowingminds.co.uk/wordpress/wp-content/uploads/2012/06/github.png) 0 0 no-repeat;
position: absolute;
left: 0;
top: 0;
margin-top: 6px;
margin-left: 6px;
}
.blue {
background-color: AliceBlue;
border-top: 1px solid CornflowerBlue;
}
JavaScript
require([
"doh/runner",
"dojo/ready",
"dojo/_base/declare",
"dojo/_base/lang",
"dojo/dom",
"dojo/aspect",
"dojo/store/Memory",
"dgrid/OnDemandGrid",
"rql/js-array",
"data/dtuned",
"dojo/keys",
"dijit/registry",
"dijit/form/ComboBox",
"dijit/Tooltip",
"dijit/layout/BorderContainer",
"dijit/layout/ContentPane",
"dijit/form/Button",
"dojo/domReady!"
], function(
doh,
ready,
declare,
lang,
dom,
aspect,
Memory,
Grid,
rql,
data,
keys,
registry,
ComboBox,
Tooltip
) {
var simpleQueryEngineTest = {
name: "Simple Query Engine Test",
setUp: function() {
this.store = new Memory({ data: lang.delegate(data)});
},
runTest: function() {
var store = this.store;
doh.assertTrue(store.isInstanceOf(Memory));
doh.assertEqual(12, store.query({ Year: 1995}).length);
doh.assertEqual(26, store.query({ Artist: "Zero 7"}).length);
doh.assertEqual(12, store.query({ Artist: "Zero 7", Album: "The Garden"}).length);
doh.assertEqual(12, store.query(function(item, index, items) {
return (item.Artist == "Zero 7" && item.Album == "The Garden");
}).length
);
}
}
var rqlQueryEngineTest = {
name: "RQL Query Test",
setUp: function() {
this.store = new Memory({ data: lang.delegate(data)});
this.store.queryEngine = rql.query;
},
runTest: function() {
var store = this.store;
doh.assertEqual(12, store.query("Year>2007").length);
doh.assertEqual(12, store.query("Year>1990&Year<1997").length);
doh.assertEqual( 1, store.query("Year=string:1990").length);
doh.assertEqual(13, store.query("(Year=string:1995|Year=string:1990)").length);
...