Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / karma / lib / browser_collection.js
1 var EXECUTING = require('./browser').STATE_EXECUTING
2 var Result = require('./browser_result')
3
4 var Collection = function (emitter, browsers) {
5   browsers = browsers || []
6
7   this.add = function (browser) {
8     browsers.push(browser)
9     emitter.emit('browsers_change', this)
10   }
11
12   this.remove = function (browser) {
13     var index = browsers.indexOf(browser)
14
15     if (index === -1) {
16       return false
17     }
18
19     browsers.splice(index, 1)
20     emitter.emit('browsers_change', this)
21
22     return true
23   }
24
25   this.getById = function (browserId) {
26     for (var i = 0; i < browsers.length; i++) {
27       if (browsers[i].id === browserId) {
28         return browsers[i]
29       }
30     }
31
32     return null
33   }
34
35   this.setAllToExecuting = function () {
36     browsers.forEach(function (browser) {
37       browser.state = EXECUTING
38     })
39
40     emitter.emit('browsers_change', this)
41   }
42
43   this.areAllReady = function (nonReadyList) {
44     nonReadyList = nonReadyList || []
45
46     browsers.forEach(function (browser) {
47       if (!browser.isReady()) {
48         nonReadyList.push(browser)
49       }
50     })
51
52     return nonReadyList.length === 0
53   }
54
55   this.serialize = function () {
56     return browsers.map(function (browser) {
57       return browser.serialize()
58     })
59   }
60
61   this.getResults = function () {
62     var results = browsers.reduce(function (previous, current) {
63       previous.success += current.lastResult.success
64       previous.failed += current.lastResult.failed
65       previous.error = previous.error || current.lastResult.error
66       previous.disconnected = previous.disconnected || current.lastResult.disconnected
67       return previous
68     }, {success: 0, failed: 0, error: false, disconnected: false, exitCode: 0})
69
70     // compute exit status code
71     results.exitCode = results.failed || results.error || results.disconnected ? 1 : 0
72
73     return results
74   }
75
76   // TODO(vojta): can we remove this? (we clear the results per browser in onBrowserStart)
77   this.clearResults = function () {
78     browsers.forEach(function (browser) {
79       browser.lastResult = new Result()
80     })
81   }
82
83   this.clone = function () {
84     return new Collection(emitter, browsers.slice())
85   }
86
87   // Array APIs
88   this.map = function (callback, context) {
89     return browsers.map(callback, context)
90   }
91
92   this.forEach = function (callback, context) {
93     return browsers.forEach(callback, context)
94   }
95
96   // this.length
97   Object.defineProperty(this, 'length', {
98     get: function () {
99       return browsers.length
100     }
101   })
102 }
103 Collection.$inject = ['emitter']
104
105 module.exports = Collection