function UnitTest(dataStore, successCallback) {
    this.dataStore = dataStore;
    this.successCallback = successCallback;
    this.run = function() {
        dataStore.getDriverCount(function(value) {
            var drivers;
            dataStore.getDriversSearch(function(value) {
                if (value.error) { throw (value.error); }
                drivers = value.result;
                var devices;
                dataStore.getDevicesSearch(function(value) {
                    if (value.error) { throw (value.error); }
                    devices = value.result;
                    dataStore.getZones(function(value) {
                        dataStore.getRoutes(function(value) {
                            var orgNode = dataStore.getOrganizationNode();
                            var nodes;
                            dataStore.getSubTrees(function(value) {
                                if (value.error) { throw (value.error); }
                                nodes = value.result;
                                dataStore.getDataStoreUser(function(value) {
                                    var node = {};
                                    node.Name = "test";
                                    node.parent = orgNode;
                                    dataStore.addNode(function(value) {
                                        if (value.error) { throw (value.error); }
                                        node = value.result;
                                        node.Name = "test2";
                                        dataStore.setNode(function() {
                                            dataStore.removeNode(function() {
                                                var fromDate = new Date();
                                                fromDate.setTime(Date.UTC(2008, 6, 1));
                                                var toDate = new Date();
                                                toDate.setTime(Date.UTC(2008, 6, 1, 13, 0, 0));
                                                successCallback();
                                                return;
                                                // TODO: timeout in getActivityDetailByDevice 
                                                dataStore.getActivityDetailByDevice(function() {
                                                    dataStore.getActivityDetailByDriver(function() {
                                                        dataStore.getActivitySummaryByDevice(function() {
                                                            dataStore.getActivitySummaryByDriver(function() {
                                                                successCallback;
                                                            }, fromDate, toDate, nodes, drivers, 180, true);
                                                        }, fromDate, toDate, nodes, devices, 180, true);
                                                    }, fromDate, toDate, nodes, drivers, true);
                                                }, fromDate, toDate, nodes[0].Children, devices, true);
                                            }, node);
                                        }, node);
                                    }, node);
                                });
                            }, orgNode);
                        }, [], true, "%");
                    }, [], true, "%", null);
                }, [], true, "%");
            }, [], true, "%");
        });
    }
}
