Test for Rollup Added

master
John Kiernander 2013-06-12 19:03:07 +01:00
parent 87b7bbd173
commit 41b5cce894
4 changed files with 143 additions and 39 deletions

View File

@ -53,7 +53,8 @@ module.exports = function(grunt) {
all: {
options: {
urls: [
'http://localhost:3001/test/methods/_getOrderedList.html'
'http://localhost:3001/test/methods/_getOrderedList.html',
'http://localhost:3001/test/methods/_rollUp.html'
]
}
}

19
dist/dimple.v1.js vendored
View File

@ -3416,25 +3416,6 @@ var dimple = {
// Source: /src/methods/_rollUp.js
dimple._rollUp = function (data, fields) {
// Get a squashed list. This will have a row
// for every distinct combination of fields passed
// and each field in the data will be included with an array of
// all values in its place. Therefore
// { "Field 1":"a", "Field 2":"x", "Field 3":"s", "Field 4":13 },
// { "Field 1":"a", "Field 2":"y", "Field 3":"s", "Field 4":14 },
// { "Field 1":"a", "Field 2":"z", "Field 3":"t", "Field 4":15 }
// If fields = "Field 1" then this would return:
// { "Field 1":"a", "Field 2":["x","y","z"], "Field 3":["s","s","t"], "Field 4":[12,14,15]}
// If fields = "Field 3" then this would return:
// { "Field 3":"s", "Field 1":["a","a"], "Field 2":["x","y"], "Field 4":[12,14]},
// { "Field 3":"t", "Field 1":["a"], "Field 2":["z"], "Field 4":[15]}
// If fields = ["Field 1", "Field 3"] then this would return:
// { "Field 1":"a", "Field 3":"s", "Field 2":["x","y"], "Field 4":[12,14]},
// { "Field 1":"a", "Field 3":"t", "Field 2":["z"], "Field 4":[15]}
var returnList = [];
// Put single values into single value arrays
if (fields !== null && fields !== undefined) {

View File

@ -3,25 +3,6 @@
// Source: /src/methods/_rollUp.js
dimple._rollUp = function (data, fields) {
// Get a squashed list. This will have a row
// for every distinct combination of fields passed
// and each field in the data will be included with an array of
// all values in its place. Therefore
// { "Field 1":"a", "Field 2":"x", "Field 3":"s", "Field 4":13 },
// { "Field 1":"a", "Field 2":"y", "Field 3":"s", "Field 4":14 },
// { "Field 1":"a", "Field 2":"z", "Field 3":"t", "Field 4":15 }
// If fields = "Field 1" then this would return:
// { "Field 1":"a", "Field 2":["x","y","z"], "Field 3":["s","s","t"], "Field 4":[12,14,15]}
// If fields = "Field 3" then this would return:
// { "Field 3":"s", "Field 1":["a","a"], "Field 2":["x","y"], "Field 4":[12,14]},
// { "Field 3":"t", "Field 1":["a"], "Field 2":["z"], "Field 4":[15]}
// If fields = ["Field 1", "Field 3"] then this would return:
// { "Field 1":"a", "Field 3":"s", "Field 2":["x","y"], "Field 4":[12,14]},
// { "Field 1":"a", "Field 3":"t", "Field 2":["z"], "Field 4":[15]}
var returnList = [];
// Put single values into single value arrays
if (fields !== null && fields !== undefined) {

141
test/methods/_rollUp.html Normal file
View File

@ -0,0 +1,141 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test dimple.js</title>
<link rel="stylesheet" href="/lib/qunit/qunit-1.11.0.css">
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script src="/dist/dimple.v1.js"></script>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="/lib/qunit/qunit-1.11.0.js"></script>
<script>
// Get a squashed list. This will have a row
// for every distinct combination of fields passed
// and each field in the data will be included with an array of
// all values in its place. Therefore
// { "Field 1":"a", "Field 2":"x", "Field 3":"s", "Field 4":13 },
// { "Field 1":"a", "Field 2":"y", "Field 3":"s", "Field 4":14 },
// { "Field 1":"a", "Field 2":"z", "Field 3":"t", "Field 4":15 }
// If fields = "Field 1" then this would return:
// { "Field 1":"a", "Field 2":["x","y","z"], "Field 3":["s","s","t"], "Field 4":[12,14,15]}
// If fields = "Field 3" then this would return:
// { "Field 3":"s", "Field 1":["a","a"], "Field 2":["x","y"], "Field 4":[12,14]},
// { "Field 3":"t", "Field 1":["a"], "Field 2":["z"], "Field 4":[15]}
// If fields = ["Field 1", "Field 3"] then this would return:
// { "Field 1":"a", "Field 3":"s", "Field 2":["x","y"], "Field 4":[12,14]},
// { "Field 1":"a", "Field 3":"t", "Field 2":["z"], "Field 4":[15]}
// Test data
var data = [
{ "Field 1":"a", "Field 2":"x", "Field 3":"s", "Field 4":13 },
{ "Field 1":"a", "Field 2":"y", "Field 3":"s", "Field 4":14 },
{ "Field 1":"a", "Field 2":"z", "Field 3":"t", "Field 4":15 }
];
// Flatten the ordered resultset for easy comparison
function getResults(data, fields) {
var rolledUp = dimple._rollUp(data, fields),
retString = "";
rolledUp.forEach(function (d, i) {
var addField = function (field) {
retString += "'" + field + "':"
if (d[field] instanceof Array) {
retString += "['" + d[field].join("','") + "']"
} else {
retString += "'" + d[field] + "'";
}
};
retString += (i > 0 ? "," : "") + "{";
addField("Field 1");
retString += ",";
addField("Field 2");
retString += ",";
addField("Field 3");
retString += ",";
addField("Field 4");
retString += "}"
});
return retString;
}
test("Single Dimension Squash", function() {
equal(getResults(data, "Field 1"),
"{'Field 1':'a','Field 2':['x','y','z'],'Field 3':['s','s','t'],'Field 4':['13','14','15']}");
equal(getResults(data, "Field 2"),
"{'Field 1':['a'],'Field 2':'x','Field 3':['s'],'Field 4':['13']}," +
"{'Field 1':['a'],'Field 2':'y','Field 3':['s'],'Field 4':['14']}," +
"{'Field 1':['a'],'Field 2':'z','Field 3':['t'],'Field 4':['15']}");
equal(getResults(data, "Field 3"),
"{'Field 1':['a','a'],'Field 2':['x','y'],'Field 3':'s','Field 4':['13','14']}," +
"{'Field 1':['a'],'Field 2':['z'],'Field 3':'t','Field 4':['15']}");
equal(getResults(data, "Field 4"),
"{'Field 1':['a'],'Field 2':['x'],'Field 3':['s'],'Field 4':'13'}," +
"{'Field 1':['a'],'Field 2':['y'],'Field 3':['s'],'Field 4':'14'}," +
"{'Field 1':['a'],'Field 2':['z'],'Field 3':['t'],'Field 4':'15'}");
});
test("Double Dimension Squash", function() {
equal(getResults(data, ["Field 1", "Field 2"]),
"{'Field 1':'a','Field 2':'x','Field 3':['s'],'Field 4':['13']}," +
"{'Field 1':'a','Field 2':'y','Field 3':['s'],'Field 4':['14']}," +
"{'Field 1':'a','Field 2':'z','Field 3':['t'],'Field 4':['15']}");
equal(getResults(data, ["Field 1", "Field 3"]),
"{'Field 1':'a','Field 2':['x','y'],'Field 3':'s','Field 4':['13','14']}," +
"{'Field 1':'a','Field 2':['z'],'Field 3':'t','Field 4':['15']}");
equal(getResults(data, ["Field 1", "Field 4"]),
"{'Field 1':'a','Field 2':['x'],'Field 3':['s'],'Field 4':'13'}," +
"{'Field 1':'a','Field 2':['y'],'Field 3':['s'],'Field 4':'14'}," +
"{'Field 1':'a','Field 2':['z'],'Field 3':['t'],'Field 4':'15'}");
equal(getResults(data, ["Field 2", "Field 3"]),
"{'Field 1':['a'],'Field 2':'x','Field 3':'s','Field 4':['13']}," +
"{'Field 1':['a'],'Field 2':'y','Field 3':'s','Field 4':['14']}," +
"{'Field 1':['a'],'Field 2':'z','Field 3':'t','Field 4':['15']}");
equal(getResults(data, ["Field 2", "Field 4"]),
"{'Field 1':['a'],'Field 2':'x','Field 3':['s'],'Field 4':'13'}," +
"{'Field 1':['a'],'Field 2':'y','Field 3':['s'],'Field 4':'14'}," +
"{'Field 1':['a'],'Field 2':'z','Field 3':['t'],'Field 4':'15'}");
equal(getResults(data, ["Field 3", "Field 4"]),
"{'Field 1':['a'],'Field 2':['x'],'Field 3':'s','Field 4':'13'}," +
"{'Field 1':['a'],'Field 2':['y'],'Field 3':'s','Field 4':'14'}," +
"{'Field 1':['a'],'Field 2':['z'],'Field 3':'t','Field 4':'15'}");
});
test("Triple Dimension Squash", function() {
equal(getResults(data, ["Field 1", "Field 2", "Field 3"]),
"{'Field 1':'a','Field 2':'x','Field 3':'s','Field 4':['13']}," +
"{'Field 1':'a','Field 2':'y','Field 3':'s','Field 4':['14']}," +
"{'Field 1':'a','Field 2':'z','Field 3':'t','Field 4':['15']}");
equal(getResults(data, ["Field 1", "Field 2", "Field 4"]),
"{'Field 1':'a','Field 2':'x','Field 3':['s'],'Field 4':'13'}," +
"{'Field 1':'a','Field 2':'y','Field 3':['s'],'Field 4':'14'}," +
"{'Field 1':'a','Field 2':'z','Field 3':['t'],'Field 4':'15'}");
equal(getResults(data, ["Field 1", "Field 3", "Field 4"]),
"{'Field 1':'a','Field 2':['x'],'Field 3':'s','Field 4':'13'}," +
"{'Field 1':'a','Field 2':['y'],'Field 3':'s','Field 4':'14'}," +
"{'Field 1':'a','Field 2':['z'],'Field 3':'t','Field 4':'15'}");
equal(getResults(data, ["Field 2", "Field 3", "Field 4"]),
"{'Field 1':['a'],'Field 2':'x','Field 3':'s','Field 4':'13'}," +
"{'Field 1':['a'],'Field 2':'y','Field 3':'s','Field 4':'14'}," +
"{'Field 1':['a'],'Field 2':'z','Field 3':'t','Field 4':'15'}");
});
test("Full Dimension Squash", function() {
equal(getResults(data, ["Field 1", "Field 2", "Field 3", "Field 4"]),
"{'Field 1':'a','Field 2':'x','Field 3':'s','Field 4':'13'}," +
"{'Field 1':'a','Field 2':'y','Field 3':'s','Field 4':'14'}," +
"{'Field 1':'a','Field 2':'z','Field 3':'t','Field 4':'15'}");
});
</script>
</body>
</html>