
vows = require 'vows'
assert = require 'assert'
chroma = require '../chroma'

vows
    .describe('Some tests for chroma.analyze()')

    .addBatch
        'analyze an array of numbers':
            topic: -> chroma.analyze [1,2,2,3,4,5]
            'sum is 17': (topic) -> assert.equal topic.sum, 17
            'count is 6': (topic) -> assert.equal topic.count, 6
            'maximum is 5': (topic) -> assert.equal topic.max, 5
            'minumum is 1': (topic) -> assert.equal topic.min, 1
            'domain is [1,5]': (topic) -> assert.deepEqual topic.domain, [1,5]

        'analyze an object of numbers':
            topic: -> chroma.analyze {a: 1, b: 2, c: 2, d: 3, e: 4, f: 5}
            'sum is 17': (topic) -> assert.equal topic.sum, 17
            'count is 6': (topic) -> assert.equal topic.count, 6
            'maximum is 5': (topic) -> assert.equal topic.max, 5
            'minumum is 1': (topic) -> assert.equal topic.min, 1
            'domain is [1,5]': (topic) -> assert.deepEqual topic.domain, [1,5]

        'analyze an array of objects':
            topic: -> chroma.analyze [{ k: 1 }, { k: 2 }, { k: 2 }, { k: 3 }, { k: 4 }, { k: 5 }], 'k'
            'sum is 17': (topic) -> assert.equal topic.sum, 17
            'count is 6': (topic) -> assert.equal topic.count, 6
            'maximum is 5': (topic) -> assert.equal topic.max, 5
            'minumum is 1': (topic) -> assert.equal topic.min, 1
            'domain is [1,5]': (topic) -> assert.deepEqual topic.domain, [1,5]

        'analyze an object of objects':
            topic: -> chroma.analyze { a: { k: 1 }, b: { k: 2 }, c: { k: 2 }, d: { k: 3 }, e: { k: 4 }, f: { k: 5 }}, 'k'
            'sum is 17': (topic) -> assert.equal topic.sum, 17
            'count is 6': (topic) -> assert.equal topic.count, 6
            'maximum is 5': (topic) -> assert.equal topic.max, 5
            'minumum is 1': (topic) -> assert.equal topic.min, 1
            'domain is [1,5]': (topic) -> assert.deepEqual topic.domain, [1,5]

    .export(module)